मेरा सुझाव है कि वहां सबसे अच्छा असेंबलर निर्माता के साथ कार्य करें: जीसीसी।
सी में सरल प्रोग्राम लिखें और फिर उन्हें -एस स्विच के साथ संकलित करें। आपको एक फाइल.s मिलेगा जिसमें असेंबलर कोड होगा। इसके साथ टिंकर और आप इसे सीखेंगे। सबसे अच्छा हिस्सा यह है कि यदि आप एक अलग असेंबलर सीखना चाहते हैं, तो आप क्रॉस कंपाइलर के रूप में जीसीसी को संकलित कर सकते हैं, और किसी भी समर्थित प्लेटफॉर्म के लिए असेंबलर का उत्पादन कर सकते हैं।
-O0 के साथ अनुकूलन अक्षम करना याद रखें, अन्यथा आपको अजीब चाल मिल सकती हैं।
यह हैलो कोडांतरक
.cstring
LC0:
.ascii "hello world!\0"
.text
.globl _main
_main:
pushl %ebp
movl %esp, %ebp
pushl %ebx
subl $20, %esp
call L3
"L00000000001$pb":
L3:
popl %ebx
leal LC0-"L00000000001$pb"(%ebx), %eax
movl %eax, (%esp)
call L_puts$stub
movl $0, %eax
addl $20, %esp
popl %ebx
leave
ret
.section __IMPORT,__jump_table,symbol_stubs,self_modifying_code+pure_instructions,5
L_puts$stub:
.indirect_symbol _puts
hlt ; hlt ; hlt ; hlt ; hlt
.subsections_via_symbols
स्रोत
2009-07-20 17:55:01
यह ऐसा करने का एक उपयोगी तरीका लगता है। मैं .s फ़ाइल को बाइनरी में कैसे बदलूं? Gcc hello.s के साथ –
:) –
क्या डीबगिंग सूचनाएं (परिवर्तनीय नाम इत्यादि) रखती है? –