注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

疾风之狼博客

 
 
 

日志

 
 

如何用devkitpro编译ARM汇编源代码  

2013-04-03 23:49:19|  分类: GBA\NDS资料 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

最近重新下载devkitpro,虽然以前下载过devkitpro,但没研究出如何把自己写的ARM汇编源代码用devkitpro编译成机器码

这次重新下载devkitpro研究一下

首先下载devkitpro进行安装,devkitpro安装包下载页面地址:http://sourceforge.net/projects/devkitpro/files/Automated%20Installer/

先说说源代码文件编写格式:(源代码文件是纯文本格式文件,可用记事本之类编写)

例子:

.thumb
start:
push {r1-r2}
ldr r1,=0x02000A80
mov r2,#0x31
strb r2,[r1]
add r1,#0x1
mov r2,#0x38
strb r2,[r1]
pop {r1-r2}
bx r14

第一行写.thumb表示是THUMB模式,写.arm是ARM模式,或者用.code 16代替.thumb,.code 32代替.arm
之后是代码了
代码编写完毕后保存名为test.s的文件,并将test.s的文件复制到D:\devkitPro\devkitARM\bin目录下(假设我是将devkitpro是安装在\D:\devkitPro\目录下)
点击开始->运行,输入cmd回车进入命令提示符
输入:
d:回车 进入D盘
cd D:\devkitPro\devkitARM\bin回车 进入D:\devkitPro\devkitARM\bin目录
输入arm-eabi-as.exe -c test.s -o test.elf回车 将源代码编译成elf文件
再输入arm-eabi-objcopy.exe -O binary -R .note -R .comment -S test.elf test.bin回车 将elf文件转为只包含机器码bin格式文件
如果你要反汇编elf就输入arm-eabi-objdump.exe -d test.elf
假设你嫌命令太长,就做个批处理吧。 
在D:\devkitPro\devkitARM\bin目录下右键新建一个文本文档,重命名为"ca.bat"(或者其他名字也可,但扩展名一定要是bat),用记事本打开新建的bat文件,输入以下内容:

@echo off

echo usage:ca [*.s] [*.elf] [*.bin]

echo source .s to .elf

arm-eabi-as.exe -c %1 -o %2

echo .elf to binary .bin

arm-eabi-objcopy.exe -O binary -R .note -R .comment -S %2 %3

echo on

输入完毕后保存。
点击开始->运行,输入cmd回车进入命令提示符
 
输入:
 
d:回车 进入D盘
 
cd D:\devkitPro\devkitARM\bin回车 进入D:\devkitPro\devkitARM\bin目录
 
ca test.s test.elf test.bin回车 开始编译,稍等一下就可以看到在D:\devkitPro\devkitARM\bin目录下有test.elf和test.bin这2个文件生成,test.bin就是我们要的只包含机器码bin格式文件
再将批处理命令进一步简化的话:

@echo off

echo usage:ca [源代码文件名字](不包含扩展名)

echo source .s to .elf

arm-eabi-as.exe -c %1.s -o %1.elf

echo .elf to binary .bin

arm-eabi-objcopy.exe -O binary -R .note -R .comment -S %1.elf %1.bin

echo on

这样,例如源代码文件名是test.s,那么只输入ca test(不包含扩展名)就可以编译,命令够短了吧。


补充:假设要在其他目录编译,就要把D:\devkitPro\devkitARM\bin目录路径添加到环境变量。

清明节放假写这个东西,有用还是无用就看各位了。

  评论这张
 
阅读(724)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017