Forum: Programmieren allgemein
by JamesTKirk,
18. Mär 2014
Wie der Rest schon gesagt hat: unter 32 (und 64) Bit gibt es keine Segmente mehr. CS und DS sind fest auf 0 gesetzt, FS wird von Microsoft verwendet, um in FS:0 den Thread Execution Block zu speichern (bei 32 Bit, bei 64 Bit ist das glaub ich GS) und GS ist soweit ich weiß auch 0. Somit erklärt sich das mit absoluten Sprüngen von selbst. ;)
Gruß,
Sven
Forum: Programmieren allgemein
by JamesTKirk,
17. Mär 2014
Absolute Sprünge sind durchaus Gang und Gäbe. Calls von Subroutinen werden zum Beispiel meist mit nem Label gemacht und die sind dann absolut. Oder denke an Prozedurvariablen. Da speicherst du ja den Pointer zu der Prozedur in einer Variable und wenn der Compiler da jetzt die relative Adresse speichern würde, dann wäre die Adresse ja nur für den Punkt der Zuweisung gültig, aber nicht wenn er 2000...