sin*_*yma 7 gcc arm qemu thumb armv6
我试图在ARM中使用GCC进行一些裸机编程并在QEMU上进行测试.每当我从C调用ARM标签时,我的程序就会挂起.我有一个简单的代码示例,在https://gist.github.com/1654392上显示问题- 当我在该代码中调用activate()时,它会挂起.
我用objdump观察到当我从汇编到C代码(从_start开始)执行bl时,它生成一个小包装器,切换到拇指指令.看起来C代码都是用拇指指令生成的,但我的所有程序集都是用ARM(32位)指令生成的.我无法弄清楚为什么会这样或如何解决它.
小智 5
为了从C中定义的THUMB模式函数调用程序集中定义的ARM模式函数,您需要在程序集中将符号定义为函数,而工具(Linaro gcc)将生成blx指令而不是bl.
例:
@ Here, we suppose that this part of code is inside of .code 32
.type fn, %function
fn:
mov pc, lr
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
8135 次 |
| 最近记录: |