Skip to content

Commit

Permalink
2.0B2: node output updated
Browse files Browse the repository at this point in the history
  • Loading branch information
dcamarmas committed Jul 17, 2020
1 parent f421157 commit d068c66
Show file tree
Hide file tree
Showing 9 changed files with 193 additions and 95 deletions.
2 changes: 1 addition & 1 deletion examples/MIPS/example4.output
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
cr[PC]:0x44; ir[v0]:0xa; ir[t0]:0x200000; ir[t1]:0x200008; ir[t2]:0x200010; ir[t3]:0x200028; memory[0x200018]:0x405145A1; memory[0x20001c]:0x405145A1; memory[0x200020]:0x4082A27E; memory[0x200024]:0x4082A27E; memory[0x200028]:0x404D1315; memory[0x20002c]:0x404D1315;
cr[PC]:0x44; ir[v0]:0xa; ir[t0]:0x200000; ir[t1]:0x200008; ir[t2]:0x200010; ir[t3]:0x200028; sfpr[f0]:0x405145A1; sfpr[f1]:0xCAC08312; sfpr[f2]:0x4026E2D0; sfpr[f3]:0xE5604189; sfpr[f4]:0x4082A27E; sfpr[f5]:0xF9DB22D1; sfpr[f10]:0x4084CB33; sfpr[f11]:0x33333333; sfpr[f12]:0x404D1315; sfpr[f13]:0x4689C3E9; dfpr[FP0]:0x405145A1CAC08312; dfpr[FP2]:0x4026E2D0E5604189; dfpr[FP4]:0x4082A27EF9DB22D1; dfpr[FP10]:0x4084CB3333333333; dfpr[FP12]:0x404D13154689C3E9; memory[0x200018]:0x405145A1; memory[0x20001c]:0x405145A1; memory[0x200020]:0x4082A27E; memory[0x200024]:0x4082A27E; memory[0x200028]:0x404D1315; memory[0x20002c]:0x404D1315;

2 changes: 1 addition & 1 deletion examples/MIPS/example8.output
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
cr[PC]:0x4c; ir[t0]:0x200040; ir[t1]:0x200080; ir[t2]:0x4; ir[t3]:0x4; ir[t4]:0x4; sfpr[f0]:0x33441124;
cr[PC]:0x4c; ir[t0]:0x200040; ir[t1]:0x200080; ir[t2]:0x4; ir[t3]:0x4; ir[t4]:0x4; sfpr[f0]:0x33441124; dfpr[FP0]:0x3344112400000000;

2 changes: 1 addition & 1 deletion examples/riscv/example1.output
Original file line number Diff line number Diff line change
@@ -1,2 +1,2 @@
cr[PC]:0xc; ir[a1]:0x2; ir[a2]:0x3; ir[a3]:0x2; sfpr[ft0]:0x40900000;
cr[PC]:0xc; ir[a1]:0x2; ir[a2]:0x3; ir[a3]:0x2; sfpr[ft0]:0x40900000; dfpr[FP0]:0x4012000000000000;

Binary file modified images/author_dcamarmas.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
52 changes: 7 additions & 45 deletions js/app.js
Original file line number Diff line number Diff line change
Expand Up @@ -2894,7 +2894,7 @@ try

localStorage.setItem("arch_name", app._data.architecture_name);
localStorage.setItem("architecture_copy", auxArch);
localStorage.setItem("assembly_copy", textarea_assembly_editor.getValue());
localStorage.setItem("assembly_copy", code_assembly);
localStorage.setItem("date_copy", auxDate);
}

Expand Down Expand Up @@ -3415,30 +3415,30 @@ try
if(precision == false){
if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^0x/)){
architecture.components[comp].elements[i].value = this.hex2float(this.newValue);
this.updateDouble(comp, i);
updateDouble(comp, i);
}
else if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^(\d)+/)){
architecture.components[comp].elements[i].value = parseFloat(this.newValue, 10);
this.updateDouble(comp, i);
updateDouble(comp, i);
}
else if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^-/)){
architecture.components[comp].elements[i].value = parseFloat(this.newValue, 10);
this.updateDouble(comp, i);
updateDouble(comp, i);
}
}

else if(precision == true){
if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^0x/)){
architecture.components[comp].elements[i].value = this.hex2double(this.newValue);
this.updateSimple(comp, i);
updateSimple(comp, i);
}
else if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^(\d)+/)){
architecture.components[comp].elements[i].value = parseFloat(this.newValue, 10);
this.updateSimple(comp, i);
updateSimple(comp, i);
}
else if(architecture.components[comp].elements[i].name == elem && this.newValue.match(/^-/)){
architecture.components[comp].elements[i].value = parseFloat(this.newValue, 10);
this.updateSimple(comp, i)
updateSimple(comp, i)
}
}
}
Expand Down Expand Up @@ -3813,44 +3813,6 @@ try
return ret;
},

