Ich versuche, einige der Argumente zu ändern, die an meine Assembly-Funktion in C-Programm übergeben. Ich habe es schon in x86 Assembly versucht, aber in x64 scheint es nicht mehr zu funktionieren.Intel x64 Assembly-Funktion aus C-Programm aufgerufen, wie Argumente mit Verweis übergeben
section .text
global f
f:
push rbp
mov rbp, rsp
;[rbp+8] bitmap beginning address (unsigned*) ?
;[rbp+12] bitmap width (int*) ?
;[rbp+16] bitmap height (int*) ?
;[rbp+20] current X pos (double*) ?
;[rbp+24] current Y pos (double*) ?
mov rax, [rbp+12]
mov rcx, [rax]
inc rcx
mov [rax], rcx
mov rsp, rbp
pop rbp
ret
x86_64 Parameter unterschiedliche Aufrufkonventionen als x86 – technosaurus
x86-64 verwendet Register (und wenn nötig den Stapel) passieren hat. Sehen Sie müssen sich die [64-Bit-System-ABI] (http://www.x86-64.org/documentation/abi.pdf) für die Aufrufkonvention ansehen. –
Nun, diese Offsets sehen nicht sehr '64-Bit 'zu mir :( –