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本身的特性驅動還是依賴於高級語言結構?