Đề xuất của tôi là hành động với nhà sản xuất lắp ráp tốt nhất hiện có: gcc.
Viết các chương trình đơn giản trong C và sau đó biên dịch chúng bằng nút chuyển -S. bạn sẽ nhận được một file.s chứa mã assembly. Tinker với nó và bạn sẽ học nó. Phần tốt nhất là nếu bạn muốn tìm hiểu một bộ lắp ráp khác nhau, bạn chỉ có thể biên dịch gcc làm trình biên dịch chéo và tạo ra bộ lắp ráp cho bất kỳ nền tảng được hỗ trợ nào.
Hãy nhớ tắt tối ưu hóa bằng -O0, nếu không bạn có thể tìm thấy các thủ thuật lạ.
Đây là hello world trong lắp ráp
.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
Nguồn
2009-07-20 17:55:01
Điều đó nghe có vẻ hữu ích. Làm cách nào để chuyển tệp .s thành nhị phân? –
với gcc hello.s :) –
Does-giữ thông tin gỡ lỗi (tên biến, v.v ...)? –