19-12-2020, Saat: 22:57
Merhaba,
Assembly ile şöyle bir fonksiyon yazıyorum:
x64 ABI'ye göre fonksiyon ve prosedure'larda parametreler sırasıyla rcx,rdx,r8 ve r9 registerlerine aktarılır. Buna göre str parametresi rdx registerinde olmak durumunda. Ancak str'nin değerinde hiçbir değişme olmuıyor.
Bununla birlikte kod bölümünü şu şekilde değiştirince hata almıyorum ve str 'zz' oluyor:
Gördüğünüz gibi rdx'değeri rax'e aldığımda rax üzerinden değişikliği yaptım. Peki neden rdx üzerinden doğrudan değişiklik yapamıyorum?
Assembly ile şöyle bir fonksiyon yazıyorum:
Kod: (Select All)
function test(numero:word;var str:pansichar):pansichar;
asm
mov [rdx], 'zz'
end;x64 ABI'ye göre fonksiyon ve prosedure'larda parametreler sırasıyla rcx,rdx,r8 ve r9 registerlerine aktarılır. Buna göre str parametresi rdx registerinde olmak durumunda. Ancak str'nin değerinde hiçbir değişme olmuıyor.
Bununla birlikte kod bölümünü şu şekilde değiştirince hata almıyorum ve str 'zz' oluyor:
Kod: (Select All)
mov rax, [rdx]
mov [rax], 'zz'Gördüğünüz gibi rdx'değeri rax'e aldığımda rax üzerinden değişikliği yaptım. Peki neden rdx üzerinden doğrudan değişiklik yapamıyorum?

