Konuyu Oyla:
  • Derecelendirme: 0/5 - 0 oy
  • 1
  • 2
  • 3
  • 4
  • 5
Delphi assembly x64 parametreleri
#1
Merhaba,

Assembly ile şöyle bir fonksiyon yazıyorum:

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:

    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?
Cevapla
#2
Uzunca bir düşünmeden sonra sorunu buldum. Normalde assembly'de mov komutunun operandları memory olabiliyor; ilki memory ve ikincisi immediate de olabiliyor. Ancak delphi'de özel bir durum var. Ram'deki değişkenleri doğrudan mov ile değiştiremiyoruz. Veri aktarımını registerler üzerinden yapmak durumundayız.
Cevapla


Konu ile Alakalı Benzer Konular
Konular Yazar Yorumlar Okunma Son Yorum
  yapay zeka delphi kl007 9 680 26-02-2026, Saat: 09:12
Son Yorum: mrmarman
  Win 11 ve Delphi 7 Minimize sorunu. enigma 7 554 11-02-2026, Saat: 10:27
Son Yorum: RAD Coder
Question Delphi formunu nasıl otomatik tam ekran yapabilirim ? erdemklt0 2 378 23-01-2026, Saat: 10:02
Son Yorum: csunguray
  Delphi SLL kullanım sorunu Bay_Y 12 1.331 22-12-2025, Saat: 18:11
Son Yorum: Bay_Y
  Delphi ile SQL server bağlantı hatası yakalama Under 20 2.034 21-11-2025, Saat: 15:24
Son Yorum: mrmarman



Konuyu Okuyanlar: 1 Ziyaretçi