Asm Snippet Erklärung Offsetsberechnung



  • Hallo

    ich habe folgender Ausschnitt gesehen, welcher ich nicht 100 pro verstehe:

    [...]
    progstart:
    	nop
    	nop
    
    START:
    	call rel
    rel:
    	pop ebp
    	cld
    	mov eax, ebp
    	db 2dh	; sub eax, SaveEntry dd (offset rel - offset progstart)
    	push eax
    	sub ebp, offset rel
    	[...]
    

    Ich verstehe vorallem der Punkt "db 2dh ; sub eax, SaveEntry..." nicht ganz.
    So wie es aussieht speichert er damit im eax-Register die Adresse vom label "START". Und, weiter unten bei "sub ebp, offset rel", wird die Adresse von progstart gespeichert. Meine Frage ist ob ich nun mich voll verrechnet habe oder ob das stimmen kann?

    Wenn ich es versuche zu kontrollieren, kann es weiderum nicht stimmen, siehe hier (ausser ich hab mich total "verrechnet"):

    Nehmen wir an:
    progstart: 10 (dezimal, adresse)
    START: 20 (dez, addr)
    rel: 40 (dez, addr)

    Dann wäre es: eax = rel - progstart = 40 - 10 = 30 (Adresse)

    Ich hab da keinen Plan, wie ihr sieht, scheine ich was zu verwechseln. kann mir das wer vorrechnen, erklären? Ich will nur meine Dunkelheit erhellen 🙂 thx

    Vielen Dank

    TollTroll


Anmelden zum Antworten