2009-07-20 35 views
16

Tôi muốn chơi bằng cách viết một số assembly trên máy Mac của tôi, lý tưởng là bản địa, nhưng tôi sẽ hiểu nếu nó dễ học trong QEMU hay gì đó.Làm thế nào để tôi bắt đầu học Assembly

Tôi thấy rằng có các phương ngữ khác nhau của hội đồng tùy thuộc vào bộ xử lý - phương ngữ nào là "tốt nhất" để tìm hiểu?

Tôi không thực sự có bất kỳ ý tưởng về nơi để bắt đầu, bất kỳ con trỏ nào về cách thậm chí chạy một chương trình trong assembly?

Trả lời

1

Vâng, mặc dù nó không phải là những gì một số người gọi là "tốt nhất" lắp ráp ra khỏi đó, tôi khuyên bạn nên học X86/X86-64 vì nó được sử dụng rộng rãi nhất. Để chạy chương trình, bạn có thể chỉ cần sử dụng GCC để dịch nó thành nhị phân và sau đó chạy nó thông qua giao diện điều khiển của bạn.

14

Đề 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 
+0

Điều đó nghe có vẻ hữu ích. Làm cách nào để chuyển tệp .s thành nhị phân? –

+1

với gcc hello.s :) –

+0

Does-giữ thông tin gỡ lỗi (tên biến, v.v ...)? –

0

Tôi đã học MIPS và được kiểm tra trong SPIM cho một lớp học về "tổ chức máy tính".

Không chắc chắn nếu this book sẽ hoạt động nhưng có thể đáng để chụp. Chúng tôi đã sử dụng một "cuốn sách" (giống như một hướng dẫn, và một bài hát thực sự) được viết bởi các giáo sư, vì vậy nó không có sẵn.

0

Hãy tham gia với các cộng đồng phát triển mạnh trong mã lắp ráp. Điều đầu tiên xuất hiện trong tâm trí là sự hủy diệt. Đối với một, hãy xem productions released for x86 Macs on pouet.net. Hãy thử liên lạc với một số lập trình viên trong các nhóm đang hoạt động. Một số người trong số họ có thể sẵn sàng chia sẻ ý tưởng và mã và thậm chí có thể giúp bạn có động cơ để viết của riêng bạn.

Đây là cách tôi bắt đầu lại vào ban ngày, nhưng trên Atari 8 bit.

Các vấn đề liên quan