我想演示如何使用gcc将不同的C函数转换为ARM汇编代码,所以我尝试编译这个函数
int f(int a) {
return a+1;
}
使用命令:
gcc -O3 -S test.c
得到:
.arch armv6
.eabi_attribute 27, 3
.eabi_attribute 28, 1
.fpu vfp
.eabi_attribute 20, 1
.eabi_attribute 21, 1
.eabi_attribute 23, 3
.eabi_attribute 24, 1
.eabi_attribute 25, 1
.eabi_attribute 26, 2
.eabi_attribute 30, 2
.eabi_attribute 18, 4
.file "test.c"
.text
.align 2
.global f
.type f, %function
f:
@ args = 0, pretend = 0, frame = 0
@ frame_needed = 0, uses_anonymous_args = 0
@ link register save eliminated.
add r0, r0, #1
bx lr
.size f, .-f
.ident "GCC: (Debian 4.6.3-14+rpi1) 4.6.3"
.section .note.GNU-stack,"",%progbits
然而,这给了一大堆额外的辅助信息,对新手来说看起来有点吓人。有没有办法告诉gcc发出更简洁的汇编?我的理想是这样的:
f:
add r0, r0, #1
bx lr
但更短的任何内容都会有所帮助。
我尝试查看选项here并尝试使用-g0,但它提供了相同的输出。