2011-05-05 29 views
7

'da sabit bir sayıyı değiştiriyor X86 GNU Düzenlemede bu makroda neyin yanlış değil? Bağlantı sırasında S sembolünün tanımsız olduğunu söylüyor.Makro GAS

.macro S size=40 
\size 
.endm 

Ben

mov %eax, S 

cevap

16

makrolar gibi kullanıyorum o değil girişine sabit bir sayı sık kullandığınız kod şablonları oluşturmak için kullanılır. Bu nedenle, assembler'ın bir ifade içinde makro açılımı yaptığına inanmıyorum. Sadece bir sayı istediğinizden, bir sabit tanımlamak için .set'u kullanabilirsiniz.

.set S, 40 
mov %eax, S 

Ayrıca, eğer genellikle intel sözdizimini kullanın bu kod ne yaptığını fark emin olun: Şu anda adres 0x28 bellekte eax değerini saklar. Eğer eax'a sayısını 40 koymak istiyorsanız, işlenen tersine çevirmek ve, Cevabınız oldukça yararlı ve kapsamlı S.

mov $S, %eax 
+0

önünde sayesinde dolar işareti kullanmak gerekir! –