跳转指令及其编码

本文详细介绍了汇编语言中的跳转指令,包括直接跳转和间接跳转,以及各种条件跳转指令,如JE、JNE、JG等。跳转指令通过标号或从寄存器或存储器读取地址来指定目标。直接跳转使用标号,而间接跳转则涉及操作数。同时,文章还讨论了跳转指令的编码方式,包括PC相关的编码和绝对地址编码,以及如何根据条件码进行跳转决策。
摘要由CSDN通过智能技术生成

程序按照顺序执行指令 而c语言中控制流程有顺序,分支,循环三种

汇编中跳转指令会导致执行切换到程序中一个全新的位置,也就是说跳转可以产生c语言的分支和循环两种 

一个 为跳转后一部分不在执行 或者再跳转回去再次执行

在汇编代码中,这些跳转的目的地通常用一个标号指明

movl $0,%eax

jmp .L1

movl (%eax), %edx

.L1

popl %edx

jmp L1会跳过movl指令 从popl指令处开始执行

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

jmp指令是无条件跳转,可以是直接跳转,即跳转目标(目的指令的地址)作为指令的一部分编码

也可以是间接跳转 即:跳转目标是从寄存器或者存储器位置中读出

跳转指令分为两类 直接跳转and间接跳转 

直接跳转将目标地址作为指令的一部分:

直接跳转通过标号确定跳转目标

例:".L1"

间接跳转将通过其他方式获取地址(寄存器或者存储器)

间接跳转写法为   *后跟一个操作数指示符

例:jmp *%eax(寄存器中获取目的地址)

jmp *(%eax)(存储器中获取地址)

跳转条件

JMP   label        

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值