gpt4 book ai didi

gcc - 从 C、GCC(裸机)调用 ARM 汇编

转载 作者:行者123 更新时间:2023-12-01 16:15:27 24 4
gpt4 key购买 nike

我正在尝试使用 GCC 在 ARM 中进行一些裸机编程并在 QEMU 上进行测试。每当我从 C 调用 ARM 标签时,我的程序就会挂起。我有一个简单的代码示例,显示了问题 https://gist.github.com/1654392 -- 当我在该代码中调用 activate() 时,它挂起。

我通过 objdump 观察到,当我执行从汇编到 C 代码(从 _start 开始)的 bl 操作时,它会生成一个切换到拇指指令的小包装器。看起来 C 代码都是在拇指指令中生成的,但我所有的汇编都是在 ARM(32 位)指令中生成的。我不明白这是为什么或如何解决它。

最佳答案

为了从 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

关于gcc - 从 C、GCC(裸机)调用 ARM 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8957474/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com