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

疾风之狼博客

 
 
 

日志

 
 

ARMIPS assembler使用说明  

2017-08-08 15:47:36|  分类: 默认分类 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

ARMIPS assembler是一款ARM/MIPS汇编工具,他是命令行工具,支持ARM7/ARM9/MIPS R3000/MIPS R4000
ARMIPS assembler作者是Kingcom,目前发展到0.9版本
Kingcom's website:http://aerie.wingdreams.net
ARMIPS assembler源代码可去https://github.com/Kingcom/armips获得
更新版本可去http://buildbot.orphis.net/armips获得
ARMIPS assembler特点支持加载ROM并自动编译代码到ROM,省了使用16进制编辑器复制代码进ROM,进行ROM HACK更方便了。
ARMIPS命令行用法:
Usage: armips [optional parameters] <FILE>
Optional parameters:
 -temp <TEMP>         Output temporary assembly data to <TEMP> file
 -sym  <SYM>          Output symbol data in the sym format to <SYM> file
 -sym2 <SYM2>         Output symbol data in the sym2 format to <SYM2> file
 -root <ROOT>         Use <ROOT> as working directory during execution
 -equ  <NAME> <VAL>   Equivalent to '<NAME> equ <VAL>' in code
 -strequ <NAME> <VAL> Equivalent to '<NAME> equ "<VAL>"' in code
 -erroronwarning      Treat all warnings like errors
File arguments:
 <FILE>               Main assembly code file
-temp <TEMP>参数是将临时汇编数据输出到<TEMP>文件
-sym <SYM>参数是将sym格式符号输出到<SYM>文件,这格式支持no$psx和no$gba
-sym2 <SYM2>参数是将sym2格式符号输出到<SYM2>文件,这格式支持pcsx2和ppsspp
-root <ROOT>参数是指定执行期间要使用的工作目录
-equ <NAME> <VAL>参数用法不明
-strequ <NAME> <VAL>参数用法不明
-erroronwarning参数是当出现任何警告时被视为错误,防止继续编译
<FILE>是汇编代码文件,可用记事本之类编辑
注释说明:
注释可在单行指令后面“;”和“//”添加
“/* */”式也接受
例子:
.open"1234.gba",0x08000000;//打开1234.gba文件,并将起始地址定义为0x08000000
.close;/*关闭文件*/
标签说明:
标签名可以包含A~Z字母和数字、下划线。但是它不能以数字开头,所有标签名称不区分大小写。
数值说明:
“0xA”和“0Ah”是16进制数值
“0o12”和“12o”是8进制数值
“1010b”和“0b1010”是2进制数值
equ说明:
格式:text equ value
说明:用一个text代替value
例子:
address1 equ 0x12345678
ldr r0,=address1
.pool
函数说明:
.open函数:
格式:
.open "ROM FileName",offset
.open "Old FileName","New FileName",offset
说明:.open函数打开ROM文件,并将ROM文件起始地址设置为offset地址。但结果指定了2个文件,汇编器会将文件复制到第二个路径。
例子:
.open "1234.gba",0x08000000
.close函数和.closefile函数:
格式:
.close
.closefile
说明:关闭文件。
.org函数和.orga函数:
格式:
.org RamAddress
.orga FileAddress
说明:
前面用.open函数设置过offset地址的话,那么可以用.org函数设置offset输出地址。
.orga函数可指定ROM文件的输出地址。
.create函数和.createfile函数
格式:
.create "FileName",offset
.createfile "FileName",offset
说明:创建一个文件,如果文件是存在,他会覆盖掉。
.area函数
格式:
.area SizeEquation[,fill]
.endarea
说明:如果你要向某地址写入一定字节数值,就用.area函数,SizeEquation是能写入最大字节数,超过就编译失败
例子:向0x100地址写入0x5,0x6,0x7,0x8单字节数据
org 0x100
.area 0x8
byte 0x5,0x6,0x7,0x8
.endarea
.align函数
格式:.align num
说明:写零字节,num为零字节数量,用16进制表示。
.pool函数
格式:.pool
说明:如果代码中有“ldr rx,=value”,就要用.pool对齐。
例子:
ldr r0,=0x12345678;
....
.pool
.fill函数
格式:
.fill length[,value]
defs length[,value]
说明:填充一定长度单字节数值,如果未指定value,而填充零字节数值;length和value用16进制表示。
.skip函数:
格式:.skip length
说明:跳过指定长度单字节数值,length用16进制表示。
写单字节:
.byte value[,...]
.db value[,...]
.ascii value[,...]
.asciiz value[,...]
dcb value[,...]
写双字节:
.halfword value[,...]
.dh value[,...]
dcw value[,...]
写四字节:
.word value[,...]
.dw value[,...]
dcd value[,...]
写doublewords:
.doubleword value[,...]
.dd value[,...]
dcq value[,...]
写浮点数:
.float value[,...]
.double value[,...]
ARM的ARM模式和THUMB模式定义:
.arm|ARM模式
.thumb|thumb模式
设置架构:
.psx|PlayStation 1(MIPS R3000)
.ps2|PlayStation 2(EmotionEngine)
.psp|PlayStation Portable(Allegrex)
.n64|Nintendo 64(MIPS R4000)
.rsp|Nintendo 64(RSP)
.gba|GameBoy Advance(ARM7,默认是thumb模式)
.nds|Nintendo DS(ARM9,默认是ARM模式)
.3ds|Nintendo 3DS(ARM11,默认是ARM模式)
.arm.big|
.arm.little|
常用函数就写这些了,还有大量函数说明没写,更多说明看readme.md吧。
  评论这张
 
阅读(18)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

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

页脚

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