前言:
工作中多多少少会接触到汇编,大部分都是前人写好的。最近在学习操作系统,下定决心开始汇编学习。
准备工作
cpu的指令集是固定的,但是编译器的差别会影响汇编语言。这里主要学习IAR的汇编。参考文件EWARM_AssemblerReference。可以在IAR的help选项中下载得到。本系列是以参考文档顺序学习的
开始
-
External interface details (Page19)外部接口
- 命令行相关的操作,预留
-
Source format(Page21) 代码格式
[label [:]] [operation] [operands] [; comment]
label 代表内存地址,如果是行的第一个,那么必须靠左,其中冒号是可选的
operation 不能是第一行,前面必须留空格 -
expression,operads,operators(Page22) 表达式,操作数,操作符
operators 都是对32位的int类型数据进行运算。
operads 操作数可以保护,常量的地址或值,PLC,自定义Symbols。
expression 不能包含Symbolssymbols:
- 汇编内置指令忽略大小写,但是symblos不支持。
- 使用 public 可以使外部模块调用symbols
- 使用extern 可以调用外部symbols
- label是特殊的symbols,指向内存地址。
-
REGISTER SYMBOLS(Page25 ) 寄存器的symbols
- 不同的内核可用的寄存器可能不同
- 不同的内核可用的寄存器可能不同
-
PREDEFINED SYMBOLS(Page25)预定义的symbols
列举几个常用symbol- _ CORE _ 查看内核
- _ LINE _ 当前代码行
- _ VER _ 编译器版本
-
Lst文件格式(Page30)
-
Assembler options(Page43-63)
- 命令行调用iasmarm