网站公告列表

  没有公告

加入收藏
设为首页
联系站长
您现在的位置: 61IC中国电子在线 >> DSP >> FAQ >> 硬件开发 >> 文章正文
  交叉汇编       ★★★ 【字体:
交叉汇编
作者:admin    文章来源:本站原创    点击数:    更新时间:2004-7-19    

在开发dsp应用软件的时候,可以选择c语言或者汇编语言。二者各有优缺点:C语言作为比较流行的高级语言,结构简单,可读性强,可移植性好,但是执行效率相对汇编而言比较低。而汇编语言可以将dsp的性能发挥至极限,但是比较难阅读,开发时间较长。所以使用的方法是
先用c语言编写大致的框架,再修改关键部分编译出的汇编代码,或者重新用汇编代码编写,也就是所谓的交叉汇编。我个人认为,必须将两者结合起来,才能写出高效、易懂的程序。下面主要
透过TI2xx以及54xx的交叉汇编来谈一下我的认识
1、寄存器的定义
   在c语言中,大家可以通过关键字volatile 来定义相应的寄存器
   exa:    #define IFR    (*(volatile union  Ifr *)0x0006)
   这样可以在C中定义该寄存器的数据结构并引用
2、变量的声明
   交叉汇编语言中,如果利用汇编语言编写部分代码,在定义变量时在 量名前加下划线并用.global声明即可,这样可以在C文件中引用之。
   exa: .bss _test,1    .global _test    
    extern unsigned int test;    test=123;
   意的是,由于dsp按页管理ram,所以需要采用ldpk指令来load data page。所以,在编写汇编语言程序时,尽量将所用的ram独立的放到一个page中,防止ldpk使用频繁浪费时间,以及修改C语言的变量时导致汇编中ram分配情况变掉,程序不能执行。
   可以通过修改.cmd文件实现
   exa:
   …………………………
   DRAM1    : origin = 00800h , length = 00030h
   …………………………
   .userpage:    > DRAM1 PAGE = 1
   然后可以使用.usect来定义变量
   exa:
   _Test     .usect ".userpage",2
3、C语言中嵌入汇编语言
   asm("    instruction    ")
   在使用这种方法调用汇编语句的时候,首先要注意在"后一定要加空格或tab,否则会当成   label来处理。因为cc只是简单的将这句话加.asm文件中,并不进行很多检查。另外在c中嵌入汇编,注意不能破坏c的编译环境,这个后面再讲
4、c的运行环境
   C语言中,会开辟一定的内存区作为堆栈,来保存返回地址和临时变量以及参数。所以在调用函数时,会在开头加上以下代码:
    POPD    *+        ;return adress
    SAR    AR0,*+        ; ar0-->stack
    SAR    AR1,*        ; ar1-->stack
    LARK    AR0,4        ; temporary frame
    LAR    AR0,*0+
    SAR    AR6,*+,AR6      ;save register vars
    LARK    AR6,1
    MAR    *0+,AR3

    在返回的时候会加入以下语句
    MAR    * ,AR1
    <restore register vars>
    MAR    *-
    LAR    AR6,*
    SBRK    5
    LAR    AR0,*-
    PSHD    *
    RET
    其中AR1是堆栈指针而AR0是Frame Pointer,AR6则用来保存声明为register类型的变量
    AR2用于局部变量寻址,而AR3--5用来表达式分析
    所以在编写汇编语言函数的时候,需要加上以上代码,以维持C的编译环境。所以在C语言
    中嵌入汇编语言时,要注意这些辅助寄存器的使用,不要轻易修改,另外在汇编语言中调用
    c函数之前,一定要把当前辅助寄存器值为AR1。

    一些最基本的东西,大家可以从c COMPILER 上找到,希望能给大家带来帮助 

               欢迎点击进入:TI德州中文网   (国内唯一针对TI应用的中文技术网站)    文章录入:admin    责任编辑:admin 
  • 上一篇文章:

  • 下一篇文章:
  • 发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口
    最新热点 最新推荐 相关文章
    没有相关文章
      网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!)
    站长:61IC 湘ICP备05002478号