Rename instructions and registers

This commit is contained in:
Guilherme Werner
2023-06-17 18:23:22 -03:00
parent 1c820bde43
commit 9d3c2ddf31
2 changed files with 71 additions and 86 deletions

View File

@ -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>

View File

@ -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>