/*Modifies double precision registers according to simple precision registers*/
updateDouble(comp, elem){
for (var j = 0; j < architecture.components.length; j++) {
for (var z = 0; z < architecture.components[j].elements.length && architecture.components[j].double_precision == true; z++) {
if(architecture.components[j].elements[z].simple_reg[0] == architecture.components[comp].elements[elem].name){
var simple = this.bin2hex(this.float2bin(architecture.components[comp].elements[elem].value));
var double = this.bin2hex(this.double2bin(architecture.components[j].elements[z].value)).substr(8, 15);
var newDouble = simple + double;

architecture.components[j].elements[z].value = this.hex2double("0x"+newDouble);
}
if(architecture.components[j].elements[z].simple_reg[1] == architecture.components[comp].elements[elem].name){
var simple = this.bin2hex(this.float2bin(architecture.components[comp].elements[elem].value));
var double = this.bin2hex(this.double2bin(architecture.components[j].elements[z].value)).substr(0, 8);
var newDouble = double + simple;

architecture.components[j].elements[z].value = this.hex2double("0x"+newDouble);
}
}
}
},

/*Modifies single precision registers according to double precision registers*/
updateSimple(comp, elem){
var part1 = this.bin2hex(this.double2bin(architecture.components[comp].elements[elem].value)).substr(0, 8);
var part2 = this.bin2hex(this.double2bin(architecture.components[comp].elements[elem].value)).substr(8, 15);

for (var j = 0; j < architecture.components.length; j++) {
for (var z = 0; z < architecture.components[j].elements.length; z++) {
if(architecture.components[j].elements[z].name == architecture.components[comp].elements[elem].simple_reg[0]){
architecture.components[j].elements[z].value = this.hex2float("0x"+part1);
}
if(architecture.components[j].elements[z].name == architecture.components[comp].elements[elem].simple_reg[1]){
architecture.components[j].elements[z].value = this.hex2float("0x"+part2);
}
}
}
},

/*Filter table instructions*/
filter(row, filter){
Expand Down
82 changes: 61 additions & 21 deletions js/creator_executor.js
Original file line number Diff line number Diff line change
Expand Up @@ -698,9 +698,10 @@ function executeInstruction ( )
auxDef = auxDef.replace(myMatch[2], "reg"+regIndex)
auxDef = "var reg"+ regIndex +"= null\n"+ auxDef+"\nwriteRegister(reg"+ regIndex+", "+i+", "+j+");";
myMatch.index=0;
isMatch = true;
isMatch = true;
}
if (isMatch) regIndex++;
if (isMatch)
regIndex++;

/*
re = new RegExp(architecture.components[i].elements[j].name+" *=[^=]");
Expand Down Expand Up @@ -1044,7 +1045,7 @@ function writeRegister ( value, indexComp, indexElem )

architecture.components[indexComp].elements[indexElem].value = parseFloat(value);

this.updateDouble(indexComp, indexElem);
updateDouble(indexComp, indexElem);

var buttonDec = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name + "FP";
var buttonHex = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name;
Expand All @@ -1062,30 +1063,29 @@ function writeRegister ( value, indexComp, indexElem )
{
if (architecture.components[indexComp].elements[indexElem].properties[0] != "write" && architecture.components[indexComp].elements[indexElem].properties[1] != "write")
{
/*
show_notification('The register '+ architecture.components[indexComp].elements[indexElem].name +' cannot be written', 'danger') ;
return;
*/
throw packExecute(true, 'The register '+ architecture.components[indexComp].elements[indexElem].name +' cannot be written', 'danger', null);
/*
show_notification('The register '+ architecture.components[indexComp].elements[indexElem].name +' cannot be written', 'danger') ;
return;
*/
throw packExecute(true, 'The register '+ architecture.components[indexComp].elements[indexElem].name +' cannot be written', 'danger', null);
}

architecture.components[indexComp].elements[indexElem].value = parseFloat(value);
updateSimple(indexComp, indexElem);

this.updateSimple(indexComp, indexElem);

