Offset was ist das???



  • hi ...
    die Längenangabe wird als Offset bezeichnet. Mit dem Offset
    kann der Computer die Variablen und Maschinenbefehle adressieren
    und lesen. Offset zeigt an wie weit die Variablen und Befehle
    von Ihrem Ursprung enfernt sind.
    So habe ich das aus einem Tutorial entnommen ist natürlich sehr allgemein
    und theoretisch gehalten. Kann damit nicht viel anfangen. Warum gibt es überhaupt Offset und warum müssen Variablen von Ihrem Ursprung entfernt sein?
    Was kann ich mit Offset bewerkstelligen????

    Tschüss



  • Ein Offset ist eine Adresse eines kleinen Dinges innerhalb eines großen Dinges.

    Wenn man z.B. ein Array aus Byte-Variablen hat, dann hat der eintrag array[37] den Offset 37 Bytes, da er 37 Bytes vom Beginn des Arrays entfernt ist. Außerdem können z.B. Variablen innerhlab von Strukturen (structs, records) Offset haben. Und natürlich kann man auch Adressen innerhalb des Speichers als Offset bezeichnen.



  • Hi!
    Klar aber ich verstehe die Dinge dadruch oben bei meiner Frage trotzdem nicht besser

    Danke



  • Okay, zweiter Anlauf 🙂

    Tauboga schrieb:

    Offset zeigt an wie weit die Variablen und Befehle
    von Ihrem Ursprung enfernt sind.

    Das ist nur eine Möglichkeit. Offsets zeigen wie gesagt an, wo etwas inenrhalb eines Blocks liegt. Bei Befehlen kann man das z.B. so sehen. Wenn man einen relativen JMP macht, dann gibt man ja eine Position an wie "5 bytes weiter" (was natürlcih meist der Assemblr aus den Labels zieht), das ist danne in Offset, indem man sagt das wo ich hin will liegt 5 Bytes von hier aus.

    Warum gibt es überhaupt Offset

    Offsets sind halt eine Bezeichnung. Man kann es auch Adresse nennen oder Position. Abstand geht auch.

    und warum müssen Variablen von Ihrem Ursprung entfernt sein?

    Variablen können z.B. in Arrays vom Arrayursprung entfernt sein. Oder Variablen in einem Struct. Oder aber Lokale Varibalen die Auf dem Stack liegen. Dort markiert man ja z.B. mit EBP den Stackrahmen, alle lokalen Variablen die auf dem Stack liegen haben einen Abstand von EBP, der natürlich von Variable zu Variable unterschiedlich ist. Das ist dann der Offset.

    Was kann ich mit Offset bewerkstelligen????

    Nun, mit Offsets macht man so gut wie alles. Schau dir deinen Code an und jedesmal wenn du eine Speicheradresse benutzt, benutzt du einen Offset. Wenn du unetr DOS programmierst dann ist die Adresse innerhalb eines Segments auch ein Offset. Alles bezeichnungssache.



  • Ich würde das beim array allerdings als Index bezeichnen und nicht als Offset.



  • Niklas Cathor schrieb:

    Ich würde das beim array allerdings als Index bezeichnen und nicht als Offset.

    Klar, aber solange die Frage ist "Was sind Offsets" ist auch das ein Offset 🙂



  • natürlich... 😉


Anmelden zum Antworten