我正在使用arm-linux-gnueabi-gcc为 Linux 中的 ARM 处理器编译 C 程序。但是,我不确定它编译的默认 ARM 模式是什么。
例如,对于 C 代码:
测试.c
unsigned int main()
{
return 0x1ffff;
}
arm-linux-gnueabi-gcc -o test test.c
现在,当我用 objdump 查看 main() 函数的反汇编时,我可以看到:
arm-linux-gnueabi-objdump -d test
<main>:
push {r7}
add r7, sp, #0
movw r3, #65535 ; 0xffff
movt r3, #1
mov r0, r3
mov sp, r7
pop {r7}
bx lr
看来这是 ARM Thumb 模式的反汇编(因为 push 指令)。
如何显示反汇编如下:
.sect ".text"
.global _fn
_fn: MOVW A1,#65535
MOVT A1,#1
BX LR
或这个
.sect ".text"
.global _fn
_fn: LDR A1, CON1
BX LR
.sect ".text"
.align 4
CON1: .word 0x1ffff
我在这里看到了这个例子:
http://e2e.ti.com/support/development_tools/compiler/f/343/t/40580.aspx
但是,我无法查看反汇编的显示方式。
谢谢。