首页
社区
课程
招聘
[求助]不知有没有ARM跳转指令计算器
2014-3-29 11:09 8094

[求助]不知有没有ARM跳转指令计算器

2014-3-29 11:09
8094
收藏
点赞0
打赏
分享
最新回复 (10)
雪    币: 112
活跃值: (14)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
zenzc 2014-3-31 16:07
2
0
自己写一个就有了
雪    币: 53
活跃值: (255)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2014-4-8 10:45
3
0
http://www.kanxue.com/bbs/showthread.php?t=166444
你可以去下载Android ndk,里边有arm-linux-androideabi-as,arm下的汇编器,自己写上汇编码,运行一下就可以列出机器码了
雪    币: 12237
活跃值: (3310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xJJuno 2014-4-9 11:22
4
0
这工具之前都有下
主要是想跨度计算偷偷懒
雪    币: 53
活跃值: (255)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2014-4-9 19:00
5
0
一样的啊,写指令呗
.org 0x20567
MYSLOT:
   mov r0, r0

.org 0x23232
B MYSLOT
雪    币: 12237
活跃值: (3310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xJJuno 2014-4-9 22:29
6
0
原来android-ndk里的工具就是你发布的那个。。。。
我还下载解压老半天。。
好像不能自定义位置吖
出来的地址那里都是问号
能否发个完整演示代码
雪    币: 53
活跃值: (255)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2014-4-11 15:50
7
0
.org指令是支持的,比如示例

=====================================================

    .syntax unified
    .text
    .align  4
    .global asmgen
    .type   asmgen, %function

    .org 0x8000
asmgen:
    push        {lr}
    mov r0, r0
    pop         {pc}

    .org 0x9000
mydat:
    B asmgen

当然还需要经过as汇编,ld链接之后,再用objdump反编译查看

目前也没想到什么好办法,建议还是查看具体的汇编手册,根据指令格式计算吧
比如<arm_architecture_v7m_reference_manual>
雪    币: 53
活跃值: (255)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
netsniffer 2014-4-11 15:52
8
0
as、ld、objdump工具都可以用Android NDK中的arm-linux-androideabi-xxx.exe
e.g.
目录位于:
android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin
雪    币: 12237
活跃值: (3310)
能力值: ( LV2,RANK:10 )
在线值:
发帖
回帖
粉丝
xJJuno 2014-4-11 18:03
9
0
感谢
我再去试试
还好没删。。。
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2014-7-4 17:20
10
0
自己写就行啊。

如果用B或者BL  公式就是  SrcAddr + (x << 2 +8) = DestAddr

然后 B X 或者 BL x

如果用BX,需要用寄存器

LDR r12,[pc, #4]
add r12, pc, r12
bx   r12

DD:DestAddr - SrcAddr
雪    币: 188
活跃值: (167)
能力值: ( LV3,RANK:30 )
在线值:
发帖
回帖
粉丝
cacorothuo 2014-7-4 17:40
11
0
[QUOTE=cacorothuo;1298248]自己写就行啊。

如果用B或者BL  公式就是  SrcAddr + (x << 2 +8) = DestAddr

然后 B X 或者 BL x

如果用BX,需要用寄存器

LDR r11,[pc, #4]
add r11, pc, r11
bx   r11

DD:De...[/QUOTE]

机器码 B的机器码 EA

04B09FE5              ldr     r11,[pc,#4]
0BB08FE0              add     r11,pc,r11
3BFF2FE1               blx     r11
游客
登录 | 注册 方可回帖
返回