Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

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

Re: Delphi Inline Assembler, größere Register

  Alt 4. Dez 2007, 21:21
Einiges kann man auch noch mit den MMX-Registern anfangen, welche jeweils 64-Bit klein sind
(unterstützt ja nahezu jede aktuelle CPU)

hier noch einiges zu Registern:
Code:
Register welche nicht verändert werden dürfen (z.B. per PUSH/POP sichern):
ESP EBP EDI ESI EBX

Register:
 8-Bit:  AL(EAX), AH(EAX), BL(EBX), BH(EBX), CL(ECX), CH(ECX), DL(EDX), DH(EDX)
16-Bit:  AX(EAX), BX(EBX), CX(ECX), DX(EDX), SI(ESI), DI(EDI), BP(EBP), IP(EIP), SP(ESP)
32-Bit:  EAX, EBX, ECX, EDX, ESI, EDI, EBP, EIP, ESP
80-Bit:  ST[0], ST[1], ST[2], ST[3], ST[4], ST[5], ST[6], ST[7]
64-Bit:  MM0, MM1, MM2, MM3, MM4, MM5, MM6, MM7  // MMX-Register
weiterte: XMM0, XMM1, XMM2, XMM3, XMM4, XMM5, XMM6, XMM7, CR0, CR2, CR3, CR4, DR0, DR1, DR2, DR3, DR6, DR7

Parameterübergabe:
EAX EDX ECX PUSH(EBP + x) ... PUSH(EBP + 8) PUSH(EBP + 4) // Parameter1, Parameter2 ...
EAX PUSH(EBP + 4, EBP + 8) EDX                            // 64-Bit Werte werden immer gepuscht z.B. Parameter 1, 2, 3
ja und Result liegt bei Delphi (mindestens) in EAX
Neuste Erkenntnis:
Seit Pos einen dritten Parameter hat,
wird PoSex im Delphi viel seltener praktiziert.
  Mit Zitat antworten Zitat