c语言和汇编语言转化问题?

(1)C和汇编参数传递
规定参数在4個以内依次对应r0-r3寄存器
参数在4个以外,用栈传递

(2)返回值传递 规定使用r0

(3)使用栈类型 规定使用满减栈

a、文件和文件之间跳转 汇编文件:


满足汇编代码外部调用声明:.global
满足c语言和汇编语言调用其他外部C函数声明:函数声明

b、在c语言和汇编语言中专门内嵌一个特殊函数:asm GNU編译环境下:

说明: 1)如果害怕编译器优化内嵌汇编代码在__asm__后加__volatitle__防止编译器优化


2)汇编代码必须放在一个"“中间,并且”"中间不能有enter回車换行只能用\n换行,\t为指令格式对齐编译器不会检查内嵌汇编语法,而是直接交给汇编器完成
3)输出寄存器列表:ASM汇编—>c语言和汇编語言
4)输入寄存器列表:c语言和汇编语言—>ASM汇编
5)告诉编译器你修改过的寄存器编译器会自动把保存这些寄存器值的指令加在内嵌汇编の前,再把恢复寄存器值的指令加在内嵌汇编之后

我要回帖

更多关于 c语言和汇编语言 的文章

 

随机推荐