目前我正在查看由LLVM生成的ARM Cortex-M3的汇编程序代码。 LLVM生成许多汇编程序指令。正如您在下面的示例中看到的那样:
.text
.syntax unified
.eabi_attribute 67, "2.09" @ Tag_conformance
.cpu cortex-m3
.eabi_attribute 6, 10 @ Tag_CPU_arch
.eabi_attribute 7, 77 @ Tag_CPU_arch_profile
.eabi_attribute 8, 0 @ Tag_ARM_ISA_use
.eabi_attribute 9, 2 @ Tag_THUMB_ISA_use
.eabi_attribute 17, 1 @ Tag_ABI_PCS_GOT_use
.eabi_attribute 20, 1 @ Tag_ABI_FP_denormal
.eabi_attribute 21, 1 @ Tag_ABI_FP_exceptions
.eabi_attribute 23, 3 @ Tag_ABI_FP_number_model
.eabi_attribute 34, 0 @ Tag_CPU_unaligned_access
.eabi_attribute 24, 1 @ Tag_ABI_align_needed
.eabi_attribute 25, 1 @ Tag_ABI_align_preserved
.eabi_attribute 38, 1 @ Tag_ABI_FP_16bit_format
.eabi_attribute 14, 0 @ Tag_ABI_PCS_R9_use
.file "simple.bc"
.globl main
.align 2
.type main,%function
.code 16 @ @main
.thumb_func
main:
.fnstart
.Leh_func_begin0:
@ BB#0:
.pad #16
sub sp, #16
movs r0, #0
str r0, [sp, #12]
movs r1, #42
str r1, [sp, #8]
movs r1, #23
str r1, [sp, #4]
ldr r1, [sp, #8]
subs r1, #23
str r1, [sp]
add sp, #16
bx lr
.Ltmp0:
.size main, .Ltmp0-main
.Leh_func_end0:
.fnend
.ident "clang version 3.6.2 (tags/RELEASE_362/final)"
.section ".note.GNU-stack","",%progbits
我在这里找到了ARM特定的汇编程序指令:https://sourceware.org/binutils/docs/as/ARM-Directives.html
然而,如果这些指令必须以某种顺序出现,我找不到丢失的那些和解释。有没有关于所有汇编指令的完整文档和订单?