使用B或BL跳转时,下一条指令的地址的计算
.text
.global _start
3_start:
b step1
step1:
ldr pc, =step2
step2:
b step2 反汇编代码:
: eaffffff b 0x4
: e59ff000 ldr pc, [pc, #] ; 0xc
: eafffffe b 0x8
c: tsteq r0, # ; 0x8 b跳转指令:它是个相对跳转指令,其机器码格式如下:
[:]位是条件码;
[:]位为""(0xeaffffff为一条指令的二进制机器码)时,表示B跳转指令;
位为""时,表示BL跳转指令;
[: ] 表示一个相对于PC的偏移地址。 >将指令中24位带符号的补码立即数扩展为32(扩展其符号位);
>将此32位数左移两位;
>将得到的值加到pc寄存器中,即得到跳转的目标地址。 我们看看第一条指令“b step1”的机器码0xeaffffff:
>24位带符号的补码为0xffffff,将它扩展为32得到:0xffffffff
>将此32位数左移两位得到:0xfffffffc,其值就是-(0xfffffffc符号位不变,其余位取反再加1得到-);
>pc的值是当前指令的下两条(下一条的下一条)指令的地址,加上步骤2得到的-(PC-,即PC回退4个字节,刚好指向当前指令的下一条指令上),这恰好是第二条指令step1的地址。
不要被被反汇编代码中的“b 0x4”给迷惑了,它可不是说跳到绝对地址0x4处执行,绝对地址得像上述3个步骤那样计算。
使用B或BL跳转时,下一条指令的地址的计算的更多相关文章
- 使用B或BL跳转时,下一条指令的地址是这样计算的
B跳转指令:它是个相对跳转指令,其机器码格式如下: [31:28]位是条件码:[27:24]位为“1010”(0xeaffffff)时,表示B跳转指令,为“1011”时,表示BL跳转指令:[23:0] ...
- LyScript 获取上一条与下一条指令
LyScript 插件默认并没有提供上一条与下一条汇编指令的获取功能,当然你可以使用LyScriptTools工具包直接调用内置命令得到,不过这种方式显然在效率上并不理想,我们需要在LyScript插 ...
- Linux系统下用C语言获取MAC地址
最近在做一个小程序,需要用到在linux系统里编写C程序从而获取MAC地址,从网上搜了一遍,想总结一下.如果你就只需要单个功能的程序,可以采用方法一,见代码1,一般最好能够封装起来,写成获取MAC地址 ...
- Jquery 实现input回车时跳转到下一个input元素
/** * 回车时跳转到下一个元素 * @Author HTL * @DateTime 2016-12-30T11:33:25+0800 * @param {[type]} $input [INP ...
- Spring MVC 页面跳转时传递参数
页面仍然使用 JSP,在跳转时如果想传递参数则需要用到类 RedirectAttributes. 首先看看如何打开一个普通页面: // 登录页面(每个页面都要独立的 Action 来支持其呈现) @R ...
- MVC RedirectToAction 跳转时传参问题
RedirectToAction方法提供了5个重载方法 1.单纯跳转,不带参数. string redirectUrl = "/List" ; return RedirectToA ...
- Easyui下的点击回车键跳转到下个控件
在Easyui框架下,JavaScript 中的 onKeyDown事件居然失效了.所以使用了另外的函数去实现点击回车键跳转到下个控件. /** * 点击回车键跳转到下个控件; * @param ol ...
- VIM 中 查看{}是否闭合,按%跳转到下个闭合
VIM 中 查看{}是否闭合,按%跳转到下个闭合
- Activity跳转时传递Bitmap对象的实现
前言 相信大家可能都了解Activity跳转时我们是能够传递參数的,比方使用Intent传递或者Bundle来传递,把当前Activity的一些信息传递给将要跳转到的新的Activity.可是不知道大 ...
随机推荐
- info.plist
更新了Xcode8 以及 iOS10,App访问用户的相机.相册.麦克风.通讯录的权限都需要重新进行相关的配置,不然在Xcode8中打开编译的话会直接crash. 需要在info.plist中添加Ap ...
- MVC日期和其它字符串格式化
-- (月份位置不是03) string.Format("{0:D}",System.DateTime.Now) 结果为:2009年3月20日 : :: -- : -- :: st ...
- maven 找不到或无法加载主类
maven 找不到或无法加载主类 CreateTime--2018年4月19日22:58:14 Author:Marydon 1.情景还原: 在maven管理的web项目中,单独运行Java类报错 ...
- urlretrieve 如何给文件下载设置下载进度?
#python #xiaodeng #如何给文件下载设置下载进度? import urllib def callbackinfo(down,block,size): ''' 回调函数: down:已经 ...
- c# 获取北京时间更新本地计算机
class UpdateDateTime { [DllImport("Kernel32.dll")] private static extern void SetLocalTime ...
- HDUOJ----(2612)Find a way
Find a way Time Limit: 3000/1000 MS (Java/Others) Memory Limit: 32768/32768 K (Java/Others)Total ...
- Java语言中的面向对象特性:封装、继承、多态,面向对象的基本思想(总结得不错)
Java语言中的面向对象特性(总结得不错) [课前思考] 1. 什么是对象?什么是类?什么是包?什么是接口?什么是内部类? 2. 面向对象编程的特性有哪三个?它们各自又有哪些特性? 3. 你知道jav ...
- PC端轻松控制Android手机,PC Control Andoroid,PC控制安卓手机
记录此次经历的目的是帮助需要的人或下次使用时少走弯路,我为此试用了不少工具及方法,因为追求免费,像"Weak Control:在PC上控制你的Android手机"还要收费的我就不弄 ...
- jquerymobile 的特有 事件 和 方法 (转)
1.触摸屏事件—— Touch events tap Triggers after a quick, complete touch event. 本人实际测试效果:轻轻点击,效果和按普通按钮差不多. ...
- 整理mysql的28个知识点(转)
版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/weixin_39220472/article/details/80247011整理mysql28个知 ...