伪操作与伪指令不同。
伪指令虽然不能生成与机器码映射的机器码,但是能被编译成相应的汇编指令,再编译成机器码。
伪操作不会生成任何指令,只在编译期起作用,用来控制编译器,告诉编译器怎么编译指令。所以不同的编译器,它的伪操作是不一样的。
伪操作的作用类似于C语言的条件编译。
@ 混合编程 .text .global _start _start: MOV R1,#1 MOV R2,#2 BL func_c @ 汇编语言调用C语言 MOV R3,#3 BL STOP .global FUNC_ASM @ global声明让C调用 FUNC_ASM: MOV R4,#4 MOV R5,#5 .global STOP STOP: B STOP .end
void func_c() { int a = 0; a++; /*C语言内嵌汇编代码*/ asm ( "MOV R6, #6\n" "MOV R7, #7\n" ); /*C语言调用汇编*/ FUNC_ASM(); a--; }
ATPCS,ARM-THUMB procedure call standard,ARM-Thumb过程调用标准。
规定了所有编译器对C编译成汇编需遵循以下标准:
END