指令系统

本章重点是掌握拓展操作码的方法和寻址方式及其对应的名称。

指令格式

file

操作码 + 地址码

定长:指令系统中所有指令的二进制位数相同
变长:可以不同

地址码

单地址、双地址、三地址、零地址等。

零地址是事先约定好的地址,如栈顶、次栈顶、累加器等。

随着地址段位数增长,会导致指令过长,且会导致程序设计的灵活性变差。

操作码

规整型

操作码长度固定,指令码长度可变。

非规整型

操作码长度不固定,指令码长度固定。

指令码长度固定,因此若要增长操作码,就需要缩短地址码。
在拓展操作码时,长码的开始部分不能和短码相同。

file

可以看到,拓展时,高位都是1111,而短码高位不存在1111的编码。

分配操作码时,如果找不到思路,可以把所有排列组合列出来再考虑。

指令类型

数据传送类

  • 一般传送指令:复制到目的地址,MOV、LOAD、STORE
  • 堆栈操作指令:PUSH、POP
  • 数据交换指令:XCHG

运算类

程序控制类

中断隐指令不能归属于程序控制类指令。

转子指令(转向子程序)需要子程序地址,转子前需将当前PC值压入堆栈。子程序返回和中断返回都是零地址指令,地址由SP给出。

file

输入输出类

若I/O设备与内存独立编址,则需要单独设置访存和访I/O命令。

寻址技术

指令寻址

通常采用顺序寻址或跳跃寻址。

数据寻址(重点)

file

从形式地址获取有效地址。

  • 立即寻址:地址字段直接存放操作数;
  • 直接寻址:形式地址就是有效地址;
  • 间接寻址:形式地址是有效地址的地址,可以形成多级间接寻址;
  • 寄存器寻址:操作在某一CPU的通用寄存器中;
  • 寄存器间接寻址:有效地址在某一CPU的通用寄存器中,可缩短形式地址;
  • 隐含寻址:指令操作码隐含操作数地址(如约定使用某一寄存器);
  • 变址寻址:有效地址=变址寄存器内容Rx+形式地址(偏移量),适用于操作数据块;
    变化的是变址寄存器Rx的内容,可由用户修改。
  • 基址寻址:有效地址=基址寄存器内容+形式地址(位移量);
    变化的是形式地址内容,基址寄存器的内容是固定的。
  • 相对寻址:PC+偏移量,指出操作数和现行指令间的相对位置;
  • 页面寻址:将主存空间分页,指令中只给出业内地址;
    零页寻址即在第零页寻址;
    当前页寻址即在PC所在页面寻址;
    页寄存器寻址则表示页号在页寄存器中,与形式地址拼接形成有效地址。
  • 其它寻址:位寻址(寻址到位),块寻址(对连续的块进行寻址),堆栈寻址(由堆栈指针SP隐含制定)。

变型或组合寻址方式

  • 自增自减寄存器间址:确定有效地址后,递增或递减寄存器内容。
  • 拓展变址方式:
    file
  • 基址变址寻址:
    file

堆栈

寄存器堆栈(硬堆栈)

无需栈顶指针。

软堆栈

SP指向栈顶。

RISC特点

file

  • 指令长度固定!
  • 基本思想就是精简、高使用频率!精简不是简陋,并不是回到CISC前的水平。

.
.
.
.
.

部分图片来自马永强老师的PPT。

暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