概要
指令要素
指令表示
指令格式
操作码
控制转移
把返回的地址放在过程的开始:前提是过程开始处的地址不会被修改。如果proc2调用了proc2自身,覆盖了原来的地址,无法实现递归。
操作数
地址
逻辑数据
大端序和小端序
小端序不是 87654321
大端序:低位的数值放在地址较大的位置
小端序:低位的数值放在地址较小的位置0
以字节为单位是反序的,而不是以比特为单位
寻址方式
立即寻址
直接寻址
间接寻址
寄存器直接寻址
寄存器间接寻址
偏移寻址
- 相对于谁在偏移
偏移寻址:相对寻址
- 相对于指令中的下一条的距离
- 隐式的使用PC,在原指令中并没有提到要使用PC
偏移寻址:基址寄存器寻址
- 可以显式使用,也可以隐式使用
- 相对于存在寄存器中的基地址的偏移
偏移寻址:变址寻址
- A是固定的,变址寄存器是在变化的。例如:数组的遍历
栈寻址
- 栈指针是隐含的地址
中缀变后缀:
- 利用两个栈,结果栈和操作符栈
- 遍历中缀表达式
- 遇到操作数:直接压入结果栈
- 遇到操作符:
- 如果是左括号,直接压入栈。并且左括号的优先级最小
- 如果是右括号,则循环出栈,直到弹出一个左括号为止,并将中间的操作符全部压入结果栈
- 如果是普通操作符,判断与栈顶的优先级大小关系。如果优先级更大,则压入栈;如果优先级小于等于,则循环出栈,直到栈顶的优先级小于该优先级或者操作符栈为空为止
- 遍历结束后,将操作符栈中剩余的操作符全部压入结果栈中