Le macchine virtuali basate su stack come CLR e JVM hanno un set di istruzioni diverso. C'è qualche teoria dietro la creazione del set di istruzioni durante la creazione di una macchina virtuale? per esempio. ci sono set di istruzioni JVM per caricare le costanti da 0-5 nello stack
iconst_0
iconst_1
iconst_2
iconst_3
iconst_4
iconst_5
mentre in CLR ci sono istruzioni impostate per caricare il numero da 0 a 8 nello stack come segue
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
perché non c'è ldc.i4.9 e se ldc.i4 è lì perché abbiamo bisogno degli opcode precedenti? E ce ne sono altri come questi.
Sono ansioso di sapere qual è la ragione alla base di questa differenza tra gli opcode di diverse VM? C'è qualche teoria specifica per escogitare questi opcode o è totalmente guidata dalle caratteristiche della VM stessa o dipende dai costrutti del linguaggio di alto livello?