2011-05-05 14 views
7

में निरंतर संख्या को प्रतिस्थापित करना X86 जीएनयू असेंबली पर उस मैक्रो के साथ क्या गलत नहीं है? यह कहता है कि प्रतीक एस लिंकिंग के दौरान अपरिभाषित है।मैक्रो जीएएस

.macro S size=40 
\size 
.endm 

मैं

mov %eax, S 

उत्तर

16

मैक्रो है जैसे कि यह उपयोग कर रहा हूँ कोड आप अक्सर उपयोग के लिए खाका बनाने, नहीं इनपुट करने के लिए कोई स्थिर संख्या किया जाता है। इस प्रकार, मुझे विश्वास नहीं है कि असेंबलर अभिव्यक्ति के भीतर मैक्रो विस्तार करता है। चूंकि आप बस एक संख्या चाहते हैं, तो आप निरंतर परिभाषित करने के लिए .set का उपयोग कर सकते हैं।

.set S, 40 
mov %eax, S 

इसके अलावा, मामले में आप आमतौर पर इंटेल वाक्य रचना, का उपयोग सुनिश्चित करें कि आप का एहसास है कि इस कोड क्या कर रहा है बनाने: यह वर्तमान में पता 0x28 पर स्मृति में eax के मान संग्रहीत करता है। आप eax में 40 नंबर रखना चाहते हैं, तो आप ऑपरेंड रिवर्स और धन्यवाद एस

mov $S, %eax 
+0

के सामने एक डॉलर चिह्न का उपयोग आपका जवाब बहुत उपयोगी और व्यापक है, के लिए की जरूरत है! –