我需要将一个小的汇编文件(.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?
答案 0 :(得分:0)
好的,感谢Notlikethat我在他联系的主题中找到了我想要的东西。我在这里总结一下。
解决方案是在我希望“标记”为THUMB的每个标签之前添加汇编程序指令.thumb_func
。结果:
$ 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}
感谢您的帮助!