书签 分享 收藏 举报 版权申诉 / 23
上传文档赚钱

类型CC运行时环境课件.pptx

  • 上传人(卖家):晟晟文业
  • 文档编号:4232675
  • 上传时间:2022-11-21
  • 格式:PPTX
  • 页数:23
  • 大小:258.62KB
  • 【下载声明】
    1. 本站全部试题类文档,若标题没写含答案,则无答案;标题注明含答案的文档,主观题也可能无答案。请谨慎下单,一旦售出,不予退换。
    2. 本站全部PPT文档均不含视频和音频,PPT中出现的音频或视频标识(或文字)仅表示流程,实际无音频或视频文件。请谨慎下单,一旦售出,不予退换。
    3. 本页资料《CC运行时环境课件.pptx》由用户(晟晟文业)主动上传,其收益全归该用户。163文库仅提供信息存储空间,仅对该用户上传内容的表现方式做保护处理,对上传内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知163文库(点击联系客服),我们立即给予删除!
    4. 请根据预览情况,自愿下载本文。本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
    5. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007及以上版本和PDF阅读器,压缩文件请下载最新的WinRAR软件解压。
    配套讲稿:

    如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。

    特殊限制:

    部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。

    关 键  词:
    CC 运行 环境 课件
    资源描述:

    1、C6000 C run-time environment定义定义nThe run time parameters in which your program must function.nThese parameters are defined by 1.the memory conventions(规范规范)2.register conventions3.stack organization,4.function call conventions5.system initialization.存储器模型存储器模型 nC6000编译器把整个存储区当作单个线性存储块,并将它分为代码区和数据区n编

    2、译器假定目标存储器的全部32-bit地址空间是可用的。n定义存储器映象并将代码和数据分配到目标存储器的是连接器,而非编译器。nCmd文件是linker使用的。Hello.cmd段&已初始化段n编译器生成的可重定位的代码和数据块称为段(sections)n已初始化的段:包含数据和可执行代码。C/C+编译器生成的已初始化的段有:n(1).cinit段:包括变量初始值和常量值。n(2).const段:包括字符串文字(string literals),浮点常量和在C/C+中被声(3)明为const的数据(如果常量没有同时被声明为volatile)。n(4).switch段:包含大的switch语句的跳

    3、转表(jump table)n(5).text段:包含所有的可执行代码。未初始化段n未初始化的段:存储器(一般指RAM)中的保留空间。程序在运行时用它来创建和存储变量。C/C+编译器生成的未初始化的段有:n(1).bss段:为全局变量和静态变量保留。如果为连接器设定-c选项,则在程序的开始,C引导程序会将.cinit段的数据(可在ROM中)复制到.bss段。编译器定义全局符号$bss,并指定它为.bss段的起始地址。n(2).far段:为声明为far的全局变量和静态变量保留。n(3).stack段:系统堆栈。这个存储区用于传递函数的参数和为局部变量分配存储器空间。n(4).sysmem段:为动

    4、态存储空间分配保留的存储区。提请动态存储空间分配要求的有malloc,calloc和realloc等函数。如果C/C+程序未使用这些函数,编译器便不生成该段。段的补充n汇编器产生默认的.text,.bss和.data段,但C/C+编译器不使用.data段。允许用CODE_SECTION和DATA_SECTION pragma来让编译器生成另外的段。n除了.text段,各个初始化段和非初始化段均不能分配到内部程序存储器。系统堆栈编译器将堆栈用于:n(1)保存函数调用后的返回地址;n(2)给局部变量分配存储空间n(3)传递函数参数n(4)保存临时结果n运行时堆栈增长方向是从高向低,编译器用B15寄

    5、存器来管理堆栈,即将它作为堆栈指针(SP),指向堆栈中下一个空闲的存储器位置。初始化变量初始化变量 nC/C+编译器生成的代码可固化到ROM中,.cinit段的初始化表也是贮存在ROM中。在系统初始化的时候,C/C+引导程序将表中的数据(ROM中)拷贝给.bss段中对应的变量(RAM中)。n如果程序是从目标文件直接载入存储器,然后运行时,可以无需.cinit段。加载器(loader)直接地从目标文件中读出初始化表(而不是从ROM中),在加载时完成初始化,而不是运行时。这个过程可以通过为连接器指定cr选项来实现。存储器模式存储器模式 (-mln)n小存储器模式和大存储器模式。它们的区别在于为.b

    6、ss段分配存储空间的方式。n小存储器模式:.bss 32KByte,使用DP(B14)访问全局数据:LDW*+DP(0 x7),B5n大存储器模式:不限制.bss段的大小,访问数据使用MVKL&MVKH:MVKL _x,A0 MVKH _x,A0 LDW*A0,B0 寄存器使用规范寄存器使用规范 n在C/C+环境下,一些具体的操作要使用哪些的寄存器来完成,是有严格的规范的。n寄存器使用规范规定了编译器使用寄存器的方法以及函数调用过程中数值保存的方法。n要在C/C+程序中嵌入汇编语言,必须理解并遵循寄存器使用规范。寄存器使用规范寄存器使用规范函数调用约定n函数(父函数)在调用另一个函数(子函数)

    7、的时候执行下列操作 n(1)将传递到子函数的参数放入寄存器或堆栈。函数调用(父函数)n(2)如果需要,保存寄存器(a/b09)到堆栈。n(3)调用者(父函数)调用函数(子函数)。n(4)(对非C/C+代码)当返回时,调用者收回(reclaim)被调用者使用的堆栈空间。函数调用(子函数)n(1)被调函数(子函数)为所有的局部的变量、临时存储区和它调用的函数的参数分配足够的堆栈空间。n(2)如果被调函数还继续调用其他的函数,返回地址必须保存在堆栈中。n(3)如果被调函数修改寄存器A10到A15或者B10到B15的值,必须将它们保存。n(4)被调函数执行其代码。n(5)存放返回值在A5:A4中。n(

    8、6)恢复3中保留的寄存器值n(7)释放1分配的堆栈n(8)利用B3,跳转返回父函数C/C+与汇编语言的接口与汇编语言的接口n使用独立的汇编代码模块,并将其与编译完的C/C+模块连接在一起n在C/C+源程序中使用内联函数(intrinsics),直接地调用汇编语句n使用内联(inline)汇编语言直接嵌入C/C+源程序n在C/C+源程序中使用汇编程序变量和常量C+调用汇编程序内联函数(内联函数(intrinsics)nC6000编译器可以识别若干内联函数。内联函数直接调用某些汇编语句,这些汇编语句在C/C+中实现起来是很繁复或难以表达的。nint x1,x2,y;/饱和加法y=_sadd(x1,

    9、x2);内联(内联(inline)汇编语言汇编语言nasm(”;*这是汇编语言的注释”);n要很小心不要破坏C/C+环境。对插入的汇编指令,编译器不做任何检查或者分析。用用C/C+访问汇编语言变量访问汇编语言变量 系统初始化系统初始化n运行一个C/C+程序之前,必须建立C/C+运行环境。这个工作是由C/C+引导程序调用c_int00函数完成的。n系统运行开始时,跳转到或调用c_int00函数,但通常是硬件复位中断的中断服务程序调用它的。n1)定义系统堆栈.stack段并初始化堆栈指针。n2)定义.bss并初始化DP指针n3)初始化全局的变量,这是通过将.cinit段中的初始化表复制给.bss段

    10、中为变量分配的存储空间来完成的。如果是在加载时初始化变量(cr选项),加载器(loader)在程序运行之前就完成了这个步骤(它不是通过引导程序执行的)。n4)调用main函数来运行C/C+程序。运行时初始化和加载时初始化C_int_00源码 1extern void _interrupt c_int00()/*-*/*SET UP THE STACK POINTER IN B15.*/*THE STACK POINTER POINTS 1 WORD PAST THE TOP OF THE STACK,SO SUBTRACT*/*1 WORD FROM THE SIZE.*/*-*/_asm(m

    11、vkl _stack,SP);_asm(mvkh _stack,SP);_asm(mvkl _STACK_SIZE-4,B0);_asm(mvkh _STACK_SIZE-4,B0);_asm(add B0,SP,SP);/*-*/*THE SP MUST BE ALIGNED ON AN 8-BYTE BOUNDARY.*/*-*/_asm(and 7,SP,SP);/*-*/*SET UP THE GLOBAL PAGE POINTER IN B14.*/*-*/_asm(.global$bss);_asm(mvkl$bss,DP);_asm(mvkh$bss,DP);C_int_00源码

    12、 2n/*-*/n /*SET UP FLOATING POINT REGISTERS FOR C70 ONLY */n /*-*/n#ifdef _TMS320C6700n _asm(mvk 0,B3);/*round to nearest*/n _asm(mvc B3,FADCR);n _asm(mvc B3,FMCR);n#endifn /*-*/n /*GET THE POINTER TO THE AUTOINITIALIZATION TABLES INTO THE FIRST */n /*ARGUMENT REGISTER(A4)*/n /*-*/n _asm(.global cin

    13、it);n _asm(mvkl cinit,A4);n _asm(mvkh cinit,A4);n /*-*/n /*PASS THE CURRENT DP TO THE AUTOINITIALIZATION ROUTINE.*/n /*-*/n _asm(mv DP,B4);n /*-*/n /*CALL THE AUTOINITIALIZATION ROUTINE.*/n /*-*/n _asm(.global _auto_init);n _asm(mvkl$aiRL,B3);n _asm(mvkh$aiRL,B3);n _asm(mvkl _auto_init,B0);n _asm(mvkh _auto_init,B0);n _asm(b B0);/*far call*/n _asm(NOP 5);n _asm($aiRL:);n /*-*/n /*CALL THE USERS PROGRAM.*/n /*-*/n main();n /*-*/n /*CALL EXIT.*/n /*-*/n exit(1);n

    展开阅读全文
    提示  163文库所有资源均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    关于本文
    本文标题:CC运行时环境课件.pptx
    链接地址:https://www.163wenku.com/p-4232675.html

    Copyright@ 2017-2037 Www.163WenKu.Com  网站版权所有  |  资源地图   
    IPC备案号:蜀ICP备2021032737号  | 川公网安备 51099002000191号


    侵权投诉QQ:3464097650  资料上传QQ:3464097650
       


    【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。

    163文库