Chinaunix首页 | 论坛 | 博客
  • 博客访问: 130466
  • 博文数量: 30
  • 博客积分: 972
  • 博客等级: 中士
  • 技术积分: 332
  • 用 户 组: 普通用户
  • 注册时间: 2012-02-08 10:04
文章分类

全部博文(30)

文章存档

2012年(30)

分类: WINDOWS

2012-11-22 11:40:16

1.首先设置编译规则:
一. 创建编译规则


  
               Name="Arm asm" DisplayName="Arm asm"
         CommandLine="armasm -o "$(IntDir)\$(InputName).obj" [$Inputs] "
         Outputs="$(IntDir)\$(InputName).obj"
         FileExtensions="*.asm"
         ExecutionDescription="Executing tool..."
      >
     
     

  

将上面的代码复制到记事本中,并将其保存到vs2005安装目录的Microsoft Visual Studio 8\VC\VCProjectDefaults文件夹下,命名为armcc.rules
 
**注:armasm为ARM汇编器,通过以上的xml及执行commandline进行编译。
 
2.然后再自己的工程中添加汇编源码,由于规则定义扩展名为*.asm。故添加时后缀必须为asm。
 AREA    |.text|, CODE
 
 EXPORT ARMCPUID
ARMCPUID PROC
   MRS R0,CPSR          ;把CPSR读取到R0
   bic r1, r1, #0x1f    ;清除低5位
   MOV R1,#0x13         ;设置R1 为0b10001
   ORR R0,R0,R1         ;R0和R1相或,设置低5位   
   MSR CPSR,R0          ;把R0的值重新赋值到CPSR
   
   MRC p15, 0, R0, c0, c0 ,0
   ENDP
   LTORG      ; allow room for the address constant of our global (loaded relative to PC)
END
注意:ARM汇编的语句格式,tab键。
 
3.cpp源码中调用ARMCPUID()

extern "C"    //由于C++与C 编译器对函数处理不同,故必须告诉编译器以下为c函数。
{
     int iGlobal;
     int ARMCPUID(int, int, int , int);
}
int _tmain(int argc, _TCHAR* argv[])
{
 int iResult;
 TCHAR szTemp[256];
   iGlobal = 5;
   iResult = ARMCPUID(1,2,3,4);
   wsprintf(szTemp, L"Result = %d", iResult);
   MessageBox(HWND_DESKTOP, szTemp, L"ASM Result", MB_OK);
 return 0;
}
 
4.编译时设置编译规则
选择需要和ARM汇编代码做混合编译的Project,右键弹出的菜单中选择"Custom Build Rules...”,在弹出的对话框中点"Find Existing..."按钮,选择armcc.rules文件。
 
以上四个步骤就可以实现vs2005中跑汇编程序,提高程序的运行速度。
阅读(3805) | 评论(0) | 转发(0) |
0

上一篇:重新上线

下一篇:OHCI,EHCI,UHCI

给主人留下些什么吧!~~