您当前的位置:五五电子网电子知识单片机-工控设备ARM单片机ARM汇编优化 (1) 正文
ARM汇编优化 (1)

ARM汇编优化 (1)

点击数:7645 次   录入时间:03-04 12:01:16   整理:http://www.55dianzi.com   ARM单片机
要做程序的优化,最彻底的方法当然是汇编!还有除了汇编以外(除了二进制)能让你对你的处理器有更全面的控制吗?!对于ARM汇编,作为一个初学者,也就只好先补补基础了@_@。
     首先,程序段的定义从AREA 开始,它命名一个代码区域,注意,用非阿拉伯数字作为名字时,应该用|把名字包起来,CODE关键字声明程序(猜测),readonly声明访问权限(猜测)。EXPORT 来表示某个可以用作外部连接的符号(简单点,应该就是函数名?)。END用来结尾。
#eg:
    AREA    |.text|, CODE, READONLY
    EXPORT   square
 
    ; int square(int i)
 
square      ;armCC把不缩进的正文作为一个标号定义
           MUL    r1,r0,r0
           MOV   r0,r1           ;ARM乘法指令有一个限制,就是目标寄存器不能和第一个参数寄存器相同
           MOV   pc,lr            ;对Thumb指令,应该改为BX lr
           END
 
      使用import,可以声明其他文件中定义的标号,要用ARM C库的话,就import |Lib$Request$armlib|, WEAK表示本行的标号如果找不到,不会报告连接错误。如果程序包含主程序main,那么要引入标号__main,代表C库初始化的开始。RN可以让用户给寄存器命名。
#eg:
     AREA            |.text|, CODE,READONLY
 
     EXPORT     main
 
     IMPORT     |Lib$$Request$$armlib|, WEAK
     IMPORT     __main             ;C library entry
     IMPORT     printf                ;prints to stdout
 
i    RN   4
 
        ;int main(void)
main
          STMFD      sp!,{i,lr}
          MOV         i,#0
loop
          ADR          r0,print_string
          MOV         r1,i
          MUL          r2,i,i
          BL            printf
          ADD         i,i,#1
          CMP          i,#10
          BLT          loop
          LDMFD      sp!,{i,pc}
 
print_string
         DCB         " Square of %d is %d\n", 0
         END


本文关键字:暂无联系方式ARM单片机单片机-工控设备 - ARM单片机

上一篇:ARM汇编优化 (2)

《ARM汇编优化 (1)》相关文章>>>