如何使用MacOS的汇编程序组装到THUMB

时间:2014-11-18 20:06:25

标签: macos assembly arm thumb

我需要将一个小的汇编文件(.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?

1 个答案:

答案 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}

感谢您的帮助!