Bir .asm modülüm var ve yordamlarını .c modülünde kullanmak istiyorum. Ben şuna benzeyecektir MASM benim kodunu kullanarak bu yana:Değişkenleri burk yordamına geçirme
SECTION .text
func PROC arg1: DWORD, arg2:DWORD
...
ret
ENDPROC
ve .c modülünde:
extern "C"{
void func (int arg1, int arg2);
}
Şimdi ubuntu kullanmak ve NASM denemeye karar verdi. Bu yüzden şu sorularım var: Yalnızca bir etiket olduğu için argümanları nasm'deki bir prosedüre nasıl aktarabilirim? NASM kodumda .c modülünde extern "C" altında açıklanan değişkenleri nasıl kullanabilirim?
Ayrıca, argümanların yığın kullanarak bir prosedüre geçilmesi hakkında bir sözleşme olduğunu da duydum. Bir şekilde kullanabilir miyim? Bana biraz örnek verir misiniz?
Her şey değişir. Ubuntu'da 64 bit kod veya 32 bit kod yazmak istiyor musunuz? Arama kuralı, oluşturmak istediğiniz koda bağlı olarak farklılık gösterir. _NASM_ ile _MASM_'ın PROC deyimi aracılığıyla ayrıntıların çoğunu gizlediği gibi arama kurallarını anlamalısınız. –
X86 ve x86-64'te ABC işlev çağrısı ABB'yi açıklayan bir yanıt yazacaktım, ancak daha sonra "C" etiketli bir gönderide "C" {...} 'yi gördüm. Yuk. Bu tür yanlış anlamalar ile başlayanlar bence, yardımcı olmak için çok yol vardır. –