__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.phpsteht 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 ...