Forum: Programmieren allgemein
by Christian Seehase,
19. Apr 2004
Moin d3g,
Dennoch ist jedes Betriebssystem für die Adressbildung auf die Möglichkeiten der zugrunde liegenden CPU angewiesen.
Forum: Programmieren allgemein
by Christian Seehase,
19. Apr 2004
Moin d3g,
Das erzähl mal Intel ;-)
Nur sind in den Opcodes der Befehle die Segmentregister automatisch mit enthalten. Du kommst nicht drum herum.
Forum: Programmieren allgemein
by Christian Seehase,
18. Apr 2004
Moin d3g,
könnte man. ;-)
In Windows laufen ja mehrere Prozesse "gleichzeitig".
Damit die beim Laden aufgelösten Adressen nicht immer neu berechnet werden müssen, wenn auf einen anderen Thread umgeschaltet wird, macht es Sinn einen definierten Nullpunkt zu haben, relativ zu dem dann adressiert werden kann.
Beispiel:
Forum: Programmieren allgemein
by Christian Seehase,
17. Apr 2004
Moin d3g,
es ist zwar richtig, dass man mit einem 32 Bit grossen Register 4GB Adressen erreichen kann, dennoch ist in den Opcodes der Befehle auch ein Segmentregister (CS, DS, ES, FS, GS, SS) mit kodiert, dessen Inhalt mit zur Adressbildung herangezogen wird.
Beispiel:
EBP = 48
DS = 100
FS = 200
Dann würde man bei
Forum: Programmieren allgemein
by Christian Seehase,
17. Apr 2004
Moin Shareholder,
da die von Dir angegebenen Ausdrücke kaum alleine stehen, gehe ich mal davon aus, dass es, z.B.,
mov EAX,DWORD PTR
heisst.
Das würde bedeuten, dass die zweite lokale Variable nach EAX geladen wird.
Entweder der Wert selber (wenn es sich z.B. um eine Variable vom Typ integer handelt), oder aber deren Adresse (wenn es z.B. ein Objekt ist), wird aus der Adresse...