能力值:
( LV2,RANK:10 )
|
-
-
2 楼
自己写一个就有了
|
能力值:
( LV3,RANK:20 )
|
-
-
3 楼
http://www.kanxue.com/bbs/showthread.php?t=166444
你可以去下载Android ndk,里边有arm-linux-androideabi-as,arm下的汇编器,自己写上汇编码,运行一下就可以列出机器码了
|
能力值:
( LV2,RANK:10 )
|
-
-
4 楼
这工具之前都有下
主要是想跨度计算偷偷懒
|
能力值:
( LV3,RANK:20 )
|
-
-
5 楼
一样的啊,写指令呗
.org 0x20567
MYSLOT:
mov r0, r0
.org 0x23232
B MYSLOT
|
能力值:
( LV2,RANK:10 )
|
-
-
6 楼
原来android-ndk里的工具就是你发布的那个。。。。
我还下载解压老半天。。
好像不能自定义位置吖
出来的地址那里都是问号
能否发个完整演示代码
|
能力值:
( LV3,RANK:20 )
|
-
-
7 楼
.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>
|
能力值:
( LV3,RANK:20 )
|
-
-
8 楼
as、ld、objdump工具都可以用Android NDK中的arm-linux-androideabi-xxx.exe
e.g.
目录位于:
android-ndk-r9\toolchains\arm-linux-androideabi-4.8\prebuilt\windows\bin
|
能力值:
( LV2,RANK:10 )
|
-
-
9 楼
感谢
我再去试试
还好没删。。。
|
能力值:
( LV3,RANK:30 )
|
-
-
10 楼
自己写就行啊。
如果用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
|
能力值:
( LV3,RANK:30 )
|
-
-
11 楼
[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
|
|
|