- 深度探索Go語言:對象模型與runtime的原理特性及應用
- 封幼林編著
- 452字
- 2023-08-10 16:55:34
1.2.1 整數加減指令
x86匯編使用ADD指令進行整數的加法運算,該指令有兩個操作數,第1個操作數也叫作目的操作數,第2個操作數也叫作源操作數。ADD指令把兩個操作數的值相加,然后把結果存放到目的操作數中。源操作數可以是寄存器、內存或立即數,而目的操作數需要滿足可寫的條件,所以只能是寄存器或內存,而且兩個操作數不能同時為內存。
如下指令將EAX寄存器的值加上16,并把結果存回EAX中,指令如下:

整數減法運算通過SUB指令來完成,對操作數的要求和ADD指令一致,不過是從目的操作數中減去源操作數,并把結果存回目的操作數中。
如下指令將ESP寄存器的值減去32,并把結果存回ESP中,就像高級語言中分配函數棧幀時所做的那樣,指令如下:

包括ADD和SUB在內的很多匯編指令能夠接受不同大小的參數,例如通過兩個8位寄存器進行int8加法,指令如下:

通過兩個16位寄存器進行int16加法,指令如下:

x86是一個復雜指令集架構,很多指令像這樣支持多種操作數組合,雖然代碼中使用同一個opcode名稱,但是實際編譯后對應的是不同的opcode。上層語言中的數據類型會指導編譯器,在編譯階段選擇合適的opcode和對應的operand。
推薦閱讀
- Python程序設計教程(第2版)
- Learning Java Functional Programming
- Java程序設計實戰教程
- Spring技術內幕:深入解析Spring架構與設計
- Architecting the Industrial Internet
- YARN Essentials
- Getting Started with SQL Server 2012 Cube Development
- Java性能權威指南(第2版)
- Spring實戰(第5版)
- JSP開發案例教程
- Java 9模塊化開發:核心原則與實踐
- Java Web程序設計任務教程
- H5頁面設計:Mugeda版(微課版)
- Asynchronous Android Programming(Second Edition)
- Web Development with MongoDB and Node(Third Edition)