Tôi đã cố gắng làm quen với việc lắp ráp trên máy Mac, và từ những gì tôi có thể nói, tài liệu thực sự thưa thớt, và hầu hết các cuốn sách về chủ đề này là dành cho windows hoặc linux. Tôi nghĩ rằng tôi sẽ có thể dịch từ Linux để mac khá dễ dàng, tuy nhiên điều này (linux)Sự khác biệt giữa lắp ráp trên mac và lắp ráp trên linux là gì?
.file "simple.c"
.text
.globl simple
.type simple, @function
simple:
pushl %ebp
movl %esp, %ebp
movl 8(%ebp), %edx
movl 12(%ebp), %eax
addl (%edx), %eax
movl %eax, (%edx)
popl %ebp
ret
.size simple, .-simple
.ident "GCC: (Ubuntu 4.3.2-1ubuntu11) 4.3.2"
.section .note.GNU-stack,"",@progbits
có vẻ khá khác nhau từ này (mac)
.section __TEXT,__text,regular,pure_instructions
.globl _simple
.align 4, 0x90
_simple: ## @simple
.cfi_startproc
## BB#0:
pushq %rbp
Ltmp2:
.cfi_def_cfa_offset 16
Ltmp3:
.cfi_offset %rbp, -16
movq %rsp, %rbp
Ltmp4:
.cfi_def_cfa_register %rbp
addl (%rdi), %esi
movl %esi, (%rdi)
movl %esi, %eax
popq %rbp
ret
.cfi_endproc
.subsections_via_symbols
Các "bình thường" (vì thiếu một từ tốt hơn) hướng dẫn và đăng ký như pushq %rbp
đừng lo lắng cho tôi. Nhưng những thứ "kỳ lạ" như .cfi_startproc
và Ltmp2:
là những hình ảnh nhỏ gọn ở giữa các hướng dẫn của máy không có ý nghĩa gì.
Tôi không biết phải đi đâu để tìm hiểu xem chúng là gì và ý nghĩa của chúng. Tôi chuẩn bị kéo tóc ra vì tôi đã cố gắng tìm một nguồn tài nguyên tốt cho người mới bắt đầu trong nhiều tháng. Bất kỳ đề xuất?
Định dạng và ý nghĩa của chỉ thị sẽ phụ thuộc vào hương vị cụ thể của bộ lắp ráp bạn đang sử dụng. Giao diện với hệ điều hành sẽ có hương vị tương tự. –
@MikeW Bạn có ý nghĩa gì với "hương vị"? Tôi có thể tìm thêm thông tin về điều này ở đâu? Tôi đang sử dụng GCC vì vậy tôi giả sử nó là người lắp ráp GNU. –
Sự khác biệt chủ yếu là cụ thể đối với định dạng thực thi đích hoặc là thông tin biểu tượng gỡ lỗi. – zneak