[csapp]3.6 控制

本文探讨了汇编语言中跳转指令的工作原理,包括直接和间接跳转,以及条件转移的不同实现方式。分析了基于数据的条件转移为何比基于控制的更高效,解释了GCC等编译器的设计考量,并展示了if-else语句、do-while和while循环在汇编语言中的转换。

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

  • 在产生目标代码文件时,汇编器会确定所有带标号指令的地址,并将跳转目标编码为跳转指令的一部分

  • jump指令

    • 直接跳转
    • 间接跳转
  • 理解跳转指令的目标如何编码:对于研究链接很重要!

  • 条件转移的两种方式

    • 使用控制的条件转移
    • 使用数据的条件转移:
      • 更快 利用条件传送指令
  • if-else语句与汇编语言的转换

  • 基于数据的条件转移指令要比基于控制的快,why?

  • 实际上,gcc是如何设计的?

  • do-while()翻译为汇编语言

  • while()翻译为汇编语言,有两种方式

回头复习应该注意:学习汇编源码的目的不是为了去编写汇编源码,而是看着汇编源码应该知道哪里可以有优化的地方,在回头复习的时候注意理解,基于数据的条件转移和基于控制的条件转移的效率问题,以上这些大概理解就好了

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值