AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Programmieren allgemein [asm]JMP bei Delphi-Inline-Assemlber
Thema durchsuchen
Ansicht
Themen-Optionen

[asm]JMP bei Delphi-Inline-Assemlber

Ein Thema von SirThornberry · begonnen am 4. Jul 2006 · letzter Beitrag vom 4. Jul 2006
 
Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.340 Beiträge
 
Delphi 12 Athens
 
#11

Re: [asm]JMP bei Delphi-Inline-Assemlber

  Alt 4. Jul 2006, 13:40
Zitat von Flocke:
Der Opcode für einen direkten unbedingten Sprung ist $E9
nö, dat is der Opcode für einen direkten short jump oder wie dat nochmal hieß.
Also einen sozusagen ein relativer Sprung, von der Stelle aus, wo er steht.

Den Opcode für einen absoluten Sprung hab ich auch gerade nicht im Kopf ... könnte höchstens mal heut abend nachseh ^^


Zitat von SirThornberry:
Desweiteren bin ich davon ausgegangen das "ptr" angibt das es sich um einen Pointer handelt.
im Grunde gibt das PTR (Pointer) ja auch an, daß es sich um einen solchen handelt, aber dieses muß nicht immer angegeben werden, wenn klar ist, worum es sich handelt.

Es ist so ähnlich wie mit Flocke's Code...
Delphi-Quellcode:
mov eax, $11223344
jmp eax
so ginge es ja auch
Delphi-Quellcode:
mov eax, dword $11223344
jmp eax
da [] eh auf 'nen Pointer hinweißt, ist es also nicht nötig ... genauso wie das dword, da im Win32 doch eh alles erstmal als LongInt/LongWord/32-Bit-Pointer angesehn wird.
Delphi-Quellcode:
// das ist also dat "Selbe"
mov eax, dword ptr [$11223344]
mov eax, ptr [$11223344]
mov eax, [$11223344]

// wohingegen das mal was Anderes ist ^^
mov eax, byte ptr [$11223344]
Zitat von SirThornberry:
@Flocke: Bei E9 wird die Differenz angegeben? Das heißt man nimmt keinen "dword" mehr sondern einen Integer? Ist dabei sichergestellt das der Wertebereich des Integers auch groß genug ist?
Na ja, es gibt verschiedene Varianten ... also mit auch solche mitr ShortInt und SmallInt.
Ist praktischer, weil die ja weniger Speicher verbrauchen, man kann damit allerdings nicht so weit springen ... was aber och klar sein sollte ^^


Zitat von SirThornberry:
Ich bin in asm nicht so bewandert. Delphi hat immer rumgemeckert wenn ich die "[]" vergessen hab.
Wie gesagt ... syntaktisch würde es stimmen, aber wie Nico schon sagte will der Delphi-ASM sowas nicht.
Also ich kann höchstens dann nochmal nachgucken was der richtig Opcode hierfür wäre oder du nimmst den indirekten Weg


Aber was ich mich bisher immer grfragt hab ... woher will eigentlich Windows wissen was ein Pointer ist und ob der eventuell gefixt werden muß?
Weil oftmals ist es ja nicht gerade eindeutig, was einer ist, oder ob der schon gefixt wurde.

z.B.
JMP EAX Windows kann doch shcließlich nicht wissen was das für ein Wert in EAX ist
Ein Therapeut entspricht 1024 Gigapeut.
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:46 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz