您当前的位置:《嵌入式系统应用开发技术》听课笔记:18
《嵌入式系统应用开发技术》听课笔记:18

S1C33可以处理8位、16位、32位数绝,每种数据代大小为:

 8位数据  字节或B

16位数据 半字或H

32位数据 字或W

当使用load指令在存储器和通用寄存器之间或两个通用寄存器之间进行数据传递时,可以选择数据的位数。

由于CPU Core按32位处理数据,所以当传递16位和8位数据到寄存器时,需要扩展成32位数据。

有寄存器传递出16位或8位数据时,分别选择低位半字或低位字节。

图register->register, memory->register, register->memory.

S1C33总共有05条指令,其中63条为基本指令;有六种寻址模式:

1. 立即寻址 立即数

2. 寄存器直接寻址 直接读写寄存器

3. 寄存器间接寻址 寄存器存放数据地址

4. 寄存器间接增量寻址 操作完成后,寄存器中地址按预先约定的增量变化,特别适用于连续读/写

5. 带偏移的寄存器间接寻址 使用一个寄存器内容为基本地址,直接输为偏移值。

6. 符号PC相关寻址 用于分支指令

S1C33指令分为13类:

1) 立即扩展指令 ext imm13 13位立即数;  ext imm13 26位立即数;add %rd,imm6 32位立即数。

2) 数据传递指令 在寄存器和存储器之间传递数据

ld.ub 无符号字符数据传递

3)  逻辑运算指令 四条  and  or  xor  not

4)  算术运算指令 五条

  add 、adc (进位加)、sub、sbc(进位减)、cmp

5)  乘除指令  四条乘指令,六条除指令,只用于内置乘法器的CPU

6) 乘与累加指令  需要内置乘法器    mac

7) 平移与旋转指令 对寄存器数据操作

        逻辑左移 sll、逻辑右移srl、算术左移sla、算术右移sra、左旋rl、右旋rr。

8) 位操作指令  四条,处理寄存器数据

       btst   [%rb], imm3    若指定位为0,置z标记。

9)    堆栈指令   两条,保存和返还通用寄存器内容,必须成对出现

      pushn %r5     ,           popn%r5

10)  分支指令  分成 jr*与jp指令两类。

                       分支指令 .d    如call.d

11)  系统控制指令   三条,不影响寄存器

       nop (空指令)   halt(置HALT模式)  sleep(置SLEEP模式)

12) 扫描指令 两条  scan0    高8位的第一个0   

                                  scan1    高8位的第一个1

13)  交换与镜像指令  两条  swap(交换)、mirror(镜像)

3.3.9中断处理程序      陷阱因子   中断处理

收藏状态
收藏本课程的同学
相关课程