0

我需要将一个小程序集文件 (.S) 编译为 THUMB,但 MacOS 的as工具会生成 ARM 机器代码:

$ cat > code.S
.text
L0:
    push {lr}
    bl L1
L1:
    pop {r0}
    blx r0
    pop {pc}
$ as -arch armv7 code.S
$ otool -t -v a.out
a.out:
(__TEXT,__text) section
L0:
00000000    e92d4000    stmdb   sp!, {lr}
00000004    ebffffff    bl  0x8
L1:
00000008    e8bd0001    ldm sp!, {r0}
0000000c    e12fff30    blx r0
00000010    e8bd8000    ldm sp!, {pc}

如您所见,它生成 ARM 机器代码。如何让它生成 THUMB?

4

1 回答 1

0

好的,感谢 Notlikethat 我在他链接的线程中找到了我想要的东西。我在这里简单总结一下。

.thumb_func解决方案是在我希望“标记”为 THUMB的每个标签之前添加汇编程序指令。结果:

$ cat > code.S
.text
.thumb_func
L0:
    push {lr}
    bl L1
.thumb_func
L1:
    pop {r0}
    blx r0
    pop {pc}
$ as -arch armv7 code.S
$ otool -t -v a.out
a.out:
(__TEXT,__text) section
tramp10:
00000000        b500    push    {lr}
00000002    f000f800    bl      0x6
tramp11:
00000006        bc01    pop     {r0}
00000008        4780    blx     r0
0000000a        bd00    pop     {pc}

感谢所有的帮助!

于 2014-11-19T08:49:38.810 回答