您的位置 首页 软件

关于ARM汇编里的特殊符号

先前企图全部靠自己写一个bootloader,结果尝试了下,花了4天时间查各种技术资料,写了个startup.s文件出来,写的过程中才发现,原来还有很…

从前妄图悉数靠自己写一个bootloader,成果尝试了下,花了4天时刻查各种技术资料,写了个startup.s文件出来,写的过程中才发现,本来还有许多问题是我根本上不知道的,比如说怎样进行ARM的位操作、怎样将仓库设置到RAM中、UART的波特率计算方法等问题。

在边写边查资料的过程中,我又发现了他人的一些程序我看不懂。。。由于除了EQU、DCD等我根本不必伪指令。。。

所以我开端看44B0 BootLoader的典范程序,可能是人家水平真实比较高,也可能是俺的水平的确有限,总归是有些当地看不怎样懂,特别是一些个特殊符号,现特将那些个费事的符号总结下:

特殊符号 | 对应指令 | 意义 | 示例

——————-|———————————|———————————-|—————————————

^ | MAP | 界说结构化内存表 | MAP 4096;内存表首地

| | | 址为4096

——————-|———————————|———————————-|—————————————

# | FIELD | 界说内存表中的数 | MAP 4096

| | 据,结合MAP指令 | STACKSVC FIELD 256;

| | 运用。 | 界说从4096开端的256字节

| | |为SVC的仓库空间。

——————-|———————————|———————————-|—————————————

% | SPACE | 分配一块内存,并 | DataStruc SPACE 280

| | 用“0”初始化 | 分配280字节内存并初始化

——————-|———————————|———————————-|—————————————

[|] | IF ELSE ENDIF | 条件编译,有挑选的 | IF 逻辑表达式

| | 确认需求编译的代码 | 指令或伪指令

| | IF,ELSE,ENDIF | ELSE

| | 能够嵌套运用 | 指令或伪指令

| | | ENDIF

——————-|———————————|———————————-|—————————————

别的还有符号: $

假如在串变量前有一个$则在汇编时编译器将用该串变量的数值替代该串变量,如:

GBLS STR1

GBLS STR2

STR1 SETS “pen.”

STR2 SETS “This is a $STR1″

编译后的成果是STR2的值为This is a pen.

假如$后是数字变量(与串变量区别),在汇编时编译器将该数字变量的数值转换成十六进制的串,然后用该十六进制的串替代$后的数字变量。

假如$后是逻辑变量,在汇编时编译器将该逻辑变量替换成它的取值(T或许F)。

假如程序中需求$,则用$$来表明,编译器将不进行变量替换。

GBLS STR1

GBLS B

GBLA NUM1

NUM1 SETA 14

B SETS “CHANGED”

STR1 SETS “abc$$B$NUM1”

编译成果STR1的值为:abcB0000000E。

留意:在两个竖线“|”之间的$并不表明进行变量替换,但假如“|”是在双引号内,则将进行变量替换。

运用点”.”来表明变量名的完毕。

GBLS STR1

GBLS STR2

STR1 SETS “AAA”

STR2 SETS “bbb$STR1.CCC”

编译成果STR2值为bbbAAACCC

还有一个破例:“%”

“%”除了表明SPACE外还能够在部分标号中运用,详细意思见伪指令ROUT的运用示例:

◆ROUT

ROUT伪指令界说部分标好的有用规模

伪指令格局如下

{name} ROUT

其间 name 所界说的效果规模的称号

当没有运用ROUT伪指令时,部分标号的效果规模地点段ROUT伪令的效果范

围在本ROUT伪指令和下一个ROUT伪指令之间(指同一段中的ROUT伪指令)

伪指令使用举例如下:

routineA ROUT ;界说部分标号的有用规模,称号为routineA

……

3routineA ;routineA规模内的部分标号3

……

BEQ %4routineA ;若条件建立,跳转到routineA规模内的部分标号 4

……

BEQ %3routineA ;若条件建立,跳转到routineA范Iq内的部分标号 3

……

4routineA ;routineA规模内的部分标号4

……

otherstuff ROUT ;界说新的部分标号的有用规模

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/qianrushi/ruanjian/275663.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部