__based(__segname ("_CODE")) ???



  • Hallo Leute,

    bin heute bei der Bearbeitung eines Projekts auf folgende Konstrukt gestoßen

    static MY_STRUCT_TYP __based(__segname ("_CODE")) temp;
    

    Kann mir jemand sagen was " __based(__segname ("_CODE")) " heißt?
    Hab bisher nur folgende Seite gestoßen, aber aus ihr werde ich nicht viel schlauer...

    http://www.ousob.com/ng/wcppug/ng7578a.php

    Kann mir jemand helfen?

    Grüße
    Mischa



  • BikingGlobetrotter schrieb:

    Kann mir jemand sagen was " __based(__segname ("_CODE")) " heißt?
    Hab bisher nur folgende Seite gestoßen, aber aus ihr werde ich nicht viel schlauer...
    http://www.ousob.com/ng/wcppug/ng7578a.php

    steht doch alles da^^
    hintergrund: ein linker verteilt das programm auf verschiedene 'segmente', z.b. CODE (ausführbahrer maschinencode) CONST (konstanten, also nicht beschreibbare 'variablen') DATA (RAM-variablen, die geschrieben und gelesen werden können) und einiges mehr. mit diesem __based(_segname... kannst du darauf einfluss nehmen, wo der linker was hintun soll (z.b. konstanten ins code-segment, usw).
    🙂



  • Okay, dass klingt logisch. Danke.
    Aber kannst du mir sagen, wofür das gut ist? bzw. was das für Konsequenzen auf den Programmcode hat?



  • BikingGlobetrotter schrieb:

    Aber kannst du mir sagen, wofür das gut ist?

    also, verschiedene segmente haben verschiedene eigenschaften. da gibts welche, die sind beschreibbar, andere read-only, oder vielleicht nichtflüchtig/batteriegepuffert oder in einem separaten speicherchip, oder können von mehreren cpus simultan genutzt werden, usw. usw. mit diesem __based(dingsda... kannst du gezielt festlegen, in welches segment ein objekt rein soll. __based ist ist übrigens eine nichtstandardisierte erweiterung. andere compiler können fast alle irgendwie sowas ähnliches, aber das sieht da anders aus. oft sinds #pragmas oder sowas.
    🙂



  • Cool danke... Jetzt hab ichs verstanden ... 🙂


Anmelden zum Antworten