1.LTORG 用于声明一个数据缓冲池(Literal pool))的开始。 句法: LTORG 用法: 通常ARM汇编编译器把数据缓冲池放在代码段的最下 面,即下一个代码段开始之前,或在END之前。 该指令通常放在无条件分支指令之后,或者子程序返回 指令之后,这样处理器就不会错误地将数据缓冲池中 的数据当作指令来执行了。 当程序中使用LDFD之类的指令时,数据缓冲池的使用可 能越界。这时可以使用LTORG定义数据缓冲池。通 常大的代码段可以使用多个数据缓冲池
1. LTORG • 用于声明一个数据缓冲池(Literal pool)的开始。 • 句法: LTORG • 用法: 通常ARM汇编编译器把数据缓冲池放在代码段的最下 面,即下一个代码段开始之前,或在END之前。 该指令通常放在无条件分支指令之后,或者子程序返回 指令之后,这样处理器就不会错误地将数据缓冲池中 的数据当作指令来执行了。 当程序中使用LDFD之类的指令时,数据缓冲池的使用可 能越界。这时可以使用LTORG定义数据缓冲池。通 常大的代码段可以使用多个数据缓冲池
2.MAP ∧ 用于定义一个结构化的内存表的首地址。此时, 内存表的位置计数器设置成该地址。 句法: MAP expr {base-register} 其中:expr为数字表达式或者程序中的标号。当指令中 没用base-registerl时,expr即为结构化内存表的首地 址。base-register为一寄存器。当指令包括这一项 时,结构化内存表的首地址为expr和base-register寄 存器值的和。 用法: MAP和FIELD伪操作配合使用来定义结构化的内存表。 例子:MAP0x80,R9;内存表的首地址为0x80+R9
2. MAP ^ • 用于定义一个结构化的内存表的首地址。此时, 内存表的位置计数器设置成该地址。 • 句法: MAP expr {,base-register} 其中:expr为数字表达式或者程序中的标号。当指令中 没用base-register时,expr即为结构化内存表的首地 址。base-register为一寄存器。当指令包括这一项 时,结构化内存表的首地址为expr和base-register寄 存器值的和。 • 用法: MAP和FIELD伪操作配合使用来定义结构化的内存表。 • 例子: MAP 0x80,R9;内存表的首地址为0x80+R9
3.FIELD 并 用于定义一个结构化的内存表的数据域。 句法: Hlabel FIELD expr 其中:{label)是可选的。当包括这一项时,labell的值为 当前内存表的位置计数器VAR}的值。处理了这条 FIELD伪操作后,VAR的值将加上expr。 expr表示本数据域在内存表中所占的字节数。 用法: MAP和FIELD伪操作配合使用来定义结构化的内存表结 构,MAP定义了首地址,FIELD定义了各数据域的字 节长度,并为每个数据域定义了一个标号。 MAP和FELD仅仅是定义数据结构,它们并不实际分配 内存单元
3. FIELD # • 用于定义一个结构化的内存表的数据域。 • 句法: {label} FIELD expr 其中:{label}是可选的。当包括这一项时,label的值为 当前内存表的位置计数器{VAR}的值。处理了这条 FIELD伪操作后,VAR的值将加上expr。 expr表示本数据域在内存表中所占的字节数。 • 用法: MAP和FIELD伪操作配合使用来定义结构化的内存表结 构,MAP定义了首地址,FIELD定义了各数据域的字 节长度,并为每个数据域定义了一个标号。 MAP和FIELD仅仅是定义数据结构,它们并不实际分配 内存单元
·例子: 定义一个内存表,其首地址为固定地址4096(0x1000),该内 存表中包含5个数据域:consta和constb长度分别为4个字 节;x和y长度分别为8个字节;string长度为256字节。这 种内存表称为基于绝对地址的内存表。 MAP 4096 consta FIELD 4 constb FIELD 4 X FIELD 8 y FIELD 8 string FIELD 256 在指令中,可以这样引用内存表的数据域: LDR R6,consta
• 例子: 定义一个内存表,其首地址为固定地址4096(0x1000),该内 存表中包含5个数据域:consta和constb长度分别为4个字 节;x和y长度分别为8个字节;string长度为256字节。这 种内存表称为基于绝对地址的内存表。 MAP 4096 consta FIELD 4 constb FIELD 4 x FIELD 8 y FIELD 8 string FIELD 256 在指令中,可以这样引用内存表的数据域: LDR R6,consta
4.SPACE % 用于分配一块内存单元,并用0初始化。 句法: flabel}SPACE expr 其中,label是可选的。expr表示本伪操作分配的内存字 节数。 例子: Datastruc SAPCE 280 ;分配280字节的内存 ;并将单元内容初始化为0
4. SPACE % • 用于分配一块内存单元,并用0初始化。 • 句法: {label} SPACE expr 其中,label是可选的。expr表示本伪操作分配的内存字 节数。 • 例子: Datastruc SAPCE 280 ;分配280字节的内存 ;并将单元内容初始化为0