DSP系统中C语言和汇编语言的混合编程(精)_第1页
DSP系统中C语言和汇编语言的混合编程(精)_第2页
免费预览已结束,剩余12页可下载查看

下载本文档

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

文档简介

1、C语芒和汇编语言的混合编程汇编语言编程优点:可以充分地控制处理器的功能.为人匸映射算法 构成放有效的程序缺点:编码效率低、可维护性和移植能力差 C/C+语言编程优点编码效率高、可维护性和移植性好缺点:速度慢*存储器利用效率低混合编程以 TMS320C2X/C2XX/C5X 的 C 编 if 器为例 C 涪肓的存储器模! 2 Cifhi 的窃 17 器训则3C 讲肓的函数调川规则 4C 与 71 泪涪普的接口3 M一港咅岭翼*誇龙関臺豐整护奥 1 C语言的存储器模型C编译器产生的段段窑称段内容存储器类地.text可执行代円和浮点常穀ROMriRAM0初Milt段.cinit已和始化的个前变樹和1

2、态变帛的列衣ROM 4 RAM0.switch用1繆开关谄卯的跳转列表ROM RAM0 xanst已初始化的宇符瓠全时常辭和 协态常罰ROMt-JiRAM1始化- .bu全却和静卷变鹹RAM.stack软件堆找1RAMt段.system幼态”储空间RAM1I.” -*.:-.: U 系统堆栈(软件堆栈)堆找的作用-分!乩H;堆栈的大小V认L小为业儿 議按时可用FtMtC込改变!、小堀浄器、瞇搖器显存規供检貯堆規溼出的力法,堆栈沁出会碓川二 打环或*特致榨序尖敢,冈此.翌确保冇足够K的空间用于堆栈的 扩展堆桟的俗理iff段从低地和向高地址堵检AR1, HtRISH (SP) * SPSfl Ji

3、r向堆栈的F牛可询錫单兀AR0:结构-frame)殆1FP八 指向巧前紡恂的开始蛀隔数 训IIU4.mt;的局沉变址仝盘3创建Y新的frame.今.:.动态存储空间(system段)用F运If时为变邙动态分配存储器*malloc. calloc. reallocfree总是采用间接#址来访弧即川指针来访问默认大小为黄字链接时町用-heap血祈坟变大小6fl! 2C语言的寄存器规则寄存器使用、保存规定 編详器如何使用寄存器 函数调用时如何保护寄存器(ft需存器ma被调宙数保护ARO结构指针YesAR1堆找指针YesAR2时部变诂描针NoAR2*AR5我达式分析NoARB-AR7寄存器变最YesA

4、CC bis表达氏分析7返回値1Nop农达式分析NoT农达式分析No*状态位域::保留值足在进入 i 个函数或从一个曲数返回时輪 译器期职的该位域的值瓶横线衣示编译器不期瑕个特定的值被修改栏表明编译器代码广:1-:器是否旳修改该位域域名称保留值被修改ARP辅助寄存黑指针1YesC进位位YesDP数抑页Yes0V溢出位YesOVM溢出摸式0NoPM乘积移位模式0NoSXM符号扩展模式YesTC测试位Yes堆找指针SP 任灌W敢莎祀ARO结构WFP,指向当肘绪构的丹始处-ppffitMj的品部结构的第个单尤被njfrri时仔储巾 以允许 寄存器必间的数据传输,II.对J CFfi数的乱入出心绩的同

5、部变览指针LVP* AR2怖强变SlftHLVP所冇存储在耐部结构中的对象.包括欝数都it过LVP进行间 接访问-T. 1 J 堆栈指针.结构指针和局部变量指针 ”9寄存器变量寄存器妇/足胡部变就位丁诲存器小(不圧打捕豁M的编译器的临时变燉编译器他用这吃寄存器变庭的方式取抉于是否使用了优 化器表达式分析寄存器表达式分析寄存器用-HlffJi达式的値并保佯临吋的结 果衣达式分析寄存器的内容在被调甫数屮不被保护*任何用于临时存储的我达式分析甜存器在函数调用前被 保存亦局部结构中返回值函数返回值放巾累加器中 * 3C语言的函数调用规则:#如何产生函数调用个雷数(父M)伍凋用它函数(产函数)执行以P任

6、务注意ARP必须设为11)堂函数将参数以倾倒的顺序爪入堆栈,右边声明的 参数第一个压入堆栈,鈕左边的参数戢后一个压入堆 栈”即S1A:边的参数僅栈顶2)父函数训用r曲数3)父函数假定从犷函数返回时、ARP将被置为14)完成调用几 父歯数以SBRK n5 是压入堆栈的参 数个数)将参数弹出堆栈101)将返冋地耻从硬件堆栈中弹出,并压入软杵用拽中2)将原FP压入软件堆栈3)分配局部结构4)如果广晦数中修改AR6刖或州U,则将它们压入加栈、H它的任何寄存器可施被无保f地Ii改5)执行该函数的代码6)将返回值放入累加器7)设WARP为AR18)如果AR6ftlMAR7被保存,则恢复它们9)胖放碍剂结构

7、分配10J恢UISFP11)从辕件堆栈中复制返冋地址,井斤入砸件堆栈12)返回父甫数*被调函数如何相应响应被调函数(0函数)需要完成以卜任务 在函数的入口,ARP假定已经设覽角*9 9 1211*far*L 8 FPAKXJl gF时trwfff屮伽W/AI-芥*;gW/f/Af ff f J f fJ krtitCdncz:.pr-jMJ曰i5PFft%.“F unpA彷 巩-,1即邮sjj:.嗣呼iil麗、冲爲rJll应*:5FT X liiu观fc. *l-.?J Li :i c U: :trniSli峨宀+A、呵酣Ml*+r碍AT.?:ici ri fui叩斑mi Q1,瞅脚打HE:血

