1.执行过程
1. 取指令
1. PC中保存将要执行的指令地址,取指令是将PC指向内容送入IR(指令寄存器)中。
2. 对IR中指令操作码进行译码
1. CPU 应该根据不同的指令操作码译出不同的控制信号。例如, 对取到 IR 中的5589E583H 进行译码时, 可根据对最高 5 位 (01010) 的译码结果得到 push 指令的控制信号。
3. 源操作数地址计算并取操作数
4. 执行数据操作
5. 目的操作数地址技术并存结果
6. 指令地址计算并送PC
7. 示例:
1.
2. 读取.text节中main函数过程如下:
1. 指令按顺序存放在地址 $0 x 08048380$ 开始的存储空间中, 每条指令的长度可能不同,如 push、leave 和 ret 指令各占一个字节,第 3 行的 mov 指令占两个字节,第 4 行 and 指令占三个字节, 第 5 行和第 6 行指令都占 5 个字节。
2. 每条指令对应的 $0 / 1$ 序列的含义有不同的规定, 如 “push \%ebp” 指令为 $55 \mathrm{H}=01010101 \mathrm{~B}$, 其中高 5 位 01010 为 push 指令操作码, 后三位 101 为 EBP 的编号, “leave” 指令为 $\mathrm{C} 9 \mathrm{H}=11001001 \mathrm{~B}$, 没有显式操作数, 8 位都是指令操作码。
3. 指令执行的顺序是:第 $2 \sim 5$ 行指令按顺序执行, 第 5 行指令执行后跳转到 swap 函数执行, 执行完 swap 函数后回到第 6 行指令执行, 然后顺序执行到第 8 行指令, 执行完第 8 行指令后, 再转到另一处开始执行。