gnu c语言和汇编混合编写_第1页
gnu c语言和汇编混合编写_第2页
gnu c语言和汇编混合编写_第3页
gnu c语言和汇编混合编写_第4页
gnu c语言和汇编混合编写_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

C一、GNU汇编书写格式一、混合编程和内联汇编编译【2】1.s【2】1.s和2.c编译成一个elf 【1】1.c和2.c编译成一个elf 二、gcc d:m最后的;不能省略,对于Casm,"output(asm-")tm+=input(C-")trmitta0b;tes; volatile",r01"r%\n\t""str%\n\t""str":")1子程序间通过寄存器RR来传递参数,如果参数多于四个,则多出的部分用堆栈传递,被调用的子程序在返回前无须恢复寄存器RR的内容r栈使用r0接r在子程序中,使用寄存器RR来保存局部变量,如果在子程序中使用到了RR中的某些寄存器,子程序进入时必须保存这些寄存器的值,在返回前必须恢复这些寄存器的值;对于子程序中没有用到的寄存器则不必进行这些操作,在程序中,通常只能使用寄存器RR来保存局部变量R12用作子程序间scratch寄存器(用于保存SP,在函数返回时使用该寄存器出栈),记作R13用作数据栈指针,记作R14用作连接寄存器,记作R15记作程序寄存器,记作四、 mbl:,STRBR,#1;CMPR#0判断是否为字符串结尾BNEstrcopy如果不是,程序跳转到strcopyMOVc,lrce>,ta{;chardesstr[]"desin;toyet,srcstr);;}ccintfcn(int,intb,int,int,int{;}m假设程序进入f时,R0中的值为itfti){,,,,;}tlSTR,,4保存返回地址lrADDR,R0计算3*i(第3个参数)ADD,,R;计算5*iSTR,SP,#-4]!第5个参数通过堆栈传递ADD,,R1;计算4*i(第4个参数)BLfcn;调用C程序ADD,,#4d五、其他实r0例二:有参数1inta=100;intc=0;( //输出列表%0-- //输入列表%1--a%2-- vodnotacecpu_nt(vo{""#e#defnePLC"I" asm"mscps_c,%\n\t"------CPU进入IRQmode "mscps_c,%3\n\t" "mscps_c,%5\n\t" "mscps_c,%7"--------回到SVCmodecodeoutput部分是空的""(stk),----------------------对应上代码中的%0"I"(offsetof(stuctstack,abt[0])),PLC(PSR_F_BITPSR_I_BITPLC(PSR_F_BITPSR_I_BIT}nputopeandstcobbest);,"I"表示立即数(Immedateopeands),cobbes

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论