-
Notifications
You must be signed in to change notification settings - Fork 0
03.TheCodeWindow
En esta sección se muestra el proceso para almacenar el código a ejecutar que se encuentra en la memoria, esto nos permite visualizar las instrucciones, los registros y los datos que se insertan en la memoria.
En esta ventana se nos muestra la dirección de memoria en formato hexadecimal, el texto que representa al label junto al desplazamiento, así como el binario de su representación, el formato hexadecimal, el stage que se encuentra y la instrucción en sí.
Además, nos permite una representación sencilla de la ejecución en el cauce (Pipeline).
Al realizar una simulación, esta ventana nos muestra un color representativo de la etapa en la que se encuentra cada instrucción en el pipeline.
Podemos pedir directamente al servidor que nos genere el código máquina de nuestro código, para ello usamos los
eventos CodeRequest enviando el mensaje con el tipo de dato TypeFile
, el servidor nos responderá por el evento **
CodeResponse** con las instrucciones máquina en una lista de objetos de tipo TypeCodeResponse
.
export type TypeFile = {
content: string;
// ...
}
export type TypeDirectiveData = {
address: TypeAddress;
hexValue: string;
text: string;
directive: TypeDirective;
};
export type TypeInstructionsData = {
address: TypeAddress;
code: string;
text?: string;
instruction: string;
};
export type TypeCodeResponse = {
machineDirectives: TypeDirectiveData[],
machineInstructions: TypeInstructionsData[],
};
{
"id": "",
"filename": "prim.s",
"date": "2021-08-28T10:25:00.000Z",
"canSimulate": true,
"lines": 68,
"machineDirectives": [ {
"address": "0x00000000", "text": "COUNT",
"hexValue": "0x0000000A", "directive": "WORD"
} ],
"machineInstructions": [ {
"address": "0x00000100", "text": "$TEXT",
"code": "0x20010000", "instruction": "ADDI R1, R0, 0x0"
}, {
"address": "0x00000104", "text": "MAIN+0x4",
"code": "0x20020002", "instruction": "ADDI R2, R0, 0x2"
} ],
"runner": [ {
"step": 0,
"line": 0,
"isNewInstruction": false,
"pipeline": {
"IF": {
"address": "", "addressRow": 0, "draw": false
},
"ID": {
"address": "", "addressRow": 0, "draw": false
},
"intEX": {
"address": "", "addressRow": 0, "draw": false
},
"MEM": {
"address": "", "addressRow": 0, "draw": false
},
"WB": {
"address": "", "addressRow": 0, "draw": false
},
"faddEX": [],
"fmultEX": [],
"fdivEX": [],
"arrows": []
},
"registers": [],
"memory": [],
"statistics": {}
} ]
}