第三章《程序的机器级表示》(二)

2018-11-11  本文已影响0人  ShawnIsACoder

操作数

大多数指令至少会有一个操作数,指出执行一个操作中要使用的数据源值以及放置结果的位置,各种不同的操作数的可能性分为3种:

加载有效地址

leaq实际上是movq指令的变形,它的指令形式是从内存读取数据到寄存器,但是实际上它根本没有引用内存。它的第一个操作数看上去是一个内存引用,但是该指令并不是从指定的位置读取数据,而是将有效地址写入到目的操作数

leaq指令能够执行加法和有限形式的乘法

一元操作

image.png

一元操作只有一个操作数,既是又是目的,这个操作数可以是一个寄存器也可以是一个内存地址

二元操作

image.png

二元操作的第二个操作符,既是又是目的,其中第一个操作数可以是立即数寄存器或是内存位置,第二个操作数可以是寄存器或是内存地址

移位操作

image.png

第一项是移位量,第二项是要移位的数,两个左移指令SALSHA的效果都是一样的,将右边填上0。右移指令不同,分为SHR逻辑移位(填上0)和SAR算数移位(填上符号位

条件码

CPU维护了一组单个位的条件码寄存器,用于描述最近的算术或逻辑操作的属性,常用的条件码如下:

上一篇 下一篇

猜你喜欢

热点阅读