计算机组成原理——第四章指令系统(下)

本文详细介绍了计算机指令系统的实现,包括选择语句(if-then, switch)的机器级表示,循环语句(do-while, while, for)的机器级表示,以及CiSC和RiSC两种指令系统的特点。讲解了条件码(标志位)在执行选择和循环指令中的作用,以及X86架构中的循环指令loop。同时,文章提到了函数调用的机器级表示,描述了栈帧的工作原理和函数调用时的参数传递及返回值处理。最后对比了CISC和RISC指令系统的优缺点。" 79485703,6938894,解决Hadoop Hive Beeline连接错误,"['Hadoop', 'Hive', 'Beeline']

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本是青灯不归客,却因浊酒恋红尘


4.3.4 选择语句的机器级表示

常见的选择结构语句有 if-then、if-then-else、case(或 switch)等。编译器通过条件码(标志位)设置指令和各类转移指令来实现程序中的选择结构语句。程序计数器PC通常被称为IP,
1)条件码(标志位)
除了整数寄存器,CPU还维护一组条件码(标志位)寄存器,它们描述了最近的算术或逻辑运算操作的属性。可以检测这些寄存器来执行条件分支指令,最常用的条件码如下:
CF:进(借)位标志。最近无符号整数加(减)运算后的进(借)位情况。有进(借)位时,CF= 1;否则CF = 0。
ZF:零标志。最近的操作的运算结果是否是0,若结果为0,则ZF=1。否则ZF=0。
SF:符号标志。最近的带符号数运算结果的符号,若为负,SF=1,否则SF=0。
OF:溢出标志。最近的带符号数运算结果是否溢出。若溢出 OF=1,否则OF=0。
可见,OF和SF对无符号数运算来说没有意义,而CF对带符号数运算来说没有意义。常见的算术逻辑运算指令(add、sub、imul、or、and、shl、inc、dec、not、sal等)会设置条件码。但有两类指令只设置条件码而不改变任何其他寄存器: cmp指令和 sub 指令的行为一样,test 指令与and指令的行为一样,但是它们只设置条件码,而不更新目的寄存器
jcondition条件转跳指令,就是根据条件码ZF和SF,OF来实现转跳的(至于怎么实现,如何实现上一节中有写

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值