Tham khảo
Sách : AT&T Assembly Language, Richard Blum 1. Ngôn ngữ Assembly là gì? Ở mức thấp nhất, Process chỉ hiểu instruction code Instruction Code là các mã nhị phân chứa các thành phần: Instruction prefix, Opcode, ModR/M, SIB, Displacement, Data Element. Người ta hoàn toàn có thể viết chương trình bằng instruction code, nhưng nó sẽ cực kì khó nhọc, bởi ta chỉ thấy không gì khác ngoài các byte nối tiếp nhau. Việc sử dụng các ngôn ngữ bậc cao giúp việc viết chương trình dễ dàng hơn rất nhiều, vì trình biên dịch hoặc thông dịch đảm nhiệm việc chuyển mã ngôn ngữ bậc cao trực tiếp hoặc gián tiếp sang instruction code để chạy. Tuy nhiên, việc sinh instruction code của trình biên dịch/thông dịch không phải luôn luôn hiệu quả. Khi muốn động vào các kết quả được sinh ra từ trình biên dich/thông dịch ở trên, ta không khó có thể sử trực tiếp trên instruction code, một dạng dễ nhớ của các instruction code này được sinh ra để phục vụ việc này. Đó chính là Assembly Language. Vì gần như được chuyển sang instruction code của Processor nên Assemble Code gần như được gắn với Processor nào đó. Dù các lệnh của hầu hết bộ xử lý là tương tự nhau nhưng quy tắc gợi nhớ các mã Assembly dù chỉ khác nhau một chút thôi cũng khiến việc viết code cross-processor gần như là không thể rồi. Ta nói Assembly Language là nói đến 1 ngôn ngữ, nhưng thực chất mỗi Processor có 1 Assembly Language riêng của nó. Bởi vậy, để để lập trình với Assembly cho 1 Processor nào đó, ta cũng cần Assembler tương ứng cho Processor đó. 2. Intel ASM và AT&T ASM và ARM Các bộ xử lý cùng kiến trúc thường ít có thay đổi về Assembly Language, tuy nhiên 2 kiến trúc khác nhau thì thường có Assembly Language khác nhau ARM : Hiện tại chưa tìm hiểu được. Nếu bỏ qua ARM, ta có thể chia ra làm 2 loại Assembly Language sau theo tiêu chí lệnh gợi nhớ, đó là Intel và AT&T.
Về sự khác nhau của 2 loại này:
Hầu hết sự khác biệt xuất hiện ở một dài định dạng cụ thể. Nhưng những điểm khác nhau chính giữa Intel và AT&T được đưa ra dưới đây: AT&T sử dụng $ để kí hiệu, còn Intel thì không.
Vì thế, khi biểu diễn giá trị 4, AT&T sẽ sử dụng $4, còn Intel thì
đơn giản viết 4.
...