mirror of
https://github.com/guilhermewerner/tomasulo-simulator
synced 2025-06-15 13:24:20 +00:00
Rename instructions and registers
This commit is contained in:
@ -31,39 +31,39 @@ export default function Home() {
|
|||||||
let instructionList = [
|
let instructionList = [
|
||||||
{
|
{
|
||||||
operacao: "LD",
|
operacao: "LD",
|
||||||
registradorR: "F6",
|
registradorR: "R6",
|
||||||
registradorS: "32",
|
registradorS: "32",
|
||||||
registradorT: "R2",
|
registradorT: "R2",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
operacao: "LD",
|
operacao: "LD",
|
||||||
registradorR: "F2",
|
registradorR: "R2",
|
||||||
registradorS: "44",
|
registradorS: "44",
|
||||||
registradorT: "R3",
|
registradorT: "R3",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
operacao: "MULTD",
|
operacao: "MULT",
|
||||||
registradorR: "F0",
|
registradorR: "R0",
|
||||||
registradorS: "F2",
|
registradorS: "R2",
|
||||||
registradorT: "F4",
|
registradorT: "R4",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
operacao: "SUBD",
|
operacao: "SUB",
|
||||||
registradorR: "F8",
|
registradorR: "R8",
|
||||||
registradorS: "F2",
|
registradorS: "R2",
|
||||||
registradorT: "F6",
|
registradorT: "R6",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
operacao: "DIVD",
|
operacao: "DIV",
|
||||||
registradorR: "F10",
|
registradorR: "R10",
|
||||||
registradorS: "F0",
|
registradorS: "R0",
|
||||||
registradorT: "F6",
|
registradorT: "R6",
|
||||||
},
|
},
|
||||||
{
|
{
|
||||||
operacao: "ADDD",
|
operacao: "ADD",
|
||||||
registradorR: "F6",
|
registradorR: "R6",
|
||||||
registradorS: "F8",
|
registradorS: "R8",
|
||||||
registradorT: "F2",
|
registradorT: "R2",
|
||||||
}
|
}
|
||||||
];
|
];
|
||||||
|
|
||||||
@ -125,15 +125,13 @@ export default function Home() {
|
|||||||
>
|
>
|
||||||
<option value="">-- Select --</option>
|
<option value="">-- Select --</option>
|
||||||
<option value="ADD">ADD</option>
|
<option value="ADD">ADD</option>
|
||||||
<option value="ADDD">ADDD</option>
|
|
||||||
<option value="BEQ">BEQ</option>
|
<option value="BEQ">BEQ</option>
|
||||||
<option value="BNEZ">BNEZ</option>
|
<option value="BNEZ">BNEZ</option>
|
||||||
<option value="DADDUI">DADDUI</option>
|
<option value="DIV">DIV</option>
|
||||||
<option value="DIVD">DIVD</option>
|
|
||||||
<option value="LD">LD</option>
|
<option value="LD">LD</option>
|
||||||
<option value="MULTD">MULTD</option>
|
<option value="MULT">MULT</option>
|
||||||
<option value="SD">SD</option>
|
<option value="SD">SD</option>
|
||||||
<option value="SUBD">SUBD</option>
|
<option value="SUB">SUB</option>
|
||||||
</Form.Select>
|
</Form.Select>
|
||||||
</td>
|
</td>
|
||||||
<td>
|
<td>
|
||||||
|
113
pages/runner.js
113
pages/runner.js
@ -174,26 +174,22 @@ export default function Home() {
|
|||||||
console.log("getFunctionalUnity:", instr.operacao);
|
console.log("getFunctionalUnity:", instr.operacao);
|
||||||
|
|
||||||
switch (instr.operacao) {
|
switch (instr.operacao) {
|
||||||
case 'ADDD':
|
|
||||||
return 'Add'
|
|
||||||
case 'SUBD':
|
|
||||||
return 'Add'
|
|
||||||
case 'MULTD':
|
|
||||||
return 'Mult'
|
|
||||||
case 'DIVD':
|
|
||||||
return 'Mult'
|
|
||||||
case 'LD':
|
|
||||||
return 'Load'
|
|
||||||
case 'SD':
|
|
||||||
return 'Store'
|
|
||||||
case 'ADD':
|
case 'ADD':
|
||||||
return 'Integer'
|
return 'Add'
|
||||||
case 'DADDUI':
|
|
||||||
return 'Integer'
|
|
||||||
case 'BEQ':
|
case 'BEQ':
|
||||||
return 'Integer'
|
return 'Integer'
|
||||||
case 'BNEZ':
|
case 'BNEZ':
|
||||||
return 'Integer'
|
return 'Integer'
|
||||||
|
case 'DIV':
|
||||||
|
return 'Mult'
|
||||||
|
case 'LD':
|
||||||
|
return 'Load'
|
||||||
|
case 'MULT':
|
||||||
|
return 'Mult'
|
||||||
|
case 'SD':
|
||||||
|
return 'Store'
|
||||||
|
case 'SUB':
|
||||||
|
return 'Add'
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -227,26 +223,22 @@ export default function Home() {
|
|||||||
|
|
||||||
function getCycles(instrucao) {
|
function getCycles(instrucao) {
|
||||||
switch (instrucao.operacao) {
|
switch (instrucao.operacao) {
|
||||||
case 'ADDD':
|
|
||||||
return 1;
|
|
||||||
case 'SUBD':
|
|
||||||
return 1;
|
|
||||||
case 'MULTD':
|
|
||||||
return 1;
|
|
||||||
case 'DIVD':
|
|
||||||
return 1;
|
|
||||||
case 'LD':
|
|
||||||
return 1;
|
|
||||||
case 'SD':
|
|
||||||
return 1;
|
|
||||||
case 'ADD':
|
case 'ADD':
|
||||||
return 1;
|
return 1;
|
||||||
case 'DADDUI':
|
|
||||||
return 1;
|
|
||||||
case 'BEQ':
|
case 'BEQ':
|
||||||
return 1;
|
return 1;
|
||||||
case 'BNEZ':
|
case 'BNEZ':
|
||||||
return 1;
|
return 1;
|
||||||
|
case 'DIV':
|
||||||
|
return 1;
|
||||||
|
case 'LD':
|
||||||
|
return 1;
|
||||||
|
case 'MULT':
|
||||||
|
return 1;
|
||||||
|
case 'SD':
|
||||||
|
return 1;
|
||||||
|
case 'SUB':
|
||||||
|
return 1;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -263,13 +255,13 @@ export default function Home() {
|
|||||||
let reg_k_inst;
|
let reg_k_inst;
|
||||||
|
|
||||||
if ((instrucao.operacao === 'BNEZ') || (instrucao.operacao === 'BEQ')) {
|
if ((instrucao.operacao === 'BNEZ') || (instrucao.operacao === 'BEQ')) {
|
||||||
reg_j = registerStatus[instrucao.registradorR.replace('R','').replace('F','')];
|
reg_j = registerStatus[instrucao.registradorR.replace('R', '')];
|
||||||
reg_k = registerStatus[instrucao.registradorS.replace('R','').replace('F','')];
|
reg_k = registerStatus[instrucao.registradorS.replace('R', '')];
|
||||||
reg_j_inst = instrucao.registradorR;
|
reg_j_inst = instrucao.registradorR;
|
||||||
reg_k_inst = instrucao.registradorS;
|
reg_k_inst = instrucao.registradorS;
|
||||||
} else {
|
} else {
|
||||||
reg_j = registerStatus[instrucao.registradorS.replace('R','').replace('F','')];
|
reg_j = registerStatus[instrucao.registradorS.replace('R', '')];
|
||||||
reg_k = registerStatus[instrucao.registradorT.replace('R','').replace('F','')];
|
reg_k = registerStatus[instrucao.registradorT.replace('R', '')];
|
||||||
reg_j_inst = instrucao.registradorS;
|
reg_j_inst = instrucao.registradorS;
|
||||||
reg_k_inst = instrucao.registradorT;
|
reg_k_inst = instrucao.registradorT;
|
||||||
}
|
}
|
||||||
@ -311,7 +303,7 @@ export default function Home() {
|
|||||||
uf.qj = null;
|
uf.qj = null;
|
||||||
|
|
||||||
if (instrucao.operacao === 'SD') {
|
if (instrucao.operacao === 'SD') {
|
||||||
let UFQueTemQueEsperar = registerStatus[instrucao.registradorR.replace('R','').replace('F','')];
|
let UFQueTemQueEsperar = registerStatus[instrucao.registradorR.replace('R', '')];
|
||||||
|
|
||||||
if ((UFQueTemQueEsperar in functionalUnits) || (UFQueTemQueEsperar in memoryUnits)) {
|
if ((UFQueTemQueEsperar in functionalUnits) || (UFQueTemQueEsperar in memoryUnits)) {
|
||||||
uf.qi = UFQueTemQueEsperar;
|
uf.qi = UFQueTemQueEsperar;
|
||||||
@ -321,7 +313,7 @@ export default function Home() {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
let UFintQueTemQueEsperar = registerStatus[instrucao.registradorT.replace('R','').replace('F','')];
|
let UFintQueTemQueEsperar = registerStatus[instrucao.registradorT.replace('R', '')];
|
||||||
|
|
||||||
if ((UFintQueTemQueEsperar in functionalUnits) || (UFintQueTemQueEsperar in memoryUnits)) {
|
if ((UFintQueTemQueEsperar in functionalUnits) || (UFintQueTemQueEsperar in memoryUnits)) {
|
||||||
uf.qj = UFintQueTemQueEsperar;
|
uf.qj = UFintQueTemQueEsperar;
|
||||||
@ -332,7 +324,7 @@ export default function Home() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function writeRegister(instrucao, entry) {
|
function writeRegister(instrucao, entry) {
|
||||||
registerStatus[instrucao.registradorR.replace('R','').replace('F','')] = entry;
|
registerStatus[instrucao.registradorR.replace('R', '')] = entry;
|
||||||
setRegisterStatus(registerStatus);
|
setRegisterStatus(registerStatus);
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -427,7 +419,6 @@ export default function Home() {
|
|||||||
|
|
||||||
if ((ufMem.ocupado) && (ufMem.qi === null) && (ufMem.qj === null)) {
|
if ((ufMem.ocupado) && (ufMem.qi === null) && (ufMem.qj === null)) {
|
||||||
ufMem.tempo = ufMem.tempo - 1;
|
ufMem.tempo = ufMem.tempo - 1;
|
||||||
console.log("estado Instrucao", ufMem.estadoInstrucao);
|
|
||||||
|
|
||||||
if (ufMem.tempo === 0) {
|
if (ufMem.tempo === 0) {
|
||||||
ufMem.estadoInstrucao.exeCompleta = clock;
|
ufMem.estadoInstrucao.exeCompleta = clock;
|
||||||
@ -459,10 +450,10 @@ export default function Home() {
|
|||||||
if (ufMem.tempo === -1) {
|
if (ufMem.tempo === -1) {
|
||||||
ufMem.estadoInstrucao.write = clock;
|
ufMem.estadoInstrucao.write = clock;
|
||||||
|
|
||||||
let valorReg = registerStatus[ufMem.instrucao.registradorR.replace('R','').replace('F','')];
|
let valorReg = registerStatus[ufMem.instrucao.registradorR.replace('R', '')];
|
||||||
|
|
||||||
if (valorReg === ufMem.nome) {
|
if (valorReg === ufMem.nome) {
|
||||||
registerStatus[ufMem.instrucao.registradorR.replace('R','').replace('F','')] = 'VAL(' + ufMem.nome + ')';
|
registerStatus[ufMem.instrucao.registradorR.replace('R', '')] = 'VAL(' + ufMem.nome + ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
releaseWaitingUnity(ufMem);
|
releaseWaitingUnity(ufMem);
|
||||||
@ -477,10 +468,10 @@ export default function Home() {
|
|||||||
if (uf.ocupado && uf.tempo === -1) {
|
if (uf.ocupado && uf.tempo === -1) {
|
||||||
uf.estadoInstrucao.write = clock;
|
uf.estadoInstrucao.write = clock;
|
||||||
|
|
||||||
let valorReg = registerStatus[uf.instrucao.registradorR.replace('R','').replace('F','')];
|
let valorReg = registerStatus[uf.instrucao.registradorR.replace('R', '')];
|
||||||
|
|
||||||
if (valorReg === uf.nome) {
|
if (valorReg === uf.nome) {
|
||||||
registerStatus[uf.instrucao.registradorR.replace('R','').replace('F','')] = 'VAL(' + uf.nome + ')';
|
registerStatus[uf.instrucao.registradorR.replace('R', '')] = 'VAL(' + uf.nome + ')';
|
||||||
}
|
}
|
||||||
|
|
||||||
releaseWaitingUnity(uf);
|
releaseWaitingUnity(uf);
|
||||||
@ -518,13 +509,11 @@ export default function Home() {
|
|||||||
|
|
||||||
function reorderBufferValueFormat(instr) {
|
function reorderBufferValueFormat(instr) {
|
||||||
switch (instr.instrucao.operacao) {
|
switch (instr.instrucao.operacao) {
|
||||||
case 'ADDD':
|
case 'SUB':
|
||||||
return <span>{`${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}`}</span>;
|
|
||||||
case 'SUBD':
|
|
||||||
return <span>{`${instr.instrucao.registradorS} - ${instr.instrucao.registradorT}`}</span>;
|
return <span>{`${instr.instrucao.registradorS} - ${instr.instrucao.registradorT}`}</span>;
|
||||||
case 'MULTD':
|
case 'MULT':
|
||||||
return <span>{`${instr.instrucao.registradorS} * ${instr.instrucao.registradorT}`}</span>;
|
return <span>{`${instr.instrucao.registradorS} * ${instr.instrucao.registradorT}`}</span>;
|
||||||
case 'DIVD':
|
case 'DIV':
|
||||||
return <span>{`${instr.instrucao.registradorS} / ${instr.instrucao.registradorT}`}</span>;
|
return <span>{`${instr.instrucao.registradorS} / ${instr.instrucao.registradorT}`}</span>;
|
||||||
case 'LD':
|
case 'LD':
|
||||||
return <span>{`Mem[${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}]`}</span>;
|
return <span>{`Mem[${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}]`}</span>;
|
||||||
@ -532,8 +521,6 @@ export default function Home() {
|
|||||||
return <span>{`Mem[${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}]`}</span>;
|
return <span>{`Mem[${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}]`}</span>;
|
||||||
case 'ADD':
|
case 'ADD':
|
||||||
return <span>{`${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}`}</span>;
|
return <span>{`${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}`}</span>;
|
||||||
case 'DADDUI':
|
|
||||||
return <span>{`${instr.instrucao.registradorS} + ${instr.instrucao.registradorT}`}</span>;
|
|
||||||
case 'BEQ':
|
case 'BEQ':
|
||||||
return <span>{`${instr.instrucao.registradorR} == ${instr.instrucao.registradorS}`}</span>;
|
return <span>{`${instr.instrucao.registradorR} == ${instr.instrucao.registradorS}`}</span>;
|
||||||
case 'BNEZ':
|
case 'BNEZ':
|
||||||
@ -608,11 +595,11 @@ export default function Home() {
|
|||||||
<Table striped bordered hover>
|
<Table striped bordered hover>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>F0</th>
|
<th>R0</th>
|
||||||
<th>F1</th>
|
<th>R1</th>
|
||||||
<th>F2</th>
|
<th>R2</th>
|
||||||
<th>F3</th>
|
<th>R3</th>
|
||||||
<th>F4</th>
|
<th>R4</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -624,11 +611,11 @@ export default function Home() {
|
|||||||
</tbody>
|
</tbody>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>F5</th>
|
<th>R5</th>
|
||||||
<th>F6</th>
|
<th>R6</th>
|
||||||
<th>F7</th>
|
<th>R7</th>
|
||||||
<th>F8</th>
|
<th>R8</th>
|
||||||
<th>F9</th>
|
<th>R9</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
@ -640,11 +627,11 @@ export default function Home() {
|
|||||||
</tbody>
|
</tbody>
|
||||||
<thead>
|
<thead>
|
||||||
<tr>
|
<tr>
|
||||||
<th>F10</th>
|
<th>R10</th>
|
||||||
<th>F11</th>
|
<th>R11</th>
|
||||||
<th>F12</th>
|
<th>R12</th>
|
||||||
<th>F13</th>
|
<th>R13</th>
|
||||||
<th>F14</th>
|
<th>R14</th>
|
||||||
</tr>
|
</tr>
|
||||||
</thead>
|
</thead>
|
||||||
<tbody>
|
<tbody>
|
||||||
|
Reference in New Issue
Block a user