atitit 指令集概论原理导论 艾提拉著
目录
1. 指令集(IA:InstructionSet)是指CPU指令系统所能识别(翻译)执行的全部指令的集合。 1 2
1.4. (1)运算指令 令包括算术运算指令、逻辑运算指令和移位指令 2
2. Atitit.php opcode虚拟机指令集 分类以及详细解释 3
5. Atitit..net clr il指令集 以及指令分类 与指令详细说明 4
7. Atitit。虚拟机指令集 的文本形式语法 二进制形式的规范 5
- 3 CISC和RISC 复杂指令集
- (CISC,Complex InstructionSet Computer)和精简指令集(RISC,Reduced Instruction Set Computer) 2
处理器要完成计算任务,需要具备以下几种指令类型。
-
- (1)运算指令 令包括算术运算指令、逻辑运算指令和移位指令
运算由运算器单元(ALU)实现,指令包括算术运算指令、逻辑运算指令和移位指令。
算术运算指令实现加减乘除(+-*/)等基本的算术运算;逻辑运算指令实现与或非(&|~)等基本的逻辑运算;移位指令实现二进制比特位(bit)的左右移(<<>>)运算。
-
- (2)控制指令
除了做计算外,CPU还要实现循环。循环是由跳转指令实现的,跳回去执行就是循环。循环在一定条件下跳出,否则就成死循环了,条件跳转指令能完成这个功能。条件跳转指令在一定条件下实现跳转,它能实现分支功能。跳转指令也称为控制指令。控制由CPU控制器单元实现。
-
- (3)数据传送指令
运算和控制指令的操作数从哪里来的呢?操作数都放在存储器中。在x86 IA中,运算指令的操作数既可以是寄存器,也可以是存储器;而在其他RISCIA例如MIPS中,运算指令的操作数只能是寄存器,因此需要先使用加载(load)指令将存储器中的数据导入到寄存器中,运算完成后,再用存储(store)指令将寄存器中的运算结果数据导出到存储器中。这类指令就是数据传送指令。
有了这三类指令,CPU就能完成各种复杂的运算。
1.指令集常用分类::
Mov移动指令
算数逻辑移位指令
跳转指令
Oo指令
类型转换指令
2.与jvm clr指令集合对比
Php的静静136条指令,jvm clr都二百多了。。
2.1. 变量到操作数栈: 2
2.2. 算数指令 3
2.3. 移位指令 3
2.4. 逻辑指令 4
2.5. 流程跳转指令 4
2.6. Oo指令 4
2.7. 运算指令 5
1. 一、未归类系列A 1
2. 数据mov系列 2
2.1. 二、const系列 2
2.2. 三、push系列 2
2.3. ldc系列 该系列命令负责把数值常量或String常量值从常量池中推送至栈顶。 3
2.4. 5.1、load系列A 该系列命令负责把本地变量的送到栈顶。 3
2.5. 5.2、load系列B 该系列命令负责把数组的某项送到栈顶。 4
2.6. 6.1、store系列A 该系列命令负责把栈顶的值存入本地变量。 5
2.7. 6.2、store系列B 该系列命令负责把栈顶项的值存到数组里。 7
2.8. 七、pop系列 8
2.9. 类型转化系列 9
3. 八、栈顶元素数学操作及移位操作系列 10
4. 十二、比较指令系列A 12
4.1. 十四、无条件跳转指令系列A 13
4.2. 十五、返回指令系列 13
4.3. 二十四、有条件跳转指令系列B 13
4.4. 二十五、无条件跳转指令系列B 14
5. Oo指令 14
5.1. 十六、域操作指令系列 14
5.2. 十七、方法操作命令系列 14
5.3. 十九、new及数组系列 15
5.4. 二十、异常抛出指令 15
5.5. 二十一、对象操作指令 15
6. 参考 16
1.1. .NET CLR 和 Java VM 都是堆叠式虚拟机器(Stack-Based VM), 1
1.2. 查看工具ILDASM 1
1.3. 此程式执行时,关键的记忆体有三种,分別是: 1
1.4. Il指令集 2
1.4.1. Mov指令 3
1.4.2. 跳转指令集合 6
1.4.3. 算术 逻辑 与移位指令 8
1.4.4. 类型转换 9
1.4.5. Other and oo指令 10
Atitti 指令集 与操作符 运算符 与函数
1.4. 6.2 8051指令集 6.2.1 数据传输指令 6.2.2 算术运算指令 6.2.3 逻辑指令 6.2.4 布尔运算指令 6.2.5 程序控制转移指令 2
1.5. Java .net php都大月256个指令左右 2
JavaVM 有約 200 个指令(Instruction),每个指令都是 1 byte 的 opcode(操作码),后面接不等数目的参数;
.NET CLR 有超过220个指令,
目前5.3.2版本的PHP中,opcode一共有154种
response header
response headerresponse header
CIL(Common Intermediate Language) / MSIL vs Java字节码 CIL不仅有二进制形式的规范,而且还有标准的文本形式语法;Java字节码只有二进制形式的规范 局部变量区里无论什么类型的值都使用1个slot,而JVM则是long和double用相邻的2个slot
Atitit 汇编语言指令集合