1
基于堆栈的虚拟机(如CLR和JVM)具有不同的指令集。在创建虚拟机时,是否有任何理论在设计指令集?例如有JVM指令集来加载从0-5常量到堆栈如何设计基于堆栈的机器的指令集?
iconst_0
iconst_1
iconst_2
iconst_3
iconst_4
iconst_5
而在CLR有指令集以从0数加载到8到堆栈如下
ldc.i4.0
ldc.i4.1
ldc.i4.2
ldc.i4.3
ldc.i4.4
ldc.i4.5
ldc.i4.6
ldc.i4.7
ldc.i4.8
为什么有是ldc.i4.9
,如果ldc.i4 <int32 (num)>
是为什么我们需要上述操作码?还有其他人喜欢这些。
我很想知道不同虚拟机操作码之间差异的原因是什么?是否有任何特定的理论来设计这些操作码,或者完全由VM本身的特性驱动还是依赖于高级语言结构?