4.2指令集介绍 ·ARM指令集一条件码 示例: C代码: 对应的汇编代码: If(a b) CMP R0,R1 ;R0与R1比较 a++; ADDHI R0,R0,#1;若R0>R1,则R0=R0+1 Else ADDLS R1,R1,#1;若R0≤1,则R1=R1+1 b++;
4.2 指令集介绍 • ARM指令集——条件码 C代码: If(a > b) a++; Else b++; 对应的汇编代码: CMP R0,R1 ;R0与R1比较 ADDHI R0,R0,#1 ;若R0>R1,则R0=R0+1 ADDLS R1,R1,#1 ;若R0≤1,则R1=R1+1 示例:
ARM指令小节目录 1.指令格式 2.条件码 3.存储器访问指令 4.数据处理指令 5.乘法指令 6.ARM分支指令 7.协处理器指令 8.杂项指令 9.伪指令
ARM指令小节目录 1.指令格式 2.条件码 3.存储器访问指令 4.数据处理指令 5.乘法指令 6.ARM分支指令 7.协处理器指令 8.杂项指令 9.伪指令
4.2指令集介绍 ·ARM指令集一存储器访问指令 ARM处理器是典型的RISC处理器,对存储器的 访问只能使用加载和存储指令实现。ARM处理器是 冯·诺依曼存储结构,程序空间、RAM空间及/○映 射空间统一编址,除对RAM操作以外,对外围○、 程序数据的访问均要通过加载/存储指令进行。 存储器访问指令分为单寄存器操作指令和多寄 存器操作指令
4.2 指令集介绍 • ARM指令集——存储器访问指令 ARM处理器是典型的RISC处理器,对存储器的 访问只能使用加载和存储指令实现。ARM处理器是 冯•诺依曼存储结构,程序空间、RAM空间及I/O映 射空间统一编址,除对RAM操作以外,对外围IO、 程序数据的访问均要通过加载/存储指令进行。 存储器访问指令分为单寄存器操作指令和多寄 存器操作指令
·ARM存储器访问指令一单寄存器加载 助记符 说明 操作 条件码位置 LDR Rd,addressing 加载字数据 Rd←[addressing], addressing?索引 LDR{cond} LDRB Rd,addressing 加载无符号字节数据 Rd←[addressing], addressing?索引 LDR{cond}B LDRT Rd,addressing 以用户模式加载字数 Rd←[addressing], 据 addressing?索引 LDR(cond}T LDRBT Rd,addressing 以用户模式加载无符 Rd←[addressing], 号字节数据 addressing?索引 LDR{cond}BT LDRH Rd,addressing 加载无符号半字数据 Rd←[addressing]., addressing索引 LDR(cond}H LDRSB Rd,addressing 加载有符号字节数据 Rd←[addressing]., addressing?索引 LDR{cond}SB LDRSH Rd,addressing 加载有符号半字数据 Rd-[addressing], addressing索引 LDR{cond)SH
助记符 说明 操作 条件码位置 LDR Rd,addressing 加载字数据 Rd←[addressing], addressing索引 LDR{cond} LDRB Rd,addressing 加载无符号字节数据 Rd←[addressing], addressing索引 LDR{cond}B LDRT Rd,addressing 以用户模式加载字数 据 Rd←[addressing], addressing索引 LDR{cond}T LDRBT Rd, addressing 以用户模式加载无符 号字节数据 Rd←[addressing], addressing索引 LDR{cond}BT LDRH Rd, addressing 加载无符号半字数据 Rd←[addressing], addressing索引 LDR{cond}H LDRSB Rd, addressing 加载有符号字节数据 Rd←[addressing], addressing索引 LDR{cond}SB LDRSH Rd, addressing 加载有符号半字数据 Rd←[addressing], addressing索引 LDR{cond}SH • ARM存储器访问指令——单寄存器加载
·ARM存储器访问指令一单寄存器存储 助记符 说明 操作 条件码位置 STR Rd,addressing 存储字数据 [addressing]-Rd, STR{cond} addressing?索引 STRB Rd,addressing 存储字节数据 [addressing]-Rd, STR{cond}B addressing?索引 STRT Rd,addressing 以用户模式存储字数 [addressing]←Rd, STR{cond}T 据 addressing?索引l STRBT Rd,addressing 以用户模式存储字节 [addressing].←Rd, STR{cond}BT 数据 addressing?索引 STRH Rd,addressing 存储半字数据 [addressing]←Rd, STR{cond}H addressing?索引 LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、 外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程 序跳转功能,这样也就实现了程序散转。 所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令” 和“半字和有待号字节加载存储指令
助记符 说明 操作 条件码位置 STR Rd, addressing 存储字数据 [addressing]←Rd, addressing索引 STR{cond} STRB Rd,addressing 存储字节数据 [addressing]←Rd, addressing索引 STR{cond}B STRT Rd,addressing 以用户模式存储字数 据 [addressing]←Rd, addressing索引 STR{cond}T STRBT Rd,addressing 以用户模式存储字节 数据 [addressing]←Rd, addressing索引 STR{cond}BT STRH Rd,addressing 存储半字数据 [addressing] ←Rd, addressing索引 STR{cond}H • ARM存储器访问指令——单寄存器存储 LDR/STR指令用于对内存变量的访问、内存缓冲区数据的访问、查表、 外围部件的控制操作等。若使用LDR指令加载数据到PC寄存器,则实现程 序跳转功能,这样也就实现了程序散转。 所有单寄存器加载/存储指令可分为“字和无符号字节加载存储指令” 和“半字和有符号字节加载存储指令