直接使用ARM汇编时,我可以使用.thumb
和.thumb_func
及其类似的arm指令来指示汇编程序输出哪种指令。
开发C代码时是否有匹配的编译器指令?我在documentation的GCC seen中提到了各种命令行选项,以允许拇指和手臂代码在同一个二进制文件中工作,但是输出看起来像是在拇指或ARM中的整个二进制文件。我希望能够指定各个函数的编译方式。
如果没有,还有另一种方法可以做到这一点吗?我当时想我可以编译多次,然后手动拼接反汇编,以将功能手动拼接成一个新的二进制文件,但我希望有一种更简单的方法。
答案 0 :(得分:1)
看起来您想要的是Scanner
函数属性。在https://gcc.gnu.org/onlinedocs/gcc-8.2.0/gcc/ARM-Function-Attributes.html#ARM-Function-Attributes
target
和arm
属性
这些应该允许您在A32或T32的文件中编译单个函数。
答案 1 :(得分:0)
请勿使用gcc之外的任何其他网站的gcc文档,因为它可能已过时。来自gcc doc:
-mthumb
-marm
在生成以ARM和Thumb状态执行的代码之间进行选择。大多数配置的默认设置是生成在ARM状态下执行的代码,但是可以通过使用--with-mode = state configure选项配置GCC来更改默认设置。您还可以通过使用target(“ thumb”)和target(“ arm”)函数属性(请参见ARM函数属性)或编译指示(请参见功能特定的选项编译指示)来覆盖每个功能的ARM和Thumb模式。