打印
[开发工具]

求基于IAR编译软件的嵌入汇编例程

[复制链接]
6589|8
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
gzhwb|  楼主 | 2007-4-2 09:09 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
现在我的主程序是用C语言写的,为了提高速度想嵌入一段汇编语言程序,求基于IAR编译软件的嵌入汇编例程。谢谢!
沙发
ryansheng| | 2007-4-2 10:00 | 只看该作者

Re

可以在C里面内嵌几句汇编,也可以把整个函数用汇编文件来写。

使用特权

评论回复
板凳
gzhwb|  楼主 | 2007-4-2 10:09 | 只看该作者

具体怎样操作呢?

使用特权

评论回复
地板
starm| | 2007-4-2 11:08 | 只看该作者

EWARM 内联汇编问题

  asm("    LDR     R0, [PC, #0x0C] ");
  asm("    LDRH    R2, [R0]        ");   
  asm("    BIC     R2, R2, #0x03   ");   
  asm("    STRH    R2, [R0]        ");       
  asm("    MOV      PC, #0          ");   
  asm("    DCD     0xA0000050      ");   

使用特权

评论回复
5
gzhwb|  楼主 | 2007-4-2 13:37 | 只看该作者

re

大家好,我想把下面的那段程序转换成汇编,涉及到函数参数的传递,数组参数的传递,请问用汇编语言怎样得到C语言函数的参数。
void _checktable (unsigned char line, unsigned char *text,
                  unsigned char *lasttext, unsigned char *IDD)
{
    unsigned int  i,j,k,temp,temp2;
    for( j=0,k=0; j<line; j++,k+=8 )
    {
        lasttext[j]=0;
          for(i=0; i<8; i++) 
        {
             temp2 = IDD[k+i];    
             temp = text[temp2/8]; // get the byte
              temp &= _bitposition[temp2&0x07]; // get the bit    
            if(temp)
                lasttext[j] |= _bitposition;
        }
    }
}

使用特权

评论回复
6
xzm0662| | 2007-4-3 10:04 | 只看该作者

算法更重要,汇编能提高的效率有限,算法修改往往能提高

莫非是横向字库在纵向的显示器显示的问题?

使用特权

评论回复
7
ryansheng| | 2007-4-3 12:30 | 只看该作者

Re

关于参数传递:
EWARM_CompilerReference.pdf --> Part 1. Using the Compiler --> Assembler language interface --> Calling convention --> Function entrance

使用特权

评论回复
8
gzhwb|  楼主 | 2007-4-3 13:48 | 只看该作者

Re

谢谢各位的回答,我是做des算法里的位移动,各位有没有更快的方法?

使用特权

评论回复
9
telnet| | 2007-4-4 11:31 | 只看该作者

加速过程

1) 程序结构优化
2) 算法的优化
3) 将代码 unrolling(这时候开始要看使用的cpu了)
4) 变成汇编,使之尽可能流水.

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

19

主题

34

帖子

0

粉丝