C++ Speciheraddresse einer Variable an anderer mit asm extrahieren
-
puhh was besseres ist mir für den titel nicht eingafallen^^.
So nu meine problem. Ich wöllte gern (weil ich total fertig bin
) eine eigenschaft der System::String klasse nachahmen, und zwar das diese immer ohne vorhergehende initialisierung, einfach durch text (ob const oder per var.) zuweisung initialisiert wird. kann mir auch denken was der compiler da im code hinterlässt das das auch wärend der laufzeit möglich ist. da es sich um ein schlüsselwort handel und meine eigenen klassen das schwer werden können, muss ich irgendwie wärend der laufzeit erfahren an welscher speicherstelle diese variable liegt. Ich weis ich könnte das einfach mit einem pointer übergeben lassen, aber dann wäre ich ja normal und nicht so kapputt wie ich nun mal bin. soll heissen ich gehe in eine uninitialisierte klasse über eine variable die auch nicht initialisierzt ist nun soll die klasse selbst diese varible initialisieren, und ich will aber die addresse nicht als pointer überliefern. Ihr merkt schon so kapputt wie ich ist glaub kaum einer. ich weis mit asm ist das an sich kein thema die addresse zu holen nur habe ich keine idee wie ich überhaupt die variable im speicher erstmal finden soll. lasst die köpfe rauchen leute^^. beiu mir ist smog dennoch kein ergebniss
jede noch so abgedrehte idee könnte mir weiter helfen also keine hämmungen
Danke euch schonmal
Edit: achja das gehört hier her denke ich weil im c++ forum haben sie gesagt "geht nicht" ich sag da mal "geht nicht gibts nicht"^^
-
wtf? es gibt in C++ kein System::String. ist das irgendein .net geraffel oder so?
oelsni schrieb:
das diese immer ohne vorhergehende initialisierung, einfach durch text (ob const oder per var.) zuweisung initialisiert wird.
std::string str = "text";
kann mir auch denken was der compiler da im code hinterlässt das das auch wärend der laufzeit möglich ist.
hä?
da es sich um ein schlüsselwort handel und meine eigenen klassen das schwer werden können, muss ich irgendwie wärend der laufzeit erfahren an welscher speicherstelle diese variable liegt.
const std::string* adresse = &str; // oder const char* adresse = "text";
ein pointer auf eine variable entspricht der addresse der variablen.
wenn du die adresse ausgeben willst:
unsigned int addr = reinterpret_cast<unsigned int>("text"); //addr enthält nun die addresse der konstanten "text" (windows, visual c++).
soll heissen ich gehe in eine uninitialisierte klasse über eine variable die auch nicht initialisierzt ist nun soll die klasse selbst diese varible initialisieren, und ich will aber die addresse nicht als pointer überliefern.
hä? ich verstehe nur bahnhof.
ich weis mit asm ist das an sich kein thema die addresse zu holen nur habe ich keine idee wie ich überhaupt die variable im speicher erstmal finden soll.
ich verstehe den bezug zu asm nicht.
__asm mov eax, text // eax enthält die adresse von text
Edit: achja das gehört hier her denke ich weil im c++ forum haben sie gesagt "geht nicht" ich sag da mal "geht nicht gibts nicht"^^
ich glaube eher, dass kein mensch versteht was du überhaupt willst.
kannst du das problem vielleicht anhand eines beispiels zeigen?
-
habe das unglücklich formuliert kam doch etwas fa lsch an
. aber hatte letzte nacht ehh ne geile idee (will ne klasse bauen die sich initialisieren lässt wie System::String, soll heissen dafür brauch man kein gcnew und das geht auch wärend der laufzeit ohne weiteres/ und ja sry .Net nicht C++). aber habe glaube mein problem schon gelöst trotzdem danke für die antwort
Edit:
//GLOBAL oder irgendwo anders System::String ^str; //ganz wo anders im prog und erst wärend der laufzeit nicht wärend der Compilierung if (/*was weis ich*/) // durch if bzw raumliche trennung kann compiler nicht einfach str star initialisieren str += textvariable; //hier initialisiert sich system::string selber
und dieses verhalten will ich nachbilden
aber wie gesagt arbeite da schon an einer idee also hat sich erledigt vorerst danke dennoch