Recentemente per divertimento ho deciso di costruire una programmazione giocattolo, un compilatore e un registro di basso livello interpretato vm. Durante l'implementazione della macchina virtuale sono rimasto bloccato. Lo stack che contiene le variabili e le strutture che ho implementato come matrici separate per ogni tipo. Il problema è quando ho un riferimento a una struct gli elementi non sono allineati, int struct.x potrebbe essere all'indirizzo 1, e float struct.y potrebbe essere all'indirizzo 0, quindi l'accesso alla struct da un riferimento sarebbe impossibile, perché gli indici non sono lineari. Come potrei risolvere questo?
stack int:
//other 0: 5,
//x 1: 67
stack long:
//y 0: 56
stack reference:
//pointer to x, struct access like c array: #00x01
Per ogni tipo intendo per ogni primitivo. So che potrei implementarlo con i sindacati, ma voglio imparare come è realmente implementato in java, c ++ o c #, che è un po 'il punto di fare un linguaggio giocattolo, per capire meglio cosa stai programmando.