8、:z- iif弑址:紳US *+.网皿SEEmiiJalkocju tr i- politT皿討E啟-*游阶*;un td;rf u W盂:fUi.r;rz- -*被调函数的特殊情况没有将祗回地址移到软件堆栈中如果被调前数(子KB)没仃调用真它晦数,威只调用了一 个迄和支持诵数* 編译器知道该函数不会超过8级iS度的调 用,即不紐生観件堆犠的港出则就不必将返冋地址从硬 件堆橫中弹Hb丈爪入軟件堆槪中如果没有M部变孔 也没右便川由ARO (FP)的訓时存储凱尤,则不必分配対部结构参数和局部变量的访问參数和局部变鼠通过LVP(AR2)来访问 参数总是相对于FP的负偏移鼠局部变最总是相对于FP的匸偏

9、移駅独立的C和汇编模块接口在编写汇编语吉时必须遵循有关的寄存器规则和调用规 则,否则可能会破坏C的运fj环境1在编丐独立的汇编程序时.必须注盘以卜.儿点:-无抡是C隔数迩是讥编函数.罹暑须遵18珞存器使用规则必预保护函数箜用到的儿个专用寄仃器,专用寄存!8包扌心ARO(FP), AR1(SP . AR6WAR7丼中* 如!USPiE浦拽用的话.则不必明确加以保护.即只變汇Si谕数任返冋时帰出压入的对象*实除上就L1经保护rsp-応它崙器町以门由便用134C语言与汇编语言的接口 15如圾改变了状憲位域的锻定值*期凿数返回时必须被恢貳ARP磁硕期1中断程乍必乘 fi!护所仃川到的崙右器 汇HHna

10、ifflca*时,kuut/fffiMk件堆棧.頃釵调用新戸出Hi我-调川C陶數叭C的数只保护儿ttJHWfriK. C曲数町能改变冗它 任何髓存黯的内舁长用创和浮点数任存餉藕中冷赦的顺厚是低位字在低堆址.盛位孑 在高地址如果南数冇返冋悄.则亟冋苗冷放在眾那储ACX申汇編程序不能15雙由C产生的xinitgt的内容.吉则M能公町|挖不可预测的后果塢诽器在斫冇的C标识符 (函数名.菱髦珮著)萌加下划缈因 此住ST中匸编程用时,必池血C用斥蹩的问的对禦就鋼下J0线 _:例如,ECR序屮述义fSfl世汇中便用时为脸 航果仅欄编濟占中使用的标识符.則不必加F划线任何削汇编程序中定叉的对象或馆数.如枭缶

11、45在匚程I存杠仿间哑调用*則必織用obal汇编伪指令声朗: 同惮”心C榨库中址义的 对象或的数.如果隔軽f編程序中访问或调用,在兀編程序中也 必狗用8*卅汇編伪術冷向明14 4 .11*4在C程序中直接嵌入汇编语句在C程序中便用wm语句嵌入单行的汇编语句忧心;简也ifcc程障中可以实无法实现的些皎 件控制功能,如修改中斷控制側暮、中断的是能或无烛、 谨取状态寄”器和中断标志寄心器零-峡点】容易破坏C环境*因为C编译器不对嵌入的汇编诉旬 追疔检测和分析注息右C代码中嵌入跳转讲切或标训符可能会产牛无法预知的结 果*不咚吐变C变贾的不薑嵌入jl编伪指令. 釦CfiVmainsfi数调用-个汇编呦r

12、asmfunc*asmfunc-伫M一个參数*谀摻数 |疋中的全胡变gvartll加返冋该 结果extiiiij IK.!, auneunu : j /1dec 1 j.re xtetrjdl JtErm f ilnet L-fin gvM;L defineViiri&blniri ()i nmwtjnc (i I j / cal 1 fwact Ion reDimil ly例中可以不必将遞创地址从魏件堆栈 移到软件堆栈中. 周为*mftmc函数没冇进荷别的调用IOPD*+* I+-WL i-r-f-131TJ -ldrfl45pto C mbacfcARO. 1PF3ARlf*1 G

13、PARO, 1*. SXE 9f rntARO,通:Set up FP *nd SFLOUCgrv*r;FaiffE co qva护uttelqtADD%辭;Add A-iJ tQ中2*CLJV址 -Sft%1? In尹鼻上LARP AP !i P-T-p off frarre2LARAR% -StGfltor rui4 pointvrI &HDVj Hcve return ddE tcC2x otflck16但可以釁金地读仟何变量的当ink这含破坏汇编话育环境asm( (Eim4 hmt 118在C代码中访问汇编语言变量在汇編器盏中定义变量.变拭名舸加F划线二便IU.global明为

14、全間变眦农C和序中声明该变垦为外邯你并圧常地对它访问17*r亠L;/* UH th* v%riaitD) )AssrrO h屮.屯*pr冲-i *Note tbe uaa al undaraceraa In th# fallwXng liiiu.bus_vr, ); D*f .1 n* tTi* vttri *hl*ijkitAl_VAf; Dft-1 r* It 4崗】Cprogramffxtern fir .tBine r / Thifi is thr object* /i - sine闿:/* ACCEsi dine a *L亡iial Array/(bi阳泅吐站 诒progrwp_S I llrftr甘也:1*1门勺MXf rtl Imli.ne_itabrFMake & separate sect iona me:;i The table tarts here.tlO4E 0 .Q-float 0.015387.float 0.0 214 S在汇編讥書中位川,global声明为外部蝕I,变试名前加 下划践

温馨提示

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

评论

0/150

提交评论