第39部分-Linux x86 64位汇编 跳转/调用/中断/循环

第39部分-Linux x86 64位汇编 跳转/调用/中断/循环

跳转

JMP指令把指令指针的值改变为JMP指令中指定的内存位置。

单一汇编跳转指令被汇编为跳转操作码的3种不同类型之一。

短跳转

近跳转

远跳转

由当前指令的内存位置和目的点的内存位置之间的距离决定的。

依据跳过的字节数目决定使用哪种跳转类型。

当偏移量小于128字节时候,用短跳转。

在分段内存模式下,当跳转到另一个段中的指令时使用元跳转。

近跳转用于所有其他跳转。

使用汇编语言助记符指令时,不需要担心跳转的长度,单一跳转指令用于跳转到程序代码中的任务位置。

 

条件跳转指令不支持分段内存模式下的远跳转。

调用

调用是具有在需要的时候返回这个位置的能力。

调用指令有两个部分,第一个部分是实际的call指令,需要单一操作数——跳转到的位置地址。

         紧跟call指针后面的是RET。

         调用CALL指令后,会把EIP寄存器放到堆栈中,然后修改EIP寄存器指向被调用的函数地址。函数调用完成后,从堆栈获得过去的EIP寄存器值,返回控制权。

中断

中断是处理器中断当前指令码路径并且切换到不同路径的方式。

中断有软件中断/硬件中断。

硬件中断是硬件层发生的事件。

软件中断是操作系统提供的。在Linux中,0x80中断用于提供低级内核函数。

 

循环

使用Loop命令。

 

未来防止loop限制,不要将ecs置0后开始循环。

Loop操作是先将ecs减1.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值