if (!window.document)
{
var buttonDec = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name + "DFP";
var buttonHex = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name;
if (!window.document)
{
var buttonDec = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name + "DFP";
var buttonHex = '#popoverValueContent' + architecture.components[indexComp].elements[indexElem].name;

$(buttonDec).attr("style", "background-color:#c2c2c2;");
$(buttonHex).attr("style", "background-color:#c2c2c2;");
$(buttonDec).attr("style", "background-color:#c2c2c2;");
$(buttonHex).attr("style", "background-color:#c2c2c2;");

setTimeout(function() {
$(buttonDec).attr("style", "background-color:#f5f5f5;");
$(buttonHex).attr("style", "background-color:#f5f5f5;");
}, 500);
} // if
setTimeout(function() {
$(buttonDec).attr("style", "background-color:#f5f5f5;");
$(buttonHex).attr("style", "background-color:#f5f5f5;");
}, 500);
} // if

}
}
Expand Down Expand Up @@ -2382,4 +2382,44 @@ show_notification('The data has been uploaded', 'info') ;
}

return ret;
}


/*Modifies double precision registers according to simple precision registers*/
function updateDouble(comp, elem){
for (var j = 0; j < architecture.components.length; j++) {
for (var z = 0; z < architecture.components[j].elements.length && architecture.components[j].double_precision == true; z++) {
if(architecture.components[j].elements[z].simple_reg[0] == architecture.components[comp].elements[elem].name){
var simple = bin2hex(float2bin(architecture.components[comp].elements[elem].value));
var double = bin2hex(double2bin(architecture.components[j].elements[z].value)).substr(8, 15);
var newDouble = simple + double;

architecture.components[j].elements[z].value = hex2double("0x"+newDouble);
}
if(architecture.components[j].elements[z].simple_reg[1] == architecture.components[comp].elements[elem].name){
var simple = bin2hex(float2bin(architecture.components[comp].elements[elem].value));
var double = bin2hex(double2bin(architecture.components[j].elements[z].value)).substr(0, 8);
var newDouble = double + simple;

architecture.components[j].elements[z].value = hex2double("0x"+newDouble);
}
}
}
}

/*Modifies single precision registers according to double precision registers*/
function updateSimple(comp, elem){
var part1 = bin2hex(double2bin(architecture.components[comp].elements[elem].value)).substr(0, 8);
var part2 = bin2hex(double2bin(architecture.components[comp].elements[elem].value)).substr(8, 15);

for (var j = 0; j < architecture.components.length; j++) {
for (var z = 0; z < architecture.components[j].elements.length; z++) {
if(architecture.components[j].elements[z].name == architecture.components[comp].elements[elem].simple_reg[0]){
architecture.components[j].elements[z].value = hex2float("0x"+part1);
}
if(architecture.components[j].elements[z].name == architecture.components[comp].elements[elem].simple_reg[1]){
architecture.components[j].elements[z].value = hex2float("0x"+part2);
}
}
}
}
32 changes: 30 additions & 2 deletions js/creator_node.js
Original file line number Diff line number Diff line change
Expand Up @@ -67,10 +67,33 @@ function get_state ( )

for (var j=0; j<architecture.components[i].elements.length; j++)
{
// get value + default value
// get value
e_name = architecture.components[i].elements[j].name ;
elto_value = architecture.components[i].elements[j].value ;
elto_dvalue = architecture.components[i].elements[j].default_value ;

//get default value
if(architecture.components[i].double_precision == true){
var aux_value;
var aux_sim1;
var aux_sim2;

for (var a = 0; a < architecture_hash.length; a++) {
for (var b = 0; b < architecture.components[a].elements.length; b++) {
if(architecture.components[a].elements[b].name == architecture.components[i].elements[j].simple_reg[0]){
aux_sim1 = bin2hex(float2bin(architecture.components[a].elements[b].default_value));
}
if(architecture.components[a].elements[b].name == architecture.components[i].elements[j].simple_reg[1]){
aux_sim2 = bin2hex(float2bin(architecture.components[a].elements[b].default_value));
}
}
}

aux_value = aux_sim1 + aux_sim2;
elto_dvalue = hex2double("0x" + aux_value)
}
else{
elto_dvalue = architecture.components[i].elements[j].default_value ;
}

// skip default results
if (typeof elto_dvalue == "undefined") {
Expand All @@ -83,7 +106,12 @@ function get_state ( )
// value != default value => dumpt it
elto_string = "0x" + elto_value.toString(16) ;
if (architecture.components[i].type == "floating point") {
if(architecture.components[i].double_precision == false){
elto_string = "0x" + bin2hex(float2bin(elto_value)) ;
}
if (architecture.components[i].double_precision == true) {
elto_string = "0x" + bin2hex(double2bin(elto_value)) ;
}
}
ret.msg = ret.msg + c_name + "[" + e_name + "]:" + elto_string + "; ";
}
Expand Down
Loading

0 comments on commit d068c66

Please sign in to comment.