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中跑汇编程序,提高程序的运行速度。
阅读(3795) | 评论(0) | 转发(0) |