Sprachen: English | 简体中文 | 繁體中文 | 日本語 | 한국어 | Français | Deutsch | Español | Italiano | Русский | العربية
Für Leser, die mit ARM64 nicht vertraut sind, mit Fokus auf vom DynCode-Compiler generierte Befehle. Jeder Befehl enthält Anmerkungen und Vorher/Nachher-Vergleiche.
Allgemeine Register x0-x30 (64-bit) / w0-w30 (32-bit), sp, xzr/wzr, x29 (fp), x30 (lr). Apple ABI reserviert x16-x18. AAPCS64 Aufrufkonvention.
b(unbedingt),bl(mit Link → BRANCH26 Relocation),br/blr(indirekt),ret.- DynCode muss
blvermeiden: Linker füllt 26-Bit-Offset. DynCode hat keinen Linker →blrverwenden.
adr (±1MB), adrp+add (±4GB Seiten). Äquivalent zu x86_64 lea rax, [rip+sym].
mov + movk Sequenzen für 64-Bit-Werte. Data2TextPass-Kern: Konstantendaten als mov/movk auf Stack.
ldr/str, ldp/stp, add/sub/and/orr/eor/lsr/lsl, cmp + bedingte Verzweigungen.
Reine Berechnung, rekursive Fibonacci, String-Stack-Inlining (Data2TextPass), Syscall (SyscallStubPass direkte svc).
| Konzept | x86_64 | ARM64 | DynCode |
|---|---|---|---|
| Funktionsaufruf | call rel32 |
bl imm26 |
Extraktor patcht BRANCH26 |
| Adressladen | lea rax,[rip+sym] |
adrp+add |
PAGE21/PAGEOFF12 gepatcht |
| 64-Bit-Immediate | mov rax,imm64 |
mov+movk ×4 |
Null Relocations |
| Syscall | syscall |
svc #0x80 |
Darwin: x16=nr |