第5章 程序的执行

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 行指令后, 再转到另一处开始执行。

  • 9
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值