Offset
aus RHWiki, der freien Romhacking-Enzyklopädie
Was ist ein Offset ?
Ein Offset ist einfach eine Adressangabe (Positionsangabe) in einer Datei (Rom) oder im Speicher. Dabei sind alle Bytes in einer Datei der Reihe nach durchnummeriert, wobei die Zählung in der Regel bei 0 beginnt: Das erste Byte hat das Offset 0, das zweite 1 usw. (Anmerkung: einige benutzerfreundliche Programmiersprachen - z.B. Visual Basic - beginnen die Zählung mit 1.)
Beispiel: Eine Datei enthalte die Daten "2E9043E6...D5E2..." Offset Inhalt ---------------- 00 2E 01 90 02 43 03 E6 ... ... 7F42 D5 7F43 E2 ... ...
Mit einem Offset lässt sich also jeder beliebige Ort in einer Datei beschreiben. An der verwiesenen Speicherstelle kann sich dabei jede Art von Daten befinden.
Offsets sind für das RH sehr wichtig, da man ohne sie überhaupt nicht weitergeben könnte, wo sich welche Daten befinden.
In Roms finden Offsets in Form von Pointern Verwendung, die teilweise im ASM-Code oder in Headern auftreten und Aufenthaltsorte von größeren Datenmengen beschreiben, die an Stelle des Offsets keinen Platz finden würden.
Darstellung
Offsets können in hexadezimal und dezimal dargestellt werden. Zur Unterscheidung der beiden werden bei der hexadezimalen Schreibweise Änderungen vorgenommen. Der größte Unterschied ist natürlich, die Darstellung in hex oder dez.
Aber z.B. das Offset 12345 könnte beides sein. Für diese Eventualitäten hängt man an hexadezimale Offsetangaben entweder ein "h" an, was es zu 12345h machen würde, oder man stellt ein "0x" davor, was es zu 0x12345 macht. Dezimale Offsets sind manchmal durch ein „(dez)” oder ein „(d)” gekennzeichnet - jedoch nie nur durch ein nachgestelltes „d”, sonst könnte man 12345d auch mit der hexadezimalen Adresse verwechseln.

