From 321f7e70007931050e6d00f0cd8eb0d3ec75a729 Mon Sep 17 00:00:00 2001 From: dcamarmas Date: Tue, 21 Feb 2023 19:09:33 +0100 Subject: [PATCH] 3.2.1: UI minor update --- components/general/creator_uielto_info.js | 6 ------ components/general/creator_uielto_navbar.js | 15 +++++++++++++++ examples/RISCV/example12.txt | 2 +- images/author_fgarcia.png | Bin 41808 -> 14610 bytes js/min.creator_web.js | 2 +- 5 files changed, 17 insertions(+), 8 deletions(-) diff --git a/components/general/creator_uielto_info.js b/components/general/creator_uielto_info.js index d369bb91..1a13cf9f 100644 --- a/components/general/creator_uielto_info.js +++ b/components/general/creator_uielto_info.js @@ -63,12 +63,6 @@ ' ' + ' Show Notifications' + ' ' + - ' ' + - ' ' + - ' ' + - ' About us' + - ' ' + ' ' } diff --git a/components/general/creator_uielto_navbar.js b/components/general/creator_uielto_navbar.js index bc4edd29..6f55c5dc 100644 --- a/components/general/creator_uielto_navbar.js +++ b/components/general/creator_uielto_navbar.js @@ -68,6 +68,21 @@ ' ' + ' ' + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' About us' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + + ' ' + ' ' } diff --git a/examples/RISCV/example12.txt b/examples/RISCV/example12.txt index 4f8adae5..d4c2f767 100644 --- a/examples/RISCV/example12.txt +++ b/examples/RISCV/example12.txt @@ -9,7 +9,7 @@ main: # t1 = factorial(5) - li a0 100 + li a0 5 jal x1 factorial # print_int(t1) diff --git a/images/author_fgarcia.png b/images/author_fgarcia.png index 3afdbd6a38fe6a173eec3e3e55393ddec5907730..9946bfd4f3c25b9774ad522d4bbce04796b1b15a 100644 GIT binary patch literal 14610 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 IM6N<$f>)DG$p8QV literal 41808 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

b-Ku}B~Daduind?m4APNp-@ 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�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 diff --git a/js/min.creator_web.js b/js/min.creator_web.js index 8cbd1499..61b86e45 100644 --- a/js/min.creator_web.js +++ b/js/min.creator_web.js @@ -1 +1 @@ -function bi_intToBigInt(int_value,int_base){return BigInt(parseInt(int_value)>>>0,int_base)}function bi_floatToBigInt(float_value){var BigInt_value=null;var bin=float2bin(float_value);var hex=bin2hex(bin);BigInt_value=BigInt("0x"+hex);return BigInt_value}function bi_BigIntTofloat(big_int_value){var hex=big_int_value.toString(16);if(hex.length>8){hex=hex.substring(hex.length-8,hex.length)}return hex2float("0x"+hex)}function bi_doubleToBigInt(double_value){var BigInt_value=null;var bin=double2bin(double_value);var hex=bin2hex(bin);BigInt_value=BigInt("0x"+hex);return BigInt_value}function bi_BigIntTodouble(big_int_value){var hex=big_int_value.toString(16).padStart(16,"0");return hex2double("0x"+hex)}function register_value_deserialize(architecture){for(var i=0;i"}catch(e){o=o+e+"
"}}}return o}function checkTypeIEEE(s,e,m){let rd=0;if(!m&&!e)rd=s?1<<3:1<<4;else if(!e)rd=s?1<<2:1<<5;else if(!(e^255))if(m)rd=s?1<<8:1<<9;else rd=s?1<<0:1<<7;else rd=s?1<<1:1<<6;return rd}function hex2char8(hexvalue){var num_char=hexvalue.toString().length/2;var exponent=0;var pos=0;var valuec=[];for(var i=0;i8){value[1]=value[1].substring(0,8)}var value_bit="";for(var i=0;i=3;i-=4){part=s.substr(i+1-4,4);accum=0;for(k=0;k<4;k+=1){if(part[k]!=="0"&&part[k]!=="1"){return{valid:false}}accum=accum*2+parseInt(part[k],10)}if(accum>=10){ret=String.fromCharCode(accum-10+"A".charCodeAt(0))+ret}else{ret=String(accum)+ret}}if(i>=0){accum=0;for(k=0;k<=i;k+=1){if(s[k]!=="0"&&s[k]!=="1"){return{valid:false}}accum=accum*2+parseInt(s[k],10)}ret=String(accum)+ret}return ret}function hex2double(hexvalue){var value=hexvalue.split("x");var value_bit="";for(var i=0;i{}]/g,"_");re=new RegExp("^[0-9]+$");if(value2.search(re)!=-1&&prefix!="undefined"){value2=prefix+value2}return value2}var track_stack_names=[];var track_stack_limits=[];function track_stack_create(){var ret={ok:true,msg:""};track_stack_names=[];track_stack_limits=[];track_stack_enter("main");return ret}function track_stack_enter(function_name){var ret={ok:true,msg:""};track_stack_names.push(function_name);var new_elto={function_name:function_name,begin_caller:track_stack_getTop().val.begin_callee,end_caller:track_stack_getTop().val.end_callee,begin_callee:architecture.memory_layout[4].value,end_callee:architecture.memory_layout[4].value};track_stack_limits.push(new_elto);if(typeof window!=="undefined"){app._data.callee_subrutine=track_stack_names[track_stack_names.length-1];app._data.caller_subrutine=track_stack_names[track_stack_names.length-2];app._data.begin_caller=new_elto.begin_caller;app._data.end_caller=new_elto.end_caller;app._data.begin_callee=new_elto.begin_callee;app._data.end_callee=new_elto.end_callee}return ret}function track_stack_leave(){var ret={ok:true,msg:""};if(0===track_stack_limits.length){ret.msg="track_stack_Leave: empty track_stack_limits !!.\n";return ret}track_stack_limits.pop();if(track_stack_names.length>0){track_stack_names.pop()}var elto_top=track_stack_getTop();if(typeof window!=="undefined"&&elto_top.val!=null){app._data.callee_subrutine=track_stack_names[track_stack_names.length-1];app._data.caller_subrutine=track_stack_names[track_stack_names.length-2];app._data.begin_caller=elto_top.val.begin_caller;app._data.end_caller=elto_top.val.end_caller;app._data.begin_callee=elto_top.val.begin_callee;app._data.end_callee=elto_top.val.end_callee}return ret}function track_stack_getTop(){var ret={ok:true,val:{begin_caller:architecture.memory_layout[4].value,end_caller:architecture.memory_layout[4].value,begin_callee:architecture.memory_layout[4].value,end_callee:architecture.memory_layout[4].value},msg:""};if(0===track_stack_limits.length){ret.ok=false;ret.msg="track_stack_getTop: empty track_stack_limits !!.\n";return ret}ret.val=track_stack_limits[track_stack_limits.length-1];if(typeof ret.val.begin_caller==="undefined"){ret.val.begin_caller=architecture.memory_layout[4].value}return ret}function track_stack_setTop(field,indexComponent,indexElement,value){var ret={ok:true,msg:""};if(0===track_stack_limits.length){ret.ok=false;ret.msg="track_stack_getTop: empty track_stack_limits !!.\n";return ret}var elto=track_stack_limits[track_stack_limits.length-1];if(typeof elto.length!=="undefined"){elto[field][indexComponent][indexElement]=value;return ret}elto[field]=value;return ret}function track_stack_setsp(value){if(typeof window!=="undefined"){app._data.end_callee=value}if(0===track_stack_limits.length){return}var elto=track_stack_limits[track_stack_limits.length-1];elto.end_callee=value}function track_stack_reset(){var ret={ok:true,msg:""};track_stack_names=[];track_stack_limits=[];track_stack_enter("main");if(typeof window!=="undefined"){app._data.track_stack_names=track_stack_names;app._data.callee_subrutine=track_stack_names[track_stack_names.length-1];app._data.caller_subrutine="";app._data.begin_caller=architecture.memory_layout[4].value;app._data.end_caller=architecture.memory_layout[4].value;app._data.begin_callee=architecture.memory_layout[4].value;app._data.end_callee=architecture.memory_layout[4].value}return ret}var stack_call_names=[];var stack_state_transition=[{"wm==":1,"wm!=":1,rm:2,wr:40,rr:0,end:3},{"wm==":1,"wm!=":7,rm:6,wr:5,rr:1,end:40},{"wm==":1,"wm!=":1,rm:2,wr:45,rr:2,end:3},{"wm==":-1,"wm!=":-1,rm:-1,wr:-1,rr:-1,end:-1},{"wm==":-1,"wm!=":-1,rm:-1,wr:-1,rr:-1,end:-1},{"wm==":44,"wm!=":5,rm:6,wr:5,rr:5,end:43},{"wm==":44,"wm!=":6,rm:6,wr:0,rr:6,end:43},{"wm==":7,"wm!=":7,rm:6,wr:5,rr:7,end:42}];var stack_call_register=[];function creator_callstack_create(){var ret={ok:true,msg:""};stack_call_names=[];stack_call_register=[];creator_callstack_enter("main");return ret}function creator_callstack_enter(function_name){var ret={ok:true,msg:""};stack_call_names.push(function_name);var arr_sm=[];var arr_write=[];var arr_read=[];var arr_value=[];var arr_size_write=[];var arr_size_read=[];for(var i=0;i0){stack_call_names.pop()}return ret}function creator_callstack_getTop(){var ret={ok:true,val:null,msg:""};if(0===stack_call_register.length){ret.ok=false;ret.msg="creator_callstack_getTop: empty stack_call_register !!.\n";return ret}ret.val=stack_call_register[stack_call_register.length-1];return ret}function creator_callstack_setTop(field,indexComponent,indexElement,value){var ret={ok:true,msg:""};if(0===stack_call_register.length){ret.ok=false;ret.msg="creator_callstack_getTop: empty stack_call_register !!.\n";return ret}var elto=stack_call_register[stack_call_register.length-1];if(typeof elto.length!=="undefined"){elto[field][indexComponent][indexElement]=value;return ret}elto[field]=value;return ret}function creator_callstack_setState(indexComponent,indexElement,newState){var elto=creator_callstack_getTop();if(elto.ok===false){console_log("creator_callstack_setState: "+elto.msg);return""}elto.val.register_sm[indexComponent][indexElement]=newState}function creator_callstack_getState(indexComponent,indexElement){var elto=creator_callstack_getTop();if(elto.ok===false){console_log("creator_callstack_getState: "+elto.msg);return""}return elto.val.register_sm[indexComponent][indexElement]}function creator_callstack_newWrite(indexComponent,indexElement,address,length){creator_callstack_do_transition("wm",indexComponent,indexElement,address);var elto=creator_callstack_getTop();if(elto.ok==false){console_log("creator_callstack_newWrite: "+elto.msg);return""}elto.val.register_address_write[indexComponent][indexElement].push(address);elto.val.register_size_write[indexComponent][indexElement].push(length)}function creator_callstack_newRead(indexComponent,indexElement,address,length){var elto=creator_callstack_getTop();if(elto.ok==false){console_log("creator_callstack_newRead: "+elto.msg);return""}elto.val.register_address_read[indexComponent][indexElement].push(address);elto.val.register_size_read[indexComponent][indexElement].push(length);creator_callstack_do_transition("rm",indexComponent,indexElement,address)}function creator_callstack_writeRegister(indexComponent,indexElement){creator_callstack_do_transition("wr",indexComponent,indexElement,address)}function creator_callstack_reset(){var ret={ok:true,msg:""};stack_call_names=[];stack_call_register=[];creator_callstack_enter("main");return ret}function creator_callstack_do_transition(doAction,indexComponent,indexElement,address){var state=creator_callstack_getState(indexComponent,indexElement);var action=doAction;if(doAction=="wm"){var elto=creator_callstack_getTop();if(elto.ok==false){console_log("creator_callstack_do_transition: "+elto.msg);return""}var equal=elto.val.register_address_write[indexComponent][indexElement].includes(address);action=equal?"wm==":"wm!="}if(typeof stack_state_transition[state]==="undefined"||typeof stack_state_transition[state][action]==="undefined"){if(state<40||state<0){console_log("creator_callstack_do_transition: undefined action")}return}var new_state=stack_state_transition[state][action];creator_callstack_setState(indexComponent,indexElement,new_state);if(action!="end"){console_log("creator_callstack_do_transition ["+architecture.components[indexComponent].elements[indexElement].name+"]: transition from "+"state '"+state+"'' to state '"+new_state+"' and action '"+action+"' is empty (warning).")}}function capi_raise(msg){if(typeof app!=="undefined"){app.exception(msg)}else{console.log(msg)}}function capi_arithmetic_overflow(op1,op2,res_u){op1_u=capi_uint2int(op1);op2_u=capi_uint2int(op2);res_u=capi_uint2int(res_u);return op1_u>0&&op2_u>0&&res_u<0||op1_u<0&&op2_u<0&&res_u>0}function capi_bad_align(addr,type){size=creator_memory_type2size(type);return addr%size!==0}function capi_mem_write(addr,value,type,reg_name){var size=1;if(capi_bad_align(addr,type)){capi_raise("The memory must be align");creator_executor_exit(true)}var addr_16=parseInt(addr,16);if(addr_16>=parseInt(architecture.memory_layout[0].value)&&addr_16<=parseInt(architecture.memory_layout[1].value)){capi_raise("Segmentation fault. You tried to write in the text segment");creator_executor_exit(true)}try{writeMemory(value,addr,type)}catch(e){capi_raise("Invalid memory access to address '0x"+addr.toString(16)+"'");creator_executor_exit(true)}var ret=crex_findReg(reg_name);if(ret.match===0){return}var i=ret.indexComp;var j=ret.indexElem;creator_callstack_newWrite(i,j,addr,type)}function capi_mem_read(addr,type,reg_name){var size=1;var val=0;if(capi_bad_align(addr,type)){capi_raise("The memory must be align");creator_executor_exit(true)}var addr_16=parseInt(addr,16);if(addr_16>=parseInt(architecture.memory_layout[0].value)&&addr_16<=parseInt(architecture.memory_layout[1].value)){capi_raise("Segmentation fault. You tried to read in the text segment");creator_executor_exit(true)}try{val=readMemory(addr,type)}catch(e){capi_raise("Invalid memory access to address '0x"+addr.toString(16)+"'");creator_executor_exit(true)}var ret=creator_memory_value_by_type(val,type);var find_ret=crex_findReg(reg_name);if(find_ret.match===0){return ret}var i=find_ret.indexComp;var j=find_ret.indexElem;creator_callstack_newRead(i,j,addr,type);return ret}function capi_exit(){creator_ga("execute","execute.syscall","execute.syscall.exit");return creator_executor_exit(false)}function capi_print_int(value1){creator_ga("execute","execute.syscall","execute.syscall.print_int");var ret1=crex_findReg(value1);if(ret1.match===0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var value=readRegister(ret1.indexComp,ret1.indexElem);var val_int=parseInt(value.toString())>>0;var value=readRegister(ret1.indexComp,ret1.indexElem);var val_int=parseInt(value.toString())>>0;display_print(full_print(val_int,null,false))}function capi_print_float(value1){creator_ga("execute","execute.syscall","execute.syscall.print_float");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var value=readRegister(ret1.indexComp,ret1.indexElem,"SFP-Reg");var bin=float2bin(value);display_print(full_print(value,bin,true))}function capi_print_double(value1){creator_ga("execute","execute.syscall","execute.syscall.print_double");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var value=readRegister(ret1.indexComp,ret1.indexElem,"DFP-Reg");var bin=double2bin(value);display_print(full_print(value,bin,true))}function capi_print_char(value1){creator_ga("execute","execute.syscall","execute.syscall.print_char");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var aux=readRegister(ret1.indexComp,ret1.indexElem);var aux2=aux.toString(16);var length=aux2.length;var value=aux2.substring(length-2,length);value=String.fromCharCode(parseInt(value,16));display_print(value)}function capi_print_string(value1){creator_ga("execute","execute.syscall","execute.syscall.print_string");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var addr=readRegister(ret1.indexComp,ret1.indexElem);var msg=readMemory(parseInt(addr),"string");display_print(msg)}function capi_read_int(value1){creator_ga("execute","execute.syscall","execute.syscall.read_int");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}if(typeof document!="undefined"){document.getElementById("enter_keyboard").scrollIntoView()}return keyboard_read(kbd_read_int,ret1)}function capi_read_float(value1){creator_ga("execute","execute.syscall","execute.syscall.read_float");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}if(typeof document!="undefined"){document.getElementById("enter_keyboard").scrollIntoView()}return keyboard_read(kbd_read_float,ret1)}function capi_read_double(value1){creator_ga("execute","execute.syscall","execute.syscall.read_double");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}if(typeof document!="undefined"){document.getElementById("enter_keyboard").scrollIntoView()}return keyboard_read(kbd_read_double,ret1)}function capi_read_char(value1){creator_ga("execute","execute.syscall","execute.syscall.read_char");var ret1=crex_findReg(value1);if(ret1.match==0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}if(typeof document!="undefined"){document.getElementById("enter_keyboard").scrollIntoView()}return keyboard_read(kbd_read_char,ret1)}function capi_read_string(value1,value2){creator_ga("execute","execute.syscall","execute.syscall.read_string");var ret1=crex_findReg(value1);if(ret1.match===0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var ret2=crex_findReg(value2);if(ret2.match===0){throw packExecute(true,"capi_syscall: register "+value2+" not found","danger",null)}if(typeof document!="undefined"){document.getElementById("enter_keyboard").scrollIntoView()}ret1.indexComp2=ret2.indexComp;ret1.indexElem2=ret2.indexElem;return keyboard_read(kbd_read_string,ret1)}function capi_sbrk(value1,value2){creator_ga("execute","execute.syscall","execute.syscall.sbrk");var ret1=crex_findReg(value1);if(ret1.match===0){throw packExecute(true,"capi_syscall: register "+value1+" not found","danger",null)}var ret2=crex_findReg(value2);if(ret2.match===0){throw packExecute(true,"capi_syscall: register "+value2+" not found","danger",null)}var new_size=parseInt(readRegister(ret1.indexComp,ret1.indexElem));if(new_size<0){throw packExecute(true,"capi_syscall: negative size","danger",null)}var new_addr=creator_memory_alloc(new_size);writeRegister(new_addr,ret2.indexComp,ret2.indexElem)}function capi_get_clk_cycles(){creator_ga("execute","execute.syscall","execute.syscall.get_clk_cycles");return total_clk_cycles}function capi_callconv_begin(addr){var function_name="";if(architecture.arch_conf[5].value===0){return}if(typeof architecture.components[0]!=="undefined"){if(typeof tag_instructions[addr]==="undefined")function_name="0x"+parseInt(addr).toString(16);else function_name=tag_instructions[addr]}creator_callstack_enter(function_name)}function capi_callconv_end(){if(architecture.arch_conf[5].value===0){return}var ret=creator_callstack_leave();if(ret.ok){return}creator_ga("execute","execute.exception","execute.exception.protection_jrra"+ret.msg);crex_show_notification(ret.msg,"danger")}function capi_drawstack_begin(addr){var function_name="";if(typeof architecture.components[0]!=="undefined"){if(typeof tag_instructions[addr]=="undefined")function_name="0x"+parseInt(addr).toString(16);else function_name=tag_instructions[addr]}track_stack_enter(function_name)}function capi_drawstack_end(){var ret=track_stack_leave();if(ret.ok){return}crex_show_notification(ret.msg,"warning")}function capi_split_double(reg,index){var value=bin2hex(double2bin(reg));console_log(value);if(index===0){return value.substring(0,8)}if(index===1){return value.substring(8,16)}}function capi_uint2float32(value){return uint_to_float32(value)}function capi_float322uint(value){return float32_to_uint(value)}function capi_int2uint(value){return value>>>0}function capi_uint2int(value){return value>>0}function capi_uint2float64(value0,value1){return uint_to_float64(value0,value1)}function capi_float642uint(value){return float64_to_uint(value)}function capi_check_ieee(s,e,m){return checkTypeIEEE(s,e,m)}function capi_float2bin(f){return float2bin(f)}function crex_findReg(value1){var ret={};ret.match=0;ret.indexComp=null;ret.indexElem=null;if(value1==""){return ret}for(var i=0;iib)return-1;if(ib>ia)return 1;return 0}))}function main_memory_datatype_get_addresses(){return Object.keys(main_memory_datatypes).sort((function(a,b){ia=parseInt(a);ib=parseInt(b);if(ia>ib)return-1;if(ib>ia)return 1;return 0}))}function main_memory_packs_forav(addr,value){return{addr:addr,bin:value,def_bin:"00",tag:null,data_type:null,reset:true,break:false}}function main_memory_datatypes_packs_foravt(addr,value,type,size){var default_value="00";if(typeof main_memory_datatypes[addr]!=="undefined"){default_value=main_memory_datatypes[addr].default_value}return{address:addr,value:value,default:default_value,type:type,size:size}}function main_memory_reset(){var i=0;var addrs=main_memory_get_addresses();for(i=0;i>>24;break;case"h":val=val&65535;if(val&32768)val=4294901760|val;break;case"hu":val=val<<16>>>16;break;default:break}return val}function creator_memory_alignelto(new_addr,new_size){var ret={new_addr:new_addr,new_size:new_size};for(var i=0;iword_size_bytes-1){creator_memory_updaterow(addrs[i]);last_addr=curr_addr}}}function creator_memory_clearall(){if(typeof app=="undefined"||typeof app._data.main_memory=="undefined"){return}app._data.main_memory={}}function creator_memory_update_row_view(selected_view,segment_name,row_info){if(typeof app._data.main_memory[row_info.addr]=="undefined"){return}var hex_packed=app._data.main_memory[row_info.addr].hex_packed;var new_value=app._data.main_memory[row_info.addr].value;switch(selected_view){case"sig_int":new_value=parseInt(hex_packed,16)>>0;break;case"unsig_int":new_value=parseInt(hex_packed,16)>>>0;break;case"float":new_value=hex2float("0x"+hex_packed);break;case"char":new_value=hex2char8(hex_packed);break}app._data.main_memory[row_info.addr].value=new_value}function creator_memory_update_space_view(selected_view,segment_name,row_info){for(var i=0;i=parseInt(architecture.memory_layout[0].value)&&addr<=parseInt(architecture.memory_layout[1].value)}if(segment_name=="data_memory"){elto_inside_segment=addr>=parseInt(architecture.memory_layout[2].value)&&addr<=parseInt(architecture.memory_layout[3].value)}if(segment_name=="stack_memory"){elto_inside_segment=addr>=parseInt(architecture.memory_layout[3].value)}return elto_inside_segment}function creator_memory_is_segment_empty(segment_name){var addrs=main_memory_get_addresses();var insiders=addrs.filter((function(elto){return creator_memory_is_address_inside_segment(segment_name,elto)}));return insiders.length===0}function creator_memory_data_compiler(data_address,value,size,dataLabel,DefValue,type){var ret={msg:"",data_address:0};if(data_address%align>0){var to_be_filled=align-data_address%align;creator_memory_zerofill(data_address,to_be_filled);data_address=data_address+to_be_filled}if(data_address%size!==0&&data_address%word_size_bytes!==0){ret.msg="m21";ret.data_address=data_address;return ret}if(dataLabel!=null){data_tag.push({tag:dataLabel,addr:data_address})}ret.msg="";ret.data_address=main_memory_storedata(data_address,value,size,dataLabel,DefValue,DefValue,type);return ret}function creator_insert_instruction(auxAddr,value,def_value,hide,hex,fill_hex,label){var size=Math.ceil(hex.toString().length/2);return main_memory_storedata(auxAddr,hex,size,label,def_value,def_value,"instruction")}function creator_memory_storestring(string,string_length,data_address,label,type,align){if(label!=null){data_tag.push({tag:label,addr:data_address})}return main_memory_storedata(data_address,string,string_length,label,string,string,type)+1}var architecture_available=[];var load_architectures_available=[];var load_architectures=[];var back_card=[];var architecture_hash=[];var architecture={arch_conf:[],memory_layout:[],components:[],instructions:[],directives:[]};var architecture_json="";var textarea_assembly_editor;var codemirrorHistory=null;var code_assembly="";var tokenIndex=0;var nEnters=0;var pc=4;var address;var data_address;var stack_address;var backup_stack_address;var backup_data_address;var pending_instructions=[];var pending_tags=[];var extern=[];var compileError={m0:function(ret){return""+ret.token+""},m1:function(ret){return"Repeated tag: "+ret.token+""},m2:function(ret){return"Instruction '"+ret.token+"' not found"},m3:function(ret){return"Incorrect instruction syntax for '"+ret.token+"'"},m4:function(ret){return"Register '"+ret.token+"' not found"},m5:function(ret){return"Immediate number '"+ret.token+"' is too big"},m6:function(ret){return"Immediate number '"+ret.token+"' is not valid"},m7:function(ret){return"Tag '"+ret.token+"' is not valid"},m8:function(ret){return"Address '"+ret.token+"' is too big"},m9:function(ret){return"Address '"+ret.token+"' is not valid"},m10:function(ret){return".space value out of range ("+ret.token+" is greater than 50MiB)"},m12:function(ret){return"This field is too small to encode in binary '"+ret.token+""},m13:function(ret){return"Incorrect pseudoinstruction definition "+ret.token+""},m14:function(ret){return"Invalid directive: "+ret.token+""},m15:function(ret){return"Invalid value '"+ret.token+"' as number."},m16:function(ret){return'The string of characters must start with "'+ret.token+""},m17:function(ret){return'The string of characters must end with "'+ret.token+""},m18:function(ret){return"Number '"+ret.token+"' is too big"},m19:function(ret){return"Number '"+ret.token+"' is empty"},m21:function(ret){return"The data must be aligned"+ret.token+""},m22:function(ret){return"The number should be positive '"+ret.token+"'"},m23:function(ret){return"Empty directive"+ret.token+""},m24:function(ret){return"After the comma you should go a blank --\x3e "+ret.token+""},m26:function(ret){return"Syntax error near line: "+ret.token+""},m27:function(ret){return"Please check instruction syntax, inmediate ranges, register name, etc."}};let promise;var notifications=[];var example_set_available=[];var example_available=[];var consoleMutex=false;var mutex_read=false;var newExecution=true;var instructions=[];var instructions_tag=[];var tag_instructions={};var instructions_binary=[];var data=[];var data_tag=[];var code_binary="";var update_binary="";var load_binary=false;var totalStats=0;var stats_value=[0,0,0,0,0,0,0,0,0,0,0,0,0];var stats=[{type:"Arithmetic floating point",number_instructions:0,percentage:0},{type:"Arithmetic integer",number_instructions:0,percentage:0},{type:"Comparison",number_instructions:0,percentage:0},{type:"Conditional bifurcation",number_instructions:0,percentage:0},{type:"Control",number_instructions:0,percentage:0},{type:"Function call",number_instructions:0,percentage:0},{type:"I/O",number_instructions:0,percentage:0},{type:"Logic",number_instructions:0,percentage:0,abbreviation:"Log"},{type:"Memory access",number_instructions:0,percentage:0},{type:"Other",number_instructions:0,percentage:0},{type:"Syscall",number_instructions:0,percentage:0},{type:"Transfer between registers",number_instructions:0,percentage:0},{type:"Unconditional bifurcation",number_instructions:0,percentage:0}];var total_clk_cycles=0;var clk_cycles_value=[{data:[0,0,0,0,0,0,0,0,0,0,0,0,0]}];var clk_cycles=[{type:"Arithmetic floating point",clk_cycles:0,percentage:0},{type:"Arithmetic integer",clk_cycles:0,percentage:0},{type:"Comparison",clk_cycles:0,percentage:0},{type:"Conditional bifurcation",clk_cycles:0,percentage:0},{type:"Control",clk_cycles:0,percentage:0},{type:"Function call",clk_cycles:0,percentage:0},{type:"I/O",clk_cycles:0,percentage:0},{type:"Logic",clk_cycles:0,percentage:0,abbreviation:"Log"},{type:"Memory access",clk_cycles:0,percentage:0},{type:"Other",clk_cycles:0,percentage:0},{type:"Syscall",clk_cycles:0,percentage:0},{type:"Transfer between registers",clk_cycles:0,percentage:0},{type:"Unconditional bifurcation",clk_cycles:0,percentage:0}];var keyboard="";var display="";function load_arch_select(cfg){var ret={errorcode:"",token:"",type:"",update:"",status:"ok"};var auxArchitecture=cfg;architecture=register_value_deserialize(auxArchitecture);architecture_hash=[];for(var i=0;i=assembly.length){return null}while(":\t\n \r#".includes(assembly.charAt(index))&&index=assembly.length){return null}if(assembly.charAt(index)=="'"){index++;while(assembly.charAt(index)!="'"&&index1&&stopbit.length){var fieldsLength=0;for(var s=0;s2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}else{var re=new RegExp("[0-9-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseInt(token)>>>0;auxTokenString=auxToken.toString(16).substring(auxToken.toString(16).length-2*architecture.directives[j].size,auxToken.toString(16).length).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}console_log(auxTokenString);var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,parseInt(auxTokenString,16)>>0,"byte");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("byte Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}else{var re=new RegExp("[0-9-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseInt(token)>>>0;auxTokenString=auxToken.toString(16).substring(auxToken.toString(16).length-2*architecture.directives[j].size,auxToken.toString(16).length).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}console_log(auxTokenString);var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,parseInt(auxTokenString,16)>>0,"half");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("half Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}else{var re=new RegExp("[0-9-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseInt(token)>>>0;auxTokenString=auxToken.toString(16).substring(auxToken.toString(16).length-2*architecture.directives[j].size,auxToken.toString(16).length).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}console_log(auxTokenString);var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,parseInt(auxTokenString,16)>>0,"word");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("word Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}else{var re=new RegExp("[0-9-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseInt(token)>>>0;auxTokenString=auxToken.toString(16).substring(auxToken.toString(16).length-2*architecture.directives[j].size,auxToken.toString(16).length).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,parseInt(auxTokenString,16)>>0,"double_word");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("double word Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length);token=hex2float(token)}else{var re=new RegExp("[+e0-9.-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseFloat(token,10);auxTokenString=bin2hex(float2bin(auxToken)).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}console_log(auxTokenString);var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,token,"float");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("float Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length);token=hex2double(token)}else{var re=new RegExp("[+e0-9.-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}auxToken=parseFloat(token,10);console_log(auxTokenString);auxTokenString=bin2hex(double2bin(auxToken)).padStart(2*architecture.directives[j].size,"0");if(auxTokenString.length>2*architecture.directives[j].size){return packCompileError("m18",token,"error","danger")}auxTokenString=auxTokenString.substring(auxTokenString.length-2*architecture.directives[j].size,auxTokenString.length)}console_log(auxTokenString);var r=creator_memory_data_compiler(data_address,auxTokenString,architecture.directives[j].size,label,token,"double");if(r.msg!=""){return packCompileError(r.msg,"","error","danger")}data_address=r.data_address;label=null;console_log("double Terminado");next_token();token=get_token();console_log("token: "+token);for(var z=0;z50*1024*1024){return packCompileError("m10",token,"error","danger")}var size=parseInt(token)*architecture.directives[j].size;data_address=creator_memory_storestring(size,size,data_address,label,"space",align);next_token();token=get_token();console_log("token: "+token);console_log("space Terminado");break;case"align":case"balign":console_log("[b]align");let pow_mode=token==".align";next_token();token=get_token();console_log("token: "+token);if(token==null){return packCompileError("m23","","error","danger")}var re=new RegExp("[0-9-]{"+token.length+"}","g");if(token.search(re)==-1){return packCompileError("m15",token,"error","danger")}if(parseInt(token)<0){return packCompileError("m22",token,"error","danger")}align=pow_mode?Math.pow(2,parseInt(token)):token;console_log(align);next_token();token=get_token();console_log("token: "+token);console_log("align Terminado");break;default:console_log("Default");existsData=false;break}}else if(j==architecture.directives.length-1&&token!=architecture.directives[j].name&&token!=null&&token.search(/\:$/)==-1){creator_memory_prereset();return ret}}}creator_memory_prereset();return ret}function code_segment_compiler(){var ret={errorcode:"",token:"",type:"",update:"",status:"ok"};var existsInstruction=true;next_token();var instInit=tokenIndex;while(existsInstruction){token=get_token();for(var i=0;ifieldsLength){return packCompileError("m12",token,"error","danger")}console_log(reg);console_log(reg.toString(2).padStart(fieldsLength,"0"));console_log(binary);console_log(binary.length);console_log(architecture.instructions[i].fields[a].startbit+1);console_log(binary.length-(architecture.instructions[i].fields[a].startbit+1));binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);console_log(binary);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}regNum++}}}}break;case"SFP-Reg":token=instructionParts[j];console_log("token: "+token);var validReg=false;var regNum=0;for(var a=0;afieldsLength){return packCompileError("m12",token,"error","danger")}binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);re=RegExp("Field[0-9]+");console_log(instruction);instruction=instruction.replace(re,token);console_log(instruction)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}if(architecture.components[z].type=="fp_registers"&&architecture.components[z].double_precision===false){regNum++}}}else{for(var w=0;wfieldsLength){return packCompileError("m12",token,"error","danger")}binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);re=RegExp("Field[0-9]+");console_log(instruction);instruction=instruction.replace(re,token);console_log(instruction)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}if(architecture.components[z].type=="fp_registers"&&architecture.components[z].double_precision===false){regNum++}}}}}}break;case"DFP-Reg":token=instructionParts[j];console_log("token: "+token);var validReg=false;var regNum=0;for(var a=0;afieldsLength){return packCompileError("m12",token,"error","danger")}binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}if(architecture.components[z].type=="fp_registers"&&architecture.components[z].double_precision===true){regNum++}}}else{for(var w=0;wfieldsLength){return packCompileError("m12",token,"error","danger")}binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}if(architecture.components[z].type=="fp_registers"&&architecture.components[z].double_precision===true){regNum++}}}}}}break;case"Ctrl-Reg":token=instructionParts[j];console_log("token: "+token);var validReg=false;var regNum=0;for(var a=0;afieldsLength){return packCompileError("m12",token,"error","danger")}binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+reg.toString(2).padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}else if(z==architecture_hash.length-1&&w==architecture.components[z].elements.length-1&&validReg===false){return packCompileError("m4",token,"error","danger")}if(architecture.components[z].type=="ctr_registers"){regNum++}}}}}break;case"inm-signed":token=instructionParts[j];var token_user="";console_log("token: "+token);for(var a=0;afieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseInt(token,16))===true){return packCompileError("m6",token,"error","danger")}inm=parseInt(token,16).toString(2)}else if(token.match(/^(\d)+\.(\d)+/)){if(float2bin(parseFloat(token)).length>fieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseFloat(token))===true){return packCompileError("m6",token,"error","danger")}inm=float2bin(parseFloat(token,16))}else if(token.match(/^\'(.*?)\'$/)){var re=/^\'(.*?)\'$/;console_log(re);var match=re.exec(token);console_log(match);var asciiCode=match[1].charCodeAt(0);console_log(asciiCode);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,asciiCode);inm=(asciiCode>>>0).toString(2)}else if(isNaN(parseInt(token))){validTagPC=false;startBit=architecture.instructions[i].fields[a].startbit;stopBit=architecture.instructions[i].fields[a].stopbit}else{var comNumPos=Math.pow(2,fieldsLength-1);var comNumNeg=comNumPos*-1;comNumPos=comNumPos-1;console_log(comNumPos);console_log(comNumNeg);if(parseInt(token,10)>comNumPos||parseInt(token,10)>>0).toString(2);inm=inm.substring(inm.length-fieldsLength,inm.length)}if(validTagPC===true){console_log(inm.length);if(inm.length>architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1){return packCompileError("m12",token,"error","danger")}binary=generateBinary(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,binary,inm,fieldsLength,a)}re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}}break;case"inm-unsigned":token=instructionParts[j];var token_user="";console_log("token: "+token);for(var a=0;ab-architecture.instructions[i].fields[a].stopbit[iii]+1)).reduce(((old,newV)=>old+newV))}fieldsLength=getFieldLength(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,a);var inm;if(token.match(/^0x/)){var value=token.split("x");if(value[1].length*4>fieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseInt(token,16))===true){return packCompileError("m6",token,"error","danger")}inm=parseInt(token,16).toString(2)}else if(token.match(/^(\d)+\.(\d)+/)){if(float2bin(parseFloat(token)).length>fieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseFloat(token))===true){return packCompileError("m6",token,"error","danger")}inm=float2bin(parseFloat(token,16))}else if(token.match(/^\'(.*?)\'$/)){var re=/^\'(.*?)\'$/;console_log(re);var match=re.exec(token);console_log(match);var asciiCode=match[1].charCodeAt(0);console_log(asciiCode);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,asciiCode);inm=(asciiCode>>>0).toString(2)}else if(isNaN(parseInt(token))){validTagPC=false;startBit=architecture.instructions[i].fields[a].startbit;stopBit=architecture.instructions[i].fields[a].stopbit}else{var comNumPos=Math.pow(2,fieldsLength);console_log(comNumPos);if(parseInt(token,10)>comNumPos){console_log(oriInstruction);console_log(label);console_log(line);resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseInt(token))===true&&resultPseudo==-3){return packCompileError("m6",token,"error","danger")}inm=(parseInt(token,10)>>>0).toString(2);inm=inm.substring(inm.length-fieldsLength,inm.length)}if(validTagPC===true){console_log(inm.length);if(inm.length>architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1){return packCompileError("m12",token,"error","danger")}binary=generateBinary(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,binary,inm,fieldsLength,a)}re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}}break;case"address":token=instructionParts[j];console_log("token: "+token);for(var a=0;afieldsLength){return packCompileError("m8",token,"error","danger")}if(isNaN(parseInt(token,16))===true){return packCompileError("m9",token,"error","danger")}addr=parseInt(token,16).toString(2);binary=generateBinary(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,binary,inm,fieldsLength,a);re=RegExp("Field[0-9]+");instruction=instruction.replace(re,token)}else{var validTag=false;startBit=architecture.instructions[i].fields[a].startbit;stopBit=architecture.instructions[i].fields[a].stopbit}}}break;case"offset_bytes":token=instructionParts[j];var token_user="";console_log("token: "+token);for(var a=0;afieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseInt(token,16))===true){return packCompileError("m6",token,"error","danger")}inm=parseInt(token,16).toString(2)}else if(token.match(/^(\d)+\.(\d)+/)){if(float2bin(parseFloat(token)).length>fieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseFloat(token))===true){return packCompileError("m6",token,"error","danger")}inm=float2bin(parseFloat(token,16))}else if(isNaN(parseInt(token))){validTagPC=false;startBit=architecture.instructions[i].fields[a].startbit;stopBit=architecture.instructions[i].fields[a].stopbit}else{var comNumPos=Math.pow(2,fieldsLength-1);var comNumNeg=comNumPos*-1;comNumPos=comNumPos-1;console_log(comNumPos);console_log(comNumNeg);if(parseInt(token,10)>comNumPos||parseInt(token,10)>>0).toString(2);inm=inm.substring(inm.length-fieldsLength,inm.length)}if(validTagPC===true){if(inm.length>architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1){return packCompileError("m12",token,"error","danger")}binary=generateBinary(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,binary,inm,fieldsLength,a)}re=RegExp("Field[0-9]+");console_log(instruction);instruction=instruction.replace(re,token);console_log(instruction)}}break;case"offset_words":token=instructionParts[j];var token_user="";console_log("token: "+token);for(var a=0;afieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseInt(token,16))===true){return packCompileError("m6",token,"error","danger")}inm=parseInt(token,16).toString(2)}else if(token.match(/^(\d)+\.(\d)+/)){if(float2bin(parseFloat(token)).length>fieldsLength){resultPseudo=pseudoinstruction_compiler(oriInstruction,label,line);console_log(resultPseudo);if(resultPseudo.status!="ok"){return resultPseudo}}if(isNaN(parseFloat(token))===true){return packCompileError("m6",token,"error","danger")}inm=float2bin(parseFloat(token,16))}else if(isNaN(parseInt(token))){validTagPC=false;startBit=architecture.instructions[i].fields[a].startbit;stopBit=architecture.instructions[i].fields[a].stopbit}else{var comNumPos=Math.pow(2,fieldsLength-1);var comNumNeg=comNumPos*-1;comNumPos=comNumPos-1;console_log(comNumPos);console_log(comNumNeg);if(parseInt(token,10)>comNumPos||parseInt(token,10)>>0).toString(2);inm=inm.substring(inm.length-fieldsLength,inm.length)}if(validTagPC===true){if(inm.length>architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1){return packCompileError("m12",token,"error","danger")}binary=generateBinary(architecture.instructions[i].separated,architecture.instructions[i].fields[a].startbit,architecture.instructions[i].fields[a].stopbit,binary,inm,fieldsLength,a)}re=RegExp("Field[0-9]+");console_log(instruction);instruction=instruction.replace(re,token);console_log(instruction)}}break;default:token=instructionParts[j];console_log("token: "+token);for(var a=0;a{t=!ind?0:t;t+(cv-architecture.instructions[i].fields[a].stopbit[ind]+1)}));console_log(architecture.instructions[i].co.join("").padStart(fieldsLength,"0"))}else{fieldsLength=architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1;console_log(architecture.instructions[i].co.padStart(fieldsLength,"0"));binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+architecture.instructions[i].co.padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length)}console_log(binary);re=RegExp("Field[0-9]+");console_log(instruction);instruction=instruction.replace(re,token);console_log(instruction)}if(architecture.instructions[i].fields[a].type=="cop"){fieldsLength=architecture.instructions[i].fields[a].startbit-architecture.instructions[i].fields[a].stopbit+1;binary=binary.substring(0,binary.length-(architecture.instructions[i].fields[a].startbit+1))+architecture.instructions[i].fields[a].valueField.padStart(fieldsLength,"0")+binary.substring(binary.length-architecture.instructions[i].fields[a].stopbit,binary.length)}}break}}if(validTagPC===false&&resultPseudo==-3){console_log("pendiente");pc=pc+architecture.instructions[i].nwords*4;var padding="";padding=padding.padStart(architecture.instructions[i].nwords*32-binary.length,"0");binary=binary+padding;var hex=bin2hex(binary);var auxAddr=address;console_log(binary);console_log(bin2hex(binary));pending_instructions.push({address:address,instruction:instruction,signature:signatureParts,signatureRaw:signatureRawParts,Label:label,binary:binary,startBit:startBit,stopBit:stopBit,visible:true,line:nEnters});if(pending===false){instructions.push({Break:null,Address:"0x"+address.toString(16),Label:label,loaded:instruction,user:userInstruction,_rowVariant:"",visible:true,hide:false});instructions_binary.push({Break:null,Address:"0x"+address.toString(16),Label:label,loaded:binary,user:null,_rowVariant:"",visible:false});address=address+4*architecture.instructions[i].nwords}else{for(var pos=0;pospendingAddress){instructions.splice(pos,0,{Break:null,Address:"0x"+pendingAddress.toString(16),Label:label,loaded:instruction,user:userInstruction,_rowVariant:"",visible:true,hide:false});instructions_binary.splice(pos,0,{Break:null,Address:"0x"+pendingAddress.toString(16),Label:label,loaded:binary,user:null,_rowVariant:"",visible:false});auxAddr=pendingAddress;break}}}console_log(address.toString(16));console_log(instructions);stopFor=true;break}else{if(resultPseudo==-3){console_log("no pendiente");pc=pc+architecture.instructions[i].nwords*4;var padding="";padding=padding.padStart(architecture.instructions[i].nwords*32-binary.length,"0");binary=binary+padding;var hex=bin2hex(binary);var auxAddr=address;console_log(binary);console_log(bin2hex(binary));if(pending===false){instructions.push({Break:null,Address:"0x"+address.toString(16),Label:label,loaded:instruction,user:userInstruction,_rowVariant:"",visible:true,hide:false});instructions_binary.push({Break:null,Address:"0x"+address.toString(16),Label:label,loaded:binary,user:null,_rowVariant:"",visible:false});address=address+4*architecture.instructions[i].nwords}else{for(var pos=0;pospendingAddress){instructions.splice(pos,0,{Break:null,Address:"0x"+pendingAddress.toString(16),Label:label,loaded:instruction,user:userInstruction,_rowVariant:"",visible:true,hide:false});instructions_binary.splice(pos,0,{Break:null,Address:"0x"+pendingAddress.toString(16),Label:label,loaded:binary,user:null,_rowVariant:"",visible:false});auxAddr=pendingAddress;break}}}stopFor=true;console_log(address.toString(16));console_log(instructions)}}}}return ret}function pseudoinstruction_compiler(instruction,label,line){var ret={errorcode:"",token:"",type:"",update:"",status:"ok"};var re=/\' \'/;instruction=instruction.replace(re,"'\0'");var re=/\'\\n\'/;instruction=instruction.replace(re,"10");console_log(instruction);var re=/\'\\t\'/;instruction=instruction.replace(re,"9");console_log(instruction);var instructionParts=instruction.split(" ");var found=false;var re=/\'\0\'/;instruction=instruction.replace(re,"' '");console_log(instruction);for(var i=0;i;\s]/;while(definition.search(re)!=-1){var match=re.exec(definition);console_log(match);var code;if(instructionParts[match[1]].match(/^\'(.*?)\'$/)){var re=/^\'(.*?)\'$/;console_log(re);var match2=re.exec(instructionParts[match[1]]);console_log(match2);var asciiCode=match2[1].charCodeAt(0);console_log(asciiCode);console_log("value = field('"+asciiCode+"', '("+match[2]+")', '"+match[3]+"')");code="value = field('"+asciiCode+"', '("+match[2]+")', '"+match[3]+"')"}else{console_log("value = field('"+instructionParts[match[1]]+"', '("+match[2]+")', '"+match[3]+"')");code="value = field('"+instructionParts[match[1]]+"', '("+match[2]+")', '"+match[3]+"')"}var value;try{eval(code)}catch(e){if(e instanceof SyntaxError){return packCompileError("m5",token,"error","danger")}}if(value==-1){return packCompileError("m5",token,"error","danger")}definition=definition.replace("Field."+match[1]+".("+match[2]+")."+match[3],value);re=/Field.(\d).\((.*?)\).(.*?)[;\s]/}re=/Field.(\d).SIZE[=<>;\s]/g;if(definition.search(re)!=-1){var match=re.exec(definition);console_log(match);var code;if(instructionParts[match[1]].match(/^\'(.*?)\'$/)){var re=/^\'(.*?)\'$/;console_log(re);var match2=re.exec(instructionParts[match[1]]);console_log(match2);var asciiCode=match2[1].charCodeAt(0);console_log(asciiCode);console_log("value = field('"+asciiCode+"', 'SIZE', null)");code="value = field('"+asciiCode+"', 'SIZE', null)"}else{console_log("value = field('"+instructionParts[match[1]]+"', 'SIZE', null)");code="value = field('"+instructionParts[match[1]]+"', 'SIZE', null)"}var value;try{eval(code)}catch(e){if(e instanceof SyntaxError){return packCompileError("m5",token,"error","danger")}}if(value==-1){return packCompileError("m5",token,"error","danger")}console_log(value);console_log("Field."+match[1]+".SIZE");definition=definition.replace("Field."+match[1]+".SIZE",value)}console_log(definition);re=/reg\.pc/;console_log(re);while(definition.search(re)!=-1){definition=definition.replace(re,"pc");console_log(definition)}re=/no_ret_op\{([^}]*)\};/;console_log(re);while(definition.search(re)!=-1){var match2=re.exec(definition);console_log(match2[1]);eval(match2[1]);definition=definition.replace(re,"");console_log(definition)}console_log(definition);re=/op\{([^}]*)\}/;console_log(re);while(definition.search(re)!=-1){var match2=re.exec(definition);var result;console_log(match2[1]);eval("result="+match2[1]);definition=definition.replace(re,result);console_log(definition)}console_log(definition);var stop_while=0;while(definition.match(/\'(.*?)\'/)&&stop_while===0){var re=/\'(.*?)\'/;if(typeof match!=="undefined"){var match2=re.exec(instructionParts[match[1]]);console_log(match2);var asciiCode=match2[1].charCodeAt(0);console_log(asciiCode);definition=definition.replace(re,asciiCode)}else{stop_while=1}}console_log(definition);console_log(instruction);var re=new RegExp("'","g");instruction=instruction.replace(re,'"');console_log(instruction);var re=/{([^}]*)}/g;var code=re.exec(definition);if(code!=null){while(code!=null){var instructions=code[1].split(";");console_log(instructions);for(var j=0;j>>0).toString(2);binNum=binNum.padStart(32,"0");binNum=binNum.substring(31-startBit,32-endBit);var hexNum="0x"+bin2hex(binNum);return hexNum}else if(type=="float"){var binNum=float2bin(parseFloat(field));console_log(binNum);binNum=binNum.padStart(32,"0");binNum=binNum.substring(31-startBit,32-endBit);var hexNum="0x"+bin2hex(binNum);return hexNum}else if(type=="double"){var binNum=double2bin(parseFloat(field));console_log(binNum);binNum=binNum.padStart(64,"0");binNum=binNum.substring(63-startBit,64-endBit);var hexNum="0x"+bin2hex(binNum);return hexNum}}return-1}function getFieldLength(separated,startbit,stopbit,a){if(startbit==stopbit)console_log("Warning: startbit equal to stopBit, please check the achitecture definitions");let fieldsLength;if(!separated||!separated[a])fieldsLength=startbit-stopbit+1;else fieldsLength=startbit.map(((b,i)=>b-stopbit[i]+1)).reduce(((old,newV)=>old+newV));return fieldsLength}function generateBinary(separated,startbit,stopbit,binary,inm,fieldsLenght,a){if(!separated||!separated[a]){binary=binary.substring(0,binary.length-(startbit+1))+inm.padStart(fieldsLength,"0")+binary.substring(binary.length-stopbit,binary.length)}else{let myInm=inm;for(let i=startbit.length-1;i>=0;i--){let sb=startbit[i],stb=stopbit[i],diff=sb-stb+1;if(myInm.length<=diff){binary=binary.substring(0,binary.length-(sb+1))+myInm.padStart(diff,"0")+binary.substring(binary.length-stb,binary.length);break}else{let tmpinm=inm.substring(myInm.length-diff,myInm.length);binary=binary.substring(0,binary.length-(sb+1))+tmpinm.padStart(diff,"0")+binary.substring(binary.length-stb,binary.length);myInm=myInm.substring(0,myInm.length-diff)}}}return binary}function binaryStringToInt(b){return parseInt(b,2)}var execution_index=0;var run_execution=false;var run_program=false;var iter1=1;var execution_init=1;function packExecute(error,err_msg,err_type,draw){var ret={};ret.error=error;ret.msg=err_msg;ret.type=err_type;ret.draw=draw;return ret}function execute_instruction(){var draw={space:[],info:[],success:[],danger:[],flash:[]};console_log(mutex_read);newExecution=false;do{console_log(execution_index);console_log(readRegister(0,0));if(instructions.length===0){return packExecute(true,"No instructions in memory","danger",null)}if(execution_index<-1){return packExecute(true,"The program has finished","warning",null)}if(execution_index==-1){return packExecute(true,"The program has finished with errors","danger",null)}else if(mutex_read===true){return packExecute(false,"","info",null)}if(execution_init===1){for(var i=0;i=0;z--){if(architecture.components[j].elements[z].name.includes(instructionExecParts[i])){var_readings_definitions[signatureRawParts[i]]="var "+signatureRawParts[i]+" = readRegister ("+j+" ,"+z+', "'+signatureParts[i]+'");\n';var_readings_definitions_prev[signatureRawParts[i]]="var "+signatureRawParts[i]+"_prev = readRegister ("+j+" ,"+z+', "'+signatureParts[i]+'");\n';var_readings_definitions_name[signatureRawParts[i]]="var "+signatureRawParts[i]+"_name = '"+instructionExecParts[i]+"';\n";re=new RegExp("(?:\\W|^)((("+signatureRawParts[i]+") *=)[^=])","g");if(auxDef.search(re)!=-1){var_writings_definitions[signatureRawParts[i]]="writeRegister("+signatureRawParts[i]+", "+j+", "+z+', "'+signatureParts[i]+'");\n'}else{var_writings_definitions[signatureRawParts[i]]="if("+signatureRawParts[i]+" != "+signatureRawParts[i]+"_prev)"+" { writeRegister("+signatureRawParts[i]+" ,"+j+" ,"+z+', "'+signatureParts[i]+'"); }\n'}}}}}else{var_readings_definitions[signatureRawParts[i]]="var "+signatureRawParts[i]+" = "+instructionExecParts[i]+";\n"}}for(var elto in var_readings_definitions){readings_description=readings_description+var_readings_definitions[elto]}for(var elto in var_readings_definitions_prev){readings_description=readings_description+var_readings_definitions_prev[elto]}for(var elto in var_readings_definitions_name){readings_description=readings_description+var_readings_definitions_name[elto]}for(var elto in var_writings_definitions){writings_description=writings_description+var_writings_definitions[elto]}for(var i=0;i=0;j--){var clean_name=clean_string(architecture.components[i].elements[j].name[0],"reg_");var clean_aliases=architecture.components[i].elements[j].name.map((x=>clean_string(x,"reg_"))).join("|");re=new RegExp("(?:\\W|^)((("+clean_aliases+") *=)[^=])","g");if(auxDef.search(re)!=-1){writings_description=writings_description+"\nwriteRegister("+clean_name+", "+i+", "+j+', "'+signatureParts[i]+'");'}re=new RegExp("([^a-zA-Z0-9])(?:"+clean_aliases+")");if(auxDef.search(re)!=-1){readings_description=readings_description+"var "+clean_name+" = readRegister("+i+" ,"+j+', "'+signatureParts[i]+'");\n';readings_description=readings_description+"var "+clean_name+"_name = '"+clean_name+"';\n"}}}auxDef="\n/* Read all instruction fields */\n"+readings_description+"\n/* Original instruction definition */\n"+auxDef+"\n\n/* Modify values */\n"+writings_description;console_log(" ................................. "+"instructions["+execution_index+"]:\n"+auxDef+"\n"+" ................................. ");eval("instructions["+execution_index+"].preload = function(elto) { "+" try {\n"+auxDef.replace(/this./g,"elto.")+"\n"+" }\n"+" catch(e){\n"+" throw e;\n"+" }\n"+"}; ")}try{var result=instructions[execution_index].preload(this);if(typeof result!="undefined"&&result.error){return result}}catch(e){var msg="";if(e instanceof SyntaxError)msg="The definition of the instruction contains errors, please review it"+e.stack;else msg=e.msg;console_log("Error: "+e.stack);error=1;draw.danger.push(execution_index);execution_index=-1;return packExecute(true,msg,"danger",draw)}stats_update(type);clk_cycles_update(type);if(execution_index==-1){error=1;return packExecute(false,"","info",null)}if(error!==1&&execution_index=instructions.length&&mutex_read===true){for(var i=0;i=instructions.length&&mutex_read===false){for(var i=0;i=parseInt(parseInt(architecture.memory_layout[2].value))){draw.danger.push(execution_index);throw packExecute(true,"Stack pointer cannot be placed in the data segment","danger",null)}else if(stackLimit<=parseInt(architecture.memory_layout[1].value)&&stackLimit>=parseInt(architecture.memory_layout[0].value)){draw.danger.push(execution_index);throw packExecute(true,"Stack pointer cannot be placed in the text segment","danger",null)}else{var diff=parseInt(architecture.memory_layout[4].value)-stackLimit;if(diff>0){creator_memory_zerofill(stackLimit,diff)}track_stack_setsp(stackLimit);architecture.memory_layout[4].value="0x"+stackLimit.toString(16).padStart(8,"0").toUpperCase()}}function stats_update(type){for(var i=0;i ");var value=fn_post_read(keystroke,fn_post_params);keyboard=keyboard+" "+value;return packExecute(false,"The data has been uploaded","danger",null)}mutex_read=true;app._data.enter=false;console_log(mutex_read);if(newExecution===true){app._data.keyboard="";consoleMutex=false;mutex_read=false;app._data.enter=null;show_notification("The data has been uploaded","info");if(run_program===false){uielto_toolbar_btngroup.methods.executeProgram()}return}if(consoleMutex===false){setTimeout(keyboard_read,1e3,fn_post_read,fn_post_params);return}fn_post_read(app._data.keyboard,fn_post_params);app._data.keyboard="";consoleMutex=false;mutex_read=false;app._data.enter=null;show_notification("The data has been uploaded","info");console_log(mutex_read);if(execution_index>=instructions.length){for(var i=0;i"+'

'+""+'
'+'
'+' '+"
"+""+"
"+' '+" Loading..."+" "+"
"+"
"+""+" "};Vue.component("spinner-loading",uielto_loading);var uielto_browser={props:{id:{type:String,required:true}},data:function(){return{}},methods:{},template:''+' You are using an unsupported browser, please use one of the following:'+"
"+" "+""+' '+" Google Chrome 70+"+' '+' '+" "+" "+" "+" "+' '+" Mozilla Firefox 60+"+' '+' '+" "+" "+" "+" "+' '+" Apple Safari 12+"+' '+' '+" "+" "+" "+""+" "+"
"};Vue.component("supported-browser",uielto_browser);var uielto_navbar={props:{version:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{load_num_version(){$.getJSON("package.json",(function(cfg){creator_information=cfg;app._data.version=cfg.version}))}},template:' '+' '+""+' '+' '+' '+'

Creator {{version}}

'+"
"+""+' '+" {{architecture_name}}"+" "+"
"+"
"+""+' '+' '+' '+" didaCtic and geneRic assEmbly progrAmming simulaTOR"+" "+" "+" "+"
"+"
"};Vue.component("navbar-creator",uielto_navbar);var uielto_toolbar={props:{id:{type:String,required:true},components:{type:String,required:true},browser:{type:String,required:true},arch_available:{type:Array,required:true}},computed:{components_array:function(){return this._props.components.split("|")}},methods:{},template:''+' '+' '+" '+" "+" "+'
'+"
"+"
"+"
"};Vue.component("uielto-toolbar",uielto_toolbar);var uielto_toolbar_btngroup={props:{group:{type:Array,required:true},browser:{type:String,required:true},arch_available:{type:Array,required:true}},data:function(){return{}},methods:{change_UI_mode(e){if(app._data.creator_mode!=e){if(e=="architecture"){$(".loading").show();setTimeout((function(){app._data.creator_mode=e;app.$forceUpdate();$(".loading").hide()}),50);return}app._data.creator_mode=e;if(e=="assembly"){setTimeout((function(){codemirrorStart();if(codemirrorHistory!=null){textarea_assembly_editor.setHistory(codemirrorHistory);textarea_assembly_editor.undo()}textarea_assembly_editor.setValue(code_assembly);if(update_binary!=""){$("#divAssembly").attr("class","col-lg-10 col-sm-12");$("#divTags").attr("class","col-lg-2 col-sm-12");$("#divTags").show()}}),50)}if(textarea_assembly_editor!=null&&e!="assembly"){app._data.assembly_code=textarea_assembly_editor.getValue();code_assembly=textarea_assembly_editor.getValue();codemirrorHistory=textarea_assembly_editor.getHistory();textarea_assembly_editor.toTextArea()}app.$bvToast.hide()}},load_arch_select(arch){uielto_preload_architecture.methods.load_arch_select(arch);app.$bvToast.hide()},new_assembly(){textarea_assembly_editor.setValue("")},assembly_compiler(code){show_loading();promise=new Promise(((resolve,reject)=>{setTimeout((function(){if(typeof code!=="undefined"){code_assembly=code}else{code_assembly=textarea_assembly_editor.getValue()}var ret=assembly_compiler();app._data.totalStats=0;app._data.instructions=instructions;tokenIndex=0;uielto_toolbar_btngroup.methods.reset(true);if(typeof Storage!=="undefined"){var aux_object=jQuery.extend(true,{},architecture);var aux_architecture=register_value_serialize(aux_object);var aux_arch=JSON.stringify(aux_architecture,null,2);var date=new Date;var auxDate=date.getHours()+":"+date.getMinutes()+":"+date.getSeconds()+" - "+date.getDate()+"/"+(date.getMonth()+1)+"/"+date.getFullYear();localStorage.setItem("arch_name",app._data.architecture_name);localStorage.setItem("architecture_copy",aux_arch);localStorage.setItem("assembly_copy",code_assembly);localStorage.setItem("date_copy",auxDate)}hide_loading();switch(ret.type){case"error":uielto_toolbar_btngroup.methods.compile_error(ret.msg,ret.token,ret.line);break;case"warning":show_notification(ret.token,ret.bgcolor);break;default:show_notification("Compilation completed successfully","success");break}resolve("0")}),25)}));app.$bvToast.hide()},compile_error(msg,token,line){var code_assembly_segment=code_assembly.split("\n");uielto_toolbar_btngroup.methods.change_UI_mode("assembly");setTimeout((function(){app.$root.$emit("bv::show::modal","modalAssemblyError");app.modalAssemblyError.line1="";app.modalAssemblyError.code1="";if(line>0){app.modalAssemblyError.line1=line;app.modalAssemblyError.code1=code_assembly_segment[line-1]}app.modalAssemblyError.line2=line+1;app.modalAssemblyError.code2=code_assembly_segment[line];app.modalAssemblyError.line3="";app.modalAssemblyError.code3="";if(line=0&&execution_index+ +(parseInt(architecture.arch_conf[1].value)/8)0&&execution_index+4>=instructions.length){$(".instructions_table").animate({scrollTop:$(".instructions_table").height()},300)}if(reset_graphic===true&&app._data.data_mode=="stats"){ApexCharts.exec("graphic","updateSeries",stats_value)}hide_loading()}),25);app.$bvToast.hide()},execute_instruction(){if(run_program==false){creator_ga("execute","execute.instruction","execute.instruction")}var ret=execute_instruction();if(typeof ret==="undefined"){console.log("AQUI hemos llegado y un poema se ha encontrado...")}if(ret.msg!=null){show_notification(ret.msg,ret.type)}if(ret.draw!=null&&run_program==false){for(var i=0;i=0&&execution_index+40&&execution_index+4>=instructions.length){$(".instructions_table").animate({scrollTop:$(".instructions_table").height()},300)}}if(app._data.data_mode=="stats"){ApexCharts.exec("graphic","updateSeries",stats_value)}return}},execute_program(but){creator_ga("execute","execute.run","execute.run");app._data.run_execution=true;app._data.run_execution=false;run_program=true;if(instructions.length===0){show_notification("No instructions in memory","danger");run_program=false;return}if(execution_index<-1){show_notification("The program has finished","warning");run_program=false;return}if(execution_index==-1){show_notification("The program has finished with errors","danger");run_program=false;return}this.program_execution_inst(but)},program_execution_inst(but){for(var i=0;i=0;i++){if(mutex_read===true){iter1=1;run_program=false;return}else if(instructions[execution_index].Break===true&&iter1===0){iter1=1;run_program=false;return}else if(this.run_execution===true){app._data.run_execution=false;iter1=1;run_program=false;return}else if(but===true&&i===0){app._data.resetBut=false}else if(this.resetBut===true){app._data.resetBut=false;run_program=false;return}else{this.execute_instruction();iter1=0}}if(execution_index>=0){setTimeout(this.program_execution_inst,15)}},stop_execution(){app._data.run_execution=true}},template:" "+" "+" "+' '+button_architecture()+button_assembly()+button_simulator()+button_save_architecture()+dropdown_assembly_file()+button_compile()+dropdown_library()+button_reset()+button_instruction()+button_run()+button_stop()+button_examples()+button_calculator()+button_configuration()+button_information()+" "+" "+" "+" "};Vue.component("toolbar-btngroup",uielto_toolbar_btngroup);function button_architecture(){return'"+' {{item.name}}'+""}function button_assembly(){return'"+' '+" Assembly"+""}function button_simulator(){return'"+' '+" Simulator"+""}function button_save_architecture(){return' "+' '+" Save"+""}function dropdown_assembly_file(){return"'+' '+' '+" New"+" "+" "+' '+" Load"+" "+" "+' '+" Save"+" "+" "+' '+" Examples"+" "+" "+' '+" Get code as URI"+" "+""}function button_compile(){return''+' '+" Compile/Linked"+""}function dropdown_library(){return''+" "+' '+" Create"+" "+" "+' '+" Load Library"+" "+' '+' '+" Remove"+" "+""}function button_reset(){return''+' '+" Reset"+""}function button_instruction(){return''+' '+" Inst."+""+''+''+''}function button_run(){return''+' '+" Run"+""}function button_stop(){return''+' '+" Stop"+""}function button_examples(){return'"+' '+" Examples"+""}function button_calculator(){return'"+' '+" Calculator"+""}function button_configuration(){return'"+' '+" Configuration"+""}function button_information(){return''+' '+" Info"+""+" "+"\x3c!-- Information popover --\x3e"+''}var uielto_configuration={props:{id:{type:String,required:true},instructions_packed:{type:Number,required:true},stack_total_list:{type:Number,required:true},autoscroll:{type:Boolean,required:true},notification_time:{type:Number,required:true},instruction_help_size:{type:Number,required:true},dark:{type:Boolean,required:true},c_debug:{type:Boolean,required:true}},methods:{get_configuration(){if(localStorage.getItem("instructions_packed")!=null){app._data.instructions_packed=parseInt(localStorage.getItem("instructions_packed"))}if(localStorage.getItem("stack_total_list")!=null){app._data.stack_total_list=parseInt(localStorage.getItem("stack_total_list"))}if(localStorage.getItem("autoscroll")!=null){app._data.autoscroll=localStorage.getItem("autoscroll")==="true"}if(localStorage.getItem("notification_time")!=null){app._data.notification_time=parseInt(localStorage.getItem("notification_time"))}if(localStorage.getItem("instruction_help_size")!=null){app._data.instruction_help_size=parseInt(localStorage.getItem("instruction_help_size"))}},get_dark_mode(){if(localStorage.getItem("dark_mode")!=null){document.getElementsByTagName("body")[0].style=localStorage.getItem("dark_mode");if(localStorage.getItem("dark_mode")==""){app._data.dark=false}else{app._data.dark=true}}else{var default_style=window.matchMedia("(prefers-color-scheme: dark)").matches;if(default_style===true){document.getElementsByTagName("body")[0].style="filter: invert(88%) hue-rotate(160deg) !important; background-color: #111 !important;";app._data.dark=true}else{document.getElementsByTagName("body")[0].style="";app._data.dark=false}}},change_execution_speed(value){var prev_instruction_packed=this._props.instructions_packed;if(value){this._props.instructions_packed=this._props.instructions_packed+value;if(this._props.instructions_packed<1){this._props.instructions_packed=1}if(this._props.instructions_packed>101){this._props.instructions_packed=101}}else{this._props.instructions_packed=parseInt(this._props.instructions_packed)}app._data.instructions_packed=this._props.instructions_packed;localStorage.setItem("instructions_packed",this._props.instructions_packed);creator_ga("configuration","configuration.execution_speed","configuration.execution_speed.speed_"+(prev_instruction_packed>this._props.instructions_packed).toString())},change_stack_max_list(value){var prev_stack_total_list=this._props.stack_total_list;if(value){this._props.stack_total_list=this._props.stack_total_list+value;if(this._props.stack_total_list<1){this._props.stack_total_list=20}if(this._props.stack_total_list>500){this._props.stack_total_list=500}}else{this._props.stack_total_list=parseInt(this._props.stack_total_list)}app._data.stack_total_list=this._props.stack_total_list;localStorage.setItem("stack_total_list",this._props.stack_total_list);creator_ga("configuration","configuration.stack_total_list","configuration.stack_total_list.speed_"+(prev_stack_total_list>this._props.stack_total_list).toString())},change_autoscroll(){this._props.autoscroll=!this._props.autoscroll;localStorage.setItem("autoscroll",this._props.autoscroll);app._data.autoscroll=this._props.autoscroll;creator_ga("configuration","configuration.autoscroll","configuration.autoscroll."+this._props.autoscroll)},change_notification_time(value){var prev_notification_time=this._props.notification_time;if(value){this._props.notification_time=this._props.notification_time+value;if(this._props.notification_time<1e3){this._props.notification_time=1e3}if(this._props.notification_time>3500){this._props.notification_time=3500}}else{this._props.notification_time=parseInt(this._props.notification_time)}app._data.notification_time=this._props.notification_time;localStorage.setItem("notification_time",this._props.notification_time);creator_ga("configuration","configuration.notification_time","configuration.notification_time.time_"+(prev_notification_time>this._props.notification_time).toString())},change_instruction_help_size(value){var prev_instruction_help_size=this._props.instruction_help_size;if(value){this._props.instruction_help_size=this._props.instruction_help_size+value;if(this._props.instruction_help_size<15){this._props.instruction_help_size=15}if(this._props.instruction_help_size>65){this._props.instruction_help_size=65}}else{this._props.instruction_help_size=parseInt(this._props.instruction_help_size)}app._data.instruction_help_size=this._props.instruction_help_size;localStorage.setItem("instruction_help_size",this._props.instruction_help_size);creator_ga("configuration","configuration.instruction_help_size","configuration.instruction_help_size.size_"+(prev_instruction_help_size>this._props.instruction_help_size).toString())},change_dark_mode(){this._props.dark=!this._props.dark;if(this._props.dark){document.getElementsByTagName("body")[0].style="filter: invert(88%) hue-rotate(160deg) !important; background-color: #111 !important;";localStorage.setItem("dark_mode","filter: invert(88%) hue-rotate(160deg) !important; background-color: #111 !important;")}else{document.getElementsByTagName("body")[0].style="";localStorage.setItem("dark_mode","")}app._data.dark=this._props.dark;creator_ga("configuration","configuration.dark_mode","configuration.dark_mode."+this._props.dark)},change_debug_mode(){this._props.c_debug=!this._props.c_debug;app._data.c_debug=this._props.c_debug;creator_ga("configuration","configuration.debug_mode","configuration.debug_mode."+this._props.c_debug)}},template:' "+" "+" "+' '+' '+" "+" "+' -'+" "+' '+" "+" "+' +'+" "+" "+" "+" "+' '+' '+" "+" "+' -'+" "+' '+" "+" "+' +'+" "+" "+" "+" "+' '+' '+' '+" "+" "+" "+' '+' '+" "+" "+' -'+" "+' '+" "+" "+' +'+" "+" "+" "+" "+' '+' '+" "+" "+' -'+" "+' '+" "+" "+' +'+" "+" "+" "+" "+" "+' '+' '+' '+" "+" "+" "+' '+' '+' '+" "+" "+" "+" "+" "};Vue.component("form-configuration",uielto_configuration);var uielto_info={props:{target:{type:String,required:true},show_instruction_help:{type:Boolean,required:true}},methods:{closePopover(){this.$root.$emit("bv::hide::popover")}},template:' '+" "+" "+' "+' '+" Help"+" "+" "+' "+' '+" Instruction Help"+" "+" "+' "+' '+" Show Notifications"+" "+" "+' "+' '+" About us"+" "+" "};Vue.component("popover-info",uielto_info);var uielto_about={props:{id:{type:String,required:true}},template:' "+" "+" "+" "+" "+" "+""+" "+""+" "+""+" "+" "+" "+' Contact us: creator.arcos.inf.uc3m.es@gmail.com'+" "+" "+" "+' '+' '+' '+" "+' '+" "+" "+' '+" "+' '+" "+" "+" "+" "+" "+" "+" "};Vue.component("uielto-about",uielto_about);var uielto_author={props:{author_img:{type:String,required:true},author_alt:{type:String,required:true},author_full_name:{type:String,required:true},author_href_linked:{type:String,required:false},author_href_rgate:{type:String,required:false},author_href_github:{type:String,required:false}},template:' '+" "+" "+'
{{ author_full_name }}
'+"
"+' '+' '+" linkedin"+" "+"
"+' '+' '+" r-gate"+" "+"
"+' '+' '+" github"+" "+"
"+" "+"
"};Vue.component("card-author",uielto_author);var uielto_notifications={props:{id:{type:String,required:true},notifications:{type:Array,required:true}},template:' "+" "+' '+" There's no notification at the moment"+" "+" "+' '+' '+' '+' '+" {{item.mess}}"+" "+' {{item.time}} - {{item.date}}'+" "+" "+" "};Vue.component("uielto-notifications",uielto_notifications);var uielto_instruction_help={props:{id:{type:String,required:true},architecture_name:{type:String,required:true},architecture:{type:Object,required:true},architecture_guide:{type:String,required:true},instruction_help_size:{type:Object,required:true}},data:function(){return{instHelpFilter:null,insHelpFields:["name"]}},methods:{get_width(){return this._props.instruction_help_size+"vw"}},template:''+" "+' "+" "+"
"+' {{architecture_name}} Guide'+"
"+" "+' '+" "+' "+" "+" "+" "+"'+" "+' '+' "+" "+" "+" "+' '+" '+' '+" {{item.description}}"+" "+" "+" "+" "+' '+" '+' '+" {{item.description}}"+" "+" "+" "+" "+' '+' "+' '+" Delete"+" "+" "+" "+""};Vue.component("preload-architecture",uielto_preload_architecture);var uielto_new_architecture={props:{},data:function(){return{}},methods:{new_arch(){show_loading();$.getJSON("architecture/new_arch.json"+"?v="+(new Date).getTime(),(function(cfg){uielto_new_architecture.methods.load_arch_select_aux(cfg);hide_loading();show_notification("New Architecture has been loaded correctly","success");creator_ga("architecture","architecture.loading","architectures.loading.new_architecture")})).fail((function(){hide_loading();show_notification("New Architecture is not currently available","info")}))},load_arch_select_aux(cfg){var aux_architecture=cfg;architecture=register_value_deserialize(aux_architecture);architecture_json="new_arch";uielto_preload_architecture.data.architecture_name=architecture.arch_conf[0].value;app._data.architecture=architecture;app._data.architecture_name=architecture.arch_conf[0].value;app._data.architecture_guide="";architecture_hash=[];for(i=0;i'+" '+' '+' '+" "+" "+""+' '+' '+' '+" Allows you to define an architecture from scratch."+" "+" "+" "+" "+""};Vue.component("new-architecture",uielto_new_architecture);var uielto_load_architecture={props:{},data:function(){return{name_arch:"",description_arch:"",load_arch:"",show_modal:false}},methods:{read_arch(e){show_loading();e.preventDefault();if(!this.name_arch||!this.load_arch){hide_loading();show_notification("Please complete all fields","danger");return}this.show_modal=false;var file;var reader;var files=document.getElementById("arch_file").files;for(var i=0;i"+" "+' '+' '+" "+" "+" "+' '+' '+' '+" Allows to load the definition of an already created architecture."+" "+" "+" "+" "+" "+' '+" "+' '+" "+"
"+' '+" "+"
"+' '+" "+"
"+"
"+" "+""};Vue.component("load-architecture",uielto_load_architecture);var uielto_delete_architecture={props:{id:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{}},methods:{remove_cache_arch(index){var id=architecture_available[index].name;for(var i=0;i'+' '+" Are you sure you want to delete the architecture?"+" "+" "};Vue.component("delete-architecture",uielto_delete_architecture);var uielto_backup={props:{id:{type:String,required:true},date_copy:{type:String,required:true}},data:function(){return{show_modal:false}},methods:{load_copy(){var aux_architecture=JSON.parse(localStorage.getItem("architecture_copy"));architecture=register_value_deserialize(aux_architecture);app._data.architecture_name=localStorage.getItem("arch_name");app._data.architecture=architecture;architecture_hash=[];for(var i=0;i'+' '+" A backup is available"+" "+"
"+' '+" Date: {{date_copy}}"+" "+" "+' '+' '+" "+' '+" Discard"+" "+" "+" "+" "+' '+" Load"+" "+" "+" "+" "+""};Vue.component("uielto-backup",uielto_backup);var uielto_save_architecture={props:{id:{type:String,required:true}},data:function(){return{name_arch_save:""}},methods:{arch_save(){var aux_object=jQuery.extend(true,{},architecture);var aux_architecture=register_value_serialize(aux_object);aux_architecture.components.forEach(((c,i)=>{c.elements.forEach(((e,j)=>{if(e.default_value)e.value=e.default_value;else e.value=0}))}));var text_2_write=JSON.stringify(aux_architecture,null,2);var textFileAsBlob=new Blob([text_2_write],{type:"text/json"});var file_name;if(this.name_arch_save==""){file_name="architecture.json"}else{file_name=this.name_arch_save+".json"}var download_link=document.createElement("a");download_link.download=file_name;download_link.innerHTML="My Hidden Link";window.URL=window.URL||window.webkitURL;download_link.href=window.URL.createObjectURL(textFileAsBlob);download_link.onclick=destroyClickedElement;download_link.style.display="none";document.body.appendChild(download_link);download_link.click();var name_arch=file_name.replace(".json","");load_architectures_available.push({name:name_arch,img:"./images/personalized_logo.png",alt:name_arch+" logo",id:"select_conf"+name_arch,description:"",available:1});load_architectures.push({id:name_arch,architecture:text_2_write});if(typeof Storage!=="undefined"){var auxArch=JSON.stringify(load_architectures,null,2);localStorage.setItem("load_architectures",auxArch);auxArch=JSON.stringify(load_architectures_available,null,2);localStorage.setItem("load_architectures_available",auxArch)}show_notification("Save architecture","success")},clean_form(){this.name_arch_save=""}},template:''+' Enter the name of the architecture to save:'+"
"+' '+" "+"
"};Vue.component("save-architecture",uielto_save_architecture);var uielto_arch_conf={props:{arch_conf:{type:Array,required:true}},data:function(){return{arch_fields:["field","value","actions"]}},methods:{edit_arch_field_modal(field,index,button){app._data.modal_edit_arch_field.title="Edit "+field;app._data.modal_edit_arch_field.field=field;app._data.modal_edit_arch_field.value=this._props.arch_conf[index].value;app._data.modal_edit_arch_field.index=index;this.$root.$emit("bv::show::modal","edit_arch_field",button)},reset_arch_field_modal(field,index,button){app._data.modal_reset_arch_field.title="Reset "+field;app._data.modal_reset_arch_field.index=index;this.$root.$emit("bv::show::modal","reset_arch_field",button)}},template:'
'+""+'
'+' Architecture general information:'+"
"+"
"+""+'
'+""+" \x3c!-- Architecture configuration table --\x3e"+'
'+' '+""+" \x3c!-- For each instruction --\x3e"+""+' "+""+' "+""+' "+" "+"
"+""+'
'+""+"
"};Vue.component("arch-conf",uielto_arch_conf);var uielto_arch_conf_edit={props:{id:{type:String,required:true},title:{type:String,required:true},arch_field:{type:String,required:true},arch_field_value:{type:String,required:true},arch_field_index:{type:Number,required:true}},data:function(){return{actionTypes:[{value:"big_endian",text:"Big Endian"},{value:"little_endian",text:"Little Endian"}],show_modal:false}},methods:{verify_edit_arch_field(evt,index){evt.preventDefault();if(!this._props.arch_field_value){show_notification("Please complete the fields","danger")}else{this.edit_arch_field(index)}},edit_arch_field(index){this.show_modal=false;architecture.arch_conf[index].value=this._props.arch_field_value;if(index===0){app._data.architecture_name=architecture.arch_conf[index].value}show_notification("Architecture field correctly modified","success")},valid(value){if(parseInt(value)!==0){if(!value){return false}else{return true}}else{return true}}},template:' '+" "+""+" "+" {{arch_field}}:"+' '+" "+""+" "+" "+" {{arch_field}}:"+' '+" "+" "+""+" "+" {{arch_field}}:"+' '+" "+" "+""+" "+" {{arch_field}}:"+" '+" "+" "+""+" "+""};Vue.component("arch-conf-edit",uielto_arch_conf_edit);var uielto_arch_conf_reset={props:{id:{type:String,required:true},title:{type:String,required:true},arch_field_index:{type:Number,required:true},arch_field_value:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_arch_field(index){show_loading();for(var i=0;i'+' Are you sure you want to reset the item?'+""};Vue.component("arch-conf-reset",uielto_arch_conf_reset);var uielto_memory_layout={props:{memory_layout:{type:Array,required:true}},data:function(){return{}},methods:{edit_memory_layout_modal(button){app.$refs.memory_layout_edit.memory_layout=structuredClone(this._props.memory_layout);this.$root.$emit("bv::show::modal","memory_layout_edit",button)}},template:'
'+""+'
'+' Memory layout:'+'
'+'
'+' '+' '+" Change Memory Layout"+" "+"
"+'
'+' "+' '+" Reset Memory Layout"+" "+"
"+"
"+"
"+"
"+""+'
'+""+" \x3c!-- Memory layout sketch --\x3e"+'
'+' '+" "+' '+"
"+" .text"+"
"+"
"+"
"+' '+' '+" {{memory_layout[0].value}}"+" "+"
"+"
"+' '+" {{memory_layout[1].value}}"+" "+"
"+"
"+""+" "+' '+"
"+" .data"+"
"+"
"+"
"+' '+' '+" {{memory_layout[2].value}}"+" "+"
"+"
"+' '+" {{memory_layout[3].value}}"+" "+"
"+"
"+""+" "+' '+"
"+" ..."+"
"+"
"+"
"+' '+" "+" "+"
"+""+" "+' '+"
"+" stack"+"
"+"
"+"
"+' '+' '+" {{memory_layout[4].value}}"+" "+"
"+"
"+' '+" {{memory_layout[5].value}}"+" "+"
"+"
"+"
"+"
"+""+'
'+""+"
"};Vue.component("memory-layout",uielto_memory_layout);var uielto_memory_layout_form={props:{id:{type:String,required:true}},data:function(){return{memory_layout:["","","","","",""],show_modal:false}},methods:{verify_edit_memory_layout(evt){evt.preventDefault();for(var i=0;i=parseInt(this.memory_layout[j].value)){show_notification("The segment can not be overlap","danger");return}}}this.edit_memory_layout()},edit_memory_layout(){this.show_modal=false;architecture.memory_layout=structuredClone(this.memory_layout);backup_stack_address=architecture.memory_layout[4].value;backup_data_address=architecture.memory_layout[3].value;show_notification("Memory layout correctly modified","success")},valid(value){if(parseInt(value)!==0){if(!value){return false}else{return true}}else{return true}}},template:' '+" "+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+" "+""};Vue.component("memory-layout-edit",uielto_memory_layout_form);var uielto_memory_layout_reset={props:{id:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_memory_layout(){show_loading();for(var i=0;i'+' Are you sure you want to reset the mememory layout set?'+""};Vue.component("memory-layout-reset",uielto_memory_layout_reset);var uielto_register_file={props:{register_file:{type:Array,required:true}},data:function(){return{}},methods:{edit_register_file_modal(name,index,button){app._data.modal_edit_register_file.title="Edit "+name;app._data.modal_edit_register_file.name=name;app._data.modal_edit_register_file.index=index;this.$root.$emit("bv::show::modal","edit_register_file",button)},delete_register_file_modal(index,button){app._data.modal_delete_register_file.title="Delete "+name;app._data.modal_delete_register_file.index=index;this.$root.$emit("bv::show::modal","delete_register_file",button)},new_register_modal(name,index,button){app._data.modal_new_register.register_file_index=index;app._data.modal_new_register.type=architecture.components[index].type;app._data.modal_new_register.double_precision=architecture.components[index].double_precision;app._data.modal_new_register.double_precision_type=architecture.components[index].double_precision_type;app._data.modal_new_register.simple_reg=[];for(var i=0;i"+"
"+' Register file of the architecture:'+""+'
'+'
'+' "+' '+" New Register File"+" "+"
"+""+'
'+' "+' '+" Reset Register Rile"+" "+"
"+""+"
"+""+""+" \x3c!-- Register File table --\x3e"+'
'+"
"+'
'+""+" \x3c!-- For each register file --\x3e"+' '+' '+' '+" {{item.name}}"+" "+" "+' '+" "+""+""+' '+" "+""+""+' '+' '+" New Register"+" "+""+' '+' '+" Edit Register File"+" "+""+' '+' '+" Delete Register File"+" "+" "+" "+" "+"
"+"
"+""};Vue.component("register-file-arch",uielto_register_file);var uielto_register_file_new={props:{id:{type:String,required:true}},data:function(){return{register_file_types:[{text:"Integer",value:"int_registers"},{text:"Floating point",value:"fp_registers"},{text:"Control",value:"ctrl_registers"}],double_precision_type:[{text:"Linked",value:"linked"},{text:"Extended",value:"extended"}],register_file:{name:"",type:"",precision:"",double_precision_type:""},show_modal:false}},methods:{verify_new_register_file(evt){evt.preventDefault();if(!this.register_file.name||!this.register_file.type){show_notification("Please complete all fields","danger")}else{if(this.register_file.precision.length>0){if(!this.register_file.double_precision_type){show_notification("Please complete all fields","danger");return}}for(var i=0;i0){precision=true}if(precision===false){this.register_file.double_precision_type=""}var new_register_file={name:this.register_file.name,type:this.register_file.type,double_precision:precision,double_precision_type:this.register_file.double_precision_type,elements:[]};architecture.components.push(new_register_file);var new_register_file_hash={name:this.register_file.name,index:architecture_hash.length};architecture_hash.push(new_register_file_hash);show_notification("Register file correctly created","success")},clean_form(){this.register_file.name="";this.register_file.type="";this.register_file.precision="";this.register_file.double_precision_type=""},valid(value){if(parseInt(value)!==0){if(!value){return false}else{return true}}else{return true}}},template:''+" "+' '+' '+" "+" "+""+' '+' '+" "+" "+""+" "+' '+' '+" Double Precision"+" "+" "+" "+""+' '+' '+" "+" "+""+" "+""};Vue.component("register-file-new",uielto_register_file_new);var uielto_register_file_reset={props:{id:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_register_file(){show_loading();for(var i=0;i'+' Are you sure you want to reset the architecture?'+""};Vue.component("register-file-reset",uielto_register_file_reset);var uielto_register_file_edit={props:{id:{type:String,required:true},title:{type:String,required:true},name:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{show_modal:false}},methods:{verify_edit_register_file(evt){evt.preventDefault();if(!this._props.name){show_notification("Please complete all fields","danger")}else{for(var i=0;i'+" "+' '+' '+" "+" "+" "+""};Vue.component("register-file-edit",uielto_register_file_edit);var uielto_register_file_delete={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{}},methods:{delete_register_file(){architecture.components.splice(this._props.index,1);architecture_hash.splice(this._props.index,1);for(var j=0;j'+' Are you sure you want to delete the register file?'+""};Vue.component("register-file-delete",uielto_register_file_delete);var uielto_registers={props:{registers:{type:Array,required:true},register_file_index:{type:Number,required:true}},data:function(){return{registers_fields:["name","ID","nbits","default_value","properties","actions"]}},methods:{edit_register_modal(name,index,button){app._data.modal_edit_register.title="Edit "+name;app._data.modal_edit_register.register_file_index=this._props.register_file_index;app._data.modal_edit_register.register_index=index;if(architecture.components[this._props.register_file_index].double_precision_type=="linked"){app._data.modal_edit_register.simple_reg=[];for(var i=0;i"+""+" \x3c!-- For each register --\x3e"+""+' "+""+' "+""+' "+""+' "+""};Vue.component("registers",uielto_registers);var uielto_registers_new={props:{id:{type:String,required:true},register_file_index:{type:Number,required:true},type:{type:String,required:true},double_precision:{type:String,required:true},double_precision_type:{type:String,required:true},reg_id:{type:Number,required:true},simple_reg:{type:Array,required:true}},data:function(){return{register:{name:"",id:this._props.reg_id,type:"",default_value:"",properties:[],precision:""},show_modal:false}},methods:{new_register_verify(evt){evt.preventDefault();if(this.register.name.length===0||!this.register.name){show_notification("Please complete all fields","danger")}else{if(!this.register.default_value&&this._props.double_precision===false){show_notification("Please complete all fields","danger")}else if(isNaN(this.register.default_value)){show_notification("The default value must be a number","danger")}else{for(var i=0;i'+" "+' '+" "+" "+""+' '+' "+" "+" "+""+' "+' '+" "+" "+""+' '+' '+' Read'+' Write'+' Ignore Write'+' Saved'+' Pointer'+' Data'+' Code'+' Stack'+' Frame'+" "+" "+""+' '+'
'+'
'+" '+" "+"
"+'
'+" '+" "+"
"+"
"+"
"+"
"+""};Vue.component("registers-new",uielto_registers_new);var uielto_registers_edit={props:{id:{type:String,required:true},title:{type:String,required:true},register_file_index:{type:Number,required:true},register_index:{type:Number,required:true},type:{type:String,required:true},double_precision:{type:String,required:true},double_precision_type:{type:String,required:true},reg_id:{type:Number,required:true},simple_reg:{type:Array,required:true},register:{type:Object,required:true}},data:function(){return{show_modal:false}},methods:{edit_register_verify(evt){evt.preventDefault();if(this._props.register.name.length===0||!this._props.register.name||typeof this._props.register.default_value!=="undefined"&&!this._props.register.default_value.toString()){show_notification("Please complete all fields","danger")}else if(typeof this._props.register.default_value!=="undefined"&&isNaN(this._props.register.default_value.toString())){show_notification("The default value must be a number","danger")}else{for(var i=0;i'+" "+' '+" "+" "+""+' '+' "+" "+" "+""+' "+' '+" "+" "+""+' '+' '+' Read'+' Write'+' Ignore Write'+' Saved'+' Pointer'+' Data'+' Code'+' Stack'+' Frame'+" "+" "+""+' '+'
'+'
'+" '+" "+"
"+'
'+" '+" "+"
"+"
"+"
"+"
"+""};Vue.component("registers-edit",uielto_registers_edit);var uielto_register_delete={props:{id:{type:String,required:true},title:{type:String,required:true},register_file_index:{type:Number,required:true},register_index:{type:Number,required:true}},data:function(){return{}},methods:{delete_register(){architecture.components[this._props.register_file_index].elements.splice(this._props.register_index,1);show_notification("Register correctly deleted","success")}},template:''+' Are you sure you want to delete the item?'+""};Vue.component("registers-delete",uielto_register_delete);var uielto_instructions={props:{instructions:{type:Array,required:true}},data:function(){return{instructions_fields:["name","co","cop","nwords","signatureRaw","properties","clk_cycles","fields","definition","actions"]}},methods:{view_instructions_modal(name,index,button){app._data.modal_field_instruction.title="Fields of "+name;app._data.modal_field_instruction.index=index;app._data.modal_field_instruction.instruction=structuredClone(architecture.instructions[index]);this.$root.$emit("bv::show::modal","fields_instructions",button)},edit_instructions_modal(name,index,button){app._data.modal_edit_instruction.title="Edit "+name;app._data.modal_edit_instruction.index=index;app._data.modal_edit_instruction.instruction=structuredClone(architecture.instructions[index]);app._data.modal_edit_instruction.number_fields=app._data.modal_edit_instruction.instruction.fields.length;this.$root.$emit("bv::show::modal","edit_instructions",button)},delete_instructions_modal(name,index,button){app._data.modal_delete_instruction.title="Delete "+name;app._data.modal_delete_instruction.index=index;this.$root.$emit("bv::show::modal","delete_instructions",button)}},template:"
"+"
"+' Instruction set:'+"
"+' "+' '+" New instruction"+" "+""+' "+' '+" Reset Instructions"+" "+""+" \x3c!-- Instruction set table --\x3e"+'
'+' '+""+" \x3c!-- Change the title of each column --\x3e"+' "+""+' "+""+" \x3c!-- For each instruction --\x3e"+""+' "+""+' "+""+' "+""+' "+""+' "+" "+"
"+"
"};Vue.component("instructions",uielto_instructions);var uielto_instructions_fields={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true},instruction:{type:Object,required:true}},data:function(){return{fragmet_data:["inm-signed","inm-unsigned","address","offset_bytes","offset_words"]}},methods:{},template:'"+" "+'
'+'
'+'
'+" "+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+'
'+' Break'+"
"+'
'+' Start Bit'+"
"+'
'+' End Bit'+"
"+'
'+' Value'+"
"+"
"+""+"
"+'
'+'
'+'
'+' Field {{field_index}}'+"
"+'
'+" "+' '+" "+' '+" "+" "+"
"+""+'
'+" "+' '+" "+" "+"
"+'
"+" "+"
"+""+" \x3c!-- start bit description --\x3e"+'
'+" "+' '+" "+" '+" "+"
"+""+" \x3c!-- stop bit description --\x3e"+'
'+" "+' '+" "+' '+" "+" "+" "+"
"+""+'
'+" "+' '+" "+" "+"
"+'
'+" "+' '+" "+" "+"
"+"
"+"
"+"
"+"
"+"
"+"
"};Vue.component("instructions-fields",uielto_instructions_fields);var uielto_instructions_new={props:{id:{type:String,required:true}},data:function(){return{instructions_types:instructions_types=[{text:"Arithmetic floating point",value:"Arithmetic floating point"},{text:"Arithmetic integer",value:"Arithmetic integer"},{text:"Comparison",value:"Comparison"},{text:"Conditional bifurcation",value:"Conditional bifurcation"},{text:"Control",value:"Control"},{text:"Function call",value:"Function call"},{text:"I/O",value:"I/O"},{text:"Logic",value:"Logic"},{text:"Memory access",value:"Memory access"},{text:"Other",value:"Other"},{text:"Syscall",value:"Syscall"},{text:"Transfer between registers",value:"Transfer between registers"},{text:"Unconditional bifurcation",value:"Unconditional bifurcation"}],fragmet_data:["inm-signed","inm-unsigned","address","offset_bytes","offset_words"],number_fields:"1",instruction:{name:"",type:"",co:"",cop:"",nwords:1,help:"",properties:[],clk_cycles:1,separated:[],fields:[{name:"",type:"",startbit:"",stopbit:"",valueField:""}],signature:"",signatureRaw:"",signature_definition:"",definition:""},instruction_page:1,instruction_page_link:["#Principal","#Fields","#Syntax","#Definition","#Help"],show_modal:false}},methods:{new_instructions_verify(evt){evt.preventDefault();var empty=0;if(typeof this.instruction.co!=="object"){for(var i=0;iisNaN(val)))){show_notification("The field co must be numbers","danger");return}else if(isNaN(this.instruction.cop)){show_notification("The field cop must be numbers","danger");return}else if(typeof this.instruction.co!="object"&&this.instruction.co.length!=this.instruction.fields[0].startbit-this.instruction.fields[0].stopbit+1){show_notification("The length of co should be "+(this.instruction.fields[0].startbit-this.instruction.fields[0].stopbit+1)+" binary numbers","danger");return}else if(typeof this.instruction.co==="object"&&this.instruction.co.some(((val,ind)=>val.length!==app.instruction.fields[0].startbit[ind]-app.instruction.fields[0].stopbit[ind]+1))){show_notification("The length of co don't match with the desription","danger");return}else{var ex_cop=false;for(var i=1;ithis.instruction.co instanceof Array?this.formInstrucion.co.join(""):this.instruction.co)()+this.instruction.cop;for(var i=0;ithis.instruction.nwords*32){this.number_fields=this.instruction.nwords*32}if(this.number_fields<1){this.number_fields=1}if(this.number_fields>this.instruction.fields.length){var diff=this.number_fields-this.instruction.fields.length;for(var i=0;i'+" "+""+" \x3c!-- Page 1 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+' Enter Subrutine'+' Exit Subrutine'+" "+" "+'
'+' '+" "+"
"+"
"+""+" \x3c!-- Page 2 --\x3e"+'
'+'
'+'
'+" "+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+'
'+' Break'+"
"+'
'+' Start Bit'+"
"+'
'+' End Bit'+"
"+'
'+""+"
"+"
"+""+""+'
'+'
'+'
'+'
'+' Field {{i-1}}'+"
"+'
'+" "+' '+" "+' '+" "+" "+"
"+'
'+" "+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+" "+' "+" "+" "+"
"+'
'+" '+"
"+'
'+" "+' '+" "+" '+" "+" "+"
"+'
'+" "+' '+" "+" '+" "+" "+"
"+'
'+" "+" '+" "+" "+" '+' '+" "+"
"+'
'+" "+' '+" "+" "+"
"+'
"+' '+" + "+" "+' '+" - "+" "+"
"+"
"+"
"+"
"+"
"+""+""+" \x3c!-- Page 3 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 4 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 5 --\x3e"+'
'+' '+' '+" "+" "+"
"+"
"+"
"+' '+" "+""};Vue.component("instructions-new",uielto_instructions_new);var uielto_instructions_reset={props:{id:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_instructions(){show_loading();for(var i=0;i'+' Are you sure you want to reset the instructions?'+""};Vue.component("instructions-reset",uielto_instructions_reset);var uielto_instructions_edit={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true},instruction:{type:Object,required:true},number_fields:{type:Number,required:true}},data:function(){return{instructions_types:instructions_types=[{text:"Arithmetic floating point",value:"Arithmetic floating point"},{text:"Arithmetic integer",value:"Arithmetic integer"},{text:"Comparison",value:"Comparison"},{text:"Conditional bifurcation",value:"Conditional bifurcation"},{text:"Control",value:"Control"},{text:"Function call",value:"Function call"},{text:"I/O",value:"I/O"},{text:"Logic",value:"Logic"},{text:"Memory access",value:"Memory access"},{text:"Other",value:"Other"},{text:"Syscall",value:"Syscall"},{text:"Transfer between registers",value:"Transfer between registers"},{text:"Unconditional bifurcation",value:"Unconditional bifurcation"}],fragmet_data:["inm-signed","inm-unsigned","address","offset_bytes","offset_words"],instruction_page:1,instruction_page_link:["#Principal","#Fields","#Syntax","#Definition","#Help"],show_modal:false}},methods:{edit_instructions_verify(evt){evt.preventDefault();var empty=0;if(typeof this._props.instruction.co!=="object"){for(var i=0;iisNaN(val)))){show_notification("The field co must be numbers","danger");return}else if(isNaN(this._props.instruction.cop)){show_notification("The field cop must be numbers","danger");return}else if(typeof this._props.instruction.co!="object"&&this._props.instruction.co.length!=this._props.instruction.fields[0].startbit-this._props.instruction.fields[0].stopbit+1){show_notification("The length of co should be "+(this._props.instruction.fields[0].startbit-this._props.instruction.fields[0].stopbit+1)+" binary numbers","danger");return}else if(typeof this._props.instruction.co==="object"&&this._props.instruction.co.some(((val,ind)=>val.length!==app.instruction.fields[0].startbit[ind]-app.instruction.fields[0].stopbit[ind]+1))){show_notification("The length of co don't match with the desription","danger");return}else{var ex_cop=false;for(var i=1;ithis._props.instruction.co instanceof Array?this.formInstrucion.co.join(""):this._props.instruction.co)()+this._props.instruction.cop;for(var i=0;ithis._props.instruction.nwords*32){this._props.number_fields=this._props.instruction.nwords*32}if(this._props.number_fields<1){this._props.number_fields=1}if(this._props.number_fields>this._props.instruction.fields.length){var diff=this._props.number_fields-this._props.instruction.fields.length;for(var i=0;i'+" "+""+" \x3c!-- Page 1 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+' Enter Subrutine'+' Exit Subrutine'+" "+" "+'
'+' '+"
"+""+"
"+""+" \x3c!-- Page 2 --\x3e"+'
'+'
'+'
'+" "+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+'
'+' Break'+"
"+'
'+' Start Bit'+"
"+'
'+' End Bit'+"
"+'
'+""+"
"+"
"+""+""+'
'+'
'+'
'+'
'+' Field {{i-1}}'+"
"+'
'+" "+' '+" "+' '+" "+" "+"
"+'
'+" "+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+" "+' "+" "+" "+"
"+'
'+" '+"
"+'
'+" "+' '+" "+" '+" "+" "+"
"+'
'+" "+' '+" "+" '+" "+" "+"
"+'
'+" "+" '+" "+" "+" '+' '+" "+"
"+'
'+" "+' '+" "+" "+"
"+'
"+' '+" + "+" "+' '+" - "+" "+"
"+"
"+"
"+"
"+"
"+""+" \x3c!-- Page 3 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 4 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 5 --\x3e"+'
'+' '+' '+" "+" "+"
"+"
"+"
"+' '+" "+""};Vue.component("instructions-edit",uielto_instructions_edit);var uielto_instructions_delete={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{}},methods:{delete_instructions(){architecture.instructions.splice(this._props.index,1);show_notification("Instruction correctly deleted","success")}},template:''+' Are you sure you want to delete the item?'+""};Vue.component("instructions-delete",uielto_instructions_delete);var uielto_pseudoinstructions={props:{pseudoinstructions:{type:Array,required:true}},data:function(){return{pseudoinstructions_fields:["name","nwords","signatureRaw","fields","definition","actions"]}},methods:{view_pseudoinstruction_modal(name,index,button){app._data.modal_field_pseudoinstruction.title="Fields of "+name;app._data.modal_field_pseudoinstruction.index=index;app._data.modal_field_pseudoinstruction.pseudoinstruction=structuredClone(architecture.pseudoinstructions[index]);this.$root.$emit("bv::show::modal","fields_pseudoinstructions",button)},edit_pseudoinstruction_modal(name,index,button){app._data.modal_edit_pseudoinstruction.title="Edit "+name;app._data.modal_edit_pseudoinstruction.index=index;app._data.modal_edit_pseudoinstruction.pseudoinstruction=structuredClone(architecture.pseudoinstructions[index]);app._data.modal_edit_pseudoinstruction.number_fields=app._data.modal_edit_pseudoinstruction.pseudoinstruction.fields.length;this.$root.$emit("bv::show::modal","edit_pseudoinstructions",button)},delete_pseudoinstruction_modal(name,index,button){app._data.modal_delete_pseudoinstruction.title="Delete "+name;app._data.modal_delete_pseudoinstruction.index=index;this.$root.$emit("bv::show::modal","delete_pseudoinstructions",button)}},template:"
"+"
"+' Pseudoinstructions set:'+"
"+' "+' '+" New Pseudoinstructions"+" "+""+' "+' '+" Reset Pseudoinstructions"+" "+""+" \x3c!-- Pseudoinstruction set table --\x3e"+'
'+" '+""+" \x3c!-- Change the title of each column --\x3e"+' "+""+" \x3c!-- For each pseudoinstruction --\x3e"+""+' "+""+' "+""+' "+""+' "+" "+"
"+"
"};Vue.component("pseudoinstructions",uielto_pseudoinstructions);var uielto_pseudoinstructions_fields={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true},pseudoinstruction:{type:Object,required:true}},data:function(){return{}},methods:{},template:'"+" "+'
'+'
'+'
'+""+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+"
"+""+"
"+'
'+'
'+'
'+' Field {{field_index}}'+"
"+'
'+" "+' '+" "+" "+"
"+'
'+" "+' '+" "+" "+"
"+"
"+"
"+"
"+"
"+"
"+"
"};Vue.component("pseudoinstructions-fields",uielto_pseudoinstructions_fields);var uielto_pseudoinstructions_new={props:{id:{type:String,required:true}},data:function(){return{number_fields:"0",pseudoinstruction:{name:"",help:"",properties:[],nwords:1,signature_definition:"",signature:"",signatureRaw:"",fields:[{name:"",type:""}],definition:""},pseudoinstruction_page:1,pseudoinstruction_page_link:["#Principal","#Fields","#Syntax","#Definition","#Help"],show_modal:false}},methods:{new_pseudoinstruction_verify(evt){evt.preventDefault();var empty=0;for(var i=0;ithis.pseudoinstruction.nwords*32){this.number_fields=this.pseudoinstruction.nwords*32}if(this.number_fields<0){this.number_fields=0}if(this.number_fields>this.pseudoinstruction.fields.length){var diff=this.number_fields-this.pseudoinstruction.fields.length;for(var i=0;i'+" "+""+" \x3c!-- Page 1 --\x3e"+'
'+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 2 --\x3e"+'
'+'
'+'
'+""+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+"
"+""+'
'+'
'+'
'+'
'+' Field {{i-1}}'+"
"+'
'+" "+' '+" "+" "+"
"+'
'+" "+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+" "+" "+"
"+"
"+"
"+"
"+"
"+""+" \x3c!-- Page 3 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 4 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 5 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+"
"+"
"+' '+" "+""};Vue.component("pseudoinstructions-new",uielto_pseudoinstructions_new);var uielto_pseudoinstructions_reset={props:{id:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_pseudoinstruction(){show_loading();for(var i=0;i'+' Are you sure you want to reset the pseudoinstructions?'+""};Vue.component("pseudoinstructions-reset",uielto_pseudoinstructions_reset);var uielto_pseudoinstructions_edit={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true},pseudoinstruction:{type:Object,required:true},number_fields:{type:Number,required:true}},data:function(){return{number_fields:"0",pseudoinstruction_page:1,pseudoinstruction_page_link:["#Principal","#Fields","#Syntax","#Definition","#Help"],show_modal:false}},methods:{edit_pseudoinstruction_verify(evt){evt.preventDefault();var empty=0;for(var i=0;ithis._props.pseudoinstruction.nwords*32){this._props.number_fields=this._props.pseudoinstruction.nwords*32}if(this._props.number_fields<0){this._props.number_fields=0}if(this._props.number_fields>this._props.pseudoinstruction.fields.length){var diff=this._props.number_fields-this._props.pseudoinstruction.fields.length;for(var i=0;i'+" "+""+" \x3c!-- Page 1 --\x3e"+'
'+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 2 --\x3e"+'
'+'
'+'
'+" "+"
"+'
'+' Name:'+"
"+'
'+' Type'+"
"+"
"+""+'
'+'
'+'
'+'
'+' Field {{i-1}}'+"
"+'
'+" "+' '+" "+" "+"
"+'
'+" "+' '+' '+' '+' '+' '+' '+' '+' '+' '+' '+" "+" "+"
"+"
"+"
"+"
"+"
"+" \x3c!-- Page 3 --\x3e"+'
'+' '+' '+" "+" "+' '+' '+" "+" "+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 4 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+" \x3c!-- Page 5 --\x3e"+'
'+' '+' '+" "+" "+"
"+""+"
"+"
"+' '+" "+""};Vue.component("pseudoinstructions-edit",uielto_pseudoinstructions_edit);var uielto_pseudoinstructions_delete={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{}},methods:{delete_pseudoinstruction(index){architecture.pseudoinstructions.splice(this._props.index,1);show_notification("Instruction correctly deleted","success")}},template:''+' Are you sure you want to delete the item?'+""};Vue.component("pseudoinstructions-delete",uielto_pseudoinstructions_delete);var uielto_directives={props:{directives:{type:Array,required:true}},data:function(){return{directivesFields:["name","action","size","actions"]}},methods:{edit_directive_modal(name,index,button){app._data.modal_edit_directive.title="Edit "+name;app._data.modal_edit_directive.index=index;app._data.modal_edit_directive.directive=Object.assign({},architecture.directives[index]);this.$root.$emit("bv::show::modal","edit_directive",button)},delete_directive_modal(name,index,button){app._data.modal_delete_directive.title="Delete "+name;app._data.modal_delete_directive.index=index;this.$root.$emit("bv::show::modal","delete_directive",button)}},template:"
"+"
"+' Directives set:'+""+'
'+'
'+' "+' '+" New Directive"+" "+"
"+""+'
'+' "+' '+" Reset Directives"+" "+"
"+"
"+""+'
'+" '+' "+" "+"
"+"
"};Vue.component("directives",uielto_directives);var uielto_directives_new={props:{id:{type:String,required:true}},data:function(){return{actionTypes:[{text:"Data Segment",value:"data_segment"},{text:"Code Segment",value:"code_segment"},{text:"Global Symbol",value:"global_symbol"},{text:"Byte",value:"byte"},{text:"Half Word",value:"half_word"},{text:"Word",value:"word"},{text:"Double Word",value:"double_word"},{text:"Float",value:"float"},{text:"Double",value:"double"},{text:"Space",value:"space"},{text:"ASCII not finished in null",value:"ascii_not_null_end"},{text:"ASCII finished in null",value:"ascii_null_end"},{text:"Align",value:"align"},{text:"Balign",value:"balign"}],directive:{name:"",action:"",size:null},show_modal:false}},methods:{verify_new_directive(evt){evt.preventDefault();if(!this.directive.name||!this.directive.action){show_notification("Please complete all fields","danger")}else{if(isNaN(parseInt(this.directive.size))&&(this.directive.action=="byte"||this.directive.action=="half_word"||this.directive.action=="word"||this.directive.action=="double_word"||this.directive.action=="float"||this.directive.action=="double"||this.directive.action=="space")){show_notification("Please complete all fields","danger")}else{for(var i=0;i'+" "+' '+' '+" "+" "+""+' '+' '+" "+" "+""+' "+' '+" "+" "+" "+""};Vue.component("directives-new",uielto_directives_new);var uielto_directives_reset={props:{id:{type:String,required:true},architecture_name:{type:String,required:true}},data:function(){return{}},methods:{reset_directives(){show_loading();for(var i=0;i'+' Are you sure you want to reset the directives set?'+""};Vue.component("directives-reset",uielto_directives_reset);var uielto_directives_edit={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true},directive:{type:Object,required:true}},data:function(){return{actionTypes:[{text:"Data Segment",value:"data_segment"},{text:"Code Segment",value:"code_segment"},{text:"Global Symbol",value:"global_symbol"},{text:"Byte",value:"byte"},{text:"Half Word",value:"half_word"},{text:"Word",value:"word"},{text:"Double Word",value:"double_word"},{text:"Float",value:"float"},{text:"Double",value:"double"},{text:"Space",value:"space"},{text:"ASCII not finished in null",value:"ascii_not_null_end"},{text:"ASCII finished in null",value:"ascii_null_end"},{text:"Align",value:"align"},{text:"Balign",value:"balign"}],show_modal:false}},methods:{verify_edit_directive(evt){evt.preventDefault();if(!this._props.directive.name||!this._props.directive.action){show_notification("Please complete all fields","danger")}else{if(isNaN(parseInt(this._props.directive.size))&&(this._props.directive.action=="byte"||this._props.directive.action=="half_word"||this._props.directive.action=="word"||this._props.directive.action=="double_word"||this._props.directive.action=="float"||this._props.directive.action=="double"||this._props.directive.action=="space")){show_notification("Please complete all fields","danger")}else{for(var i=0;i '+" "+' '+' '+" "+" "+' '+' '+" "+" "+' "+' '+" "+" "+" "+""};Vue.component("directives-edit",uielto_directives_edit);var uielto_directives_delete={props:{id:{type:String,required:true},title:{type:String,required:true},index:{type:Number,required:true}},data:function(){return{}},methods:{delete_directive(){architecture.directives.splice(this._props.index,1);show_notification("Directive correctly deleted","success")}},template:''+' Are you sure you want to delete the item?'+""};Vue.component("directives-delete",uielto_directives_delete);var uielto_load_assembly={props:{id:{type:String,required:true}},data:function(){return{load_assembly:""}},methods:{assembly_update(){if(code_assembly!=""){textarea_assembly_editor.setValue(code_assembly);show_notification(" The selected program has been loaded correctly","success")}else{show_notification("Please select one program","danger")}},read_assembly(e){show_loading();var file;var reader;var files=document.getElementById("assembly_file").files;for(var i=0;i'+" "+"

Please select the assembly file to be loaded

"+' '+" "+" "};Vue.component("load-assembly",uielto_load_assembly);var uielto_save_assembly={props:{id:{type:String,required:true}},data:function(){return{save_assembly:""}},methods:{assembly_save(){var textToWrite=textarea_assembly_editor.getValue();var textFileAsBlob=new Blob([textToWrite],{type:"text/plain"});var fileNameToSaveAs;if(this.save_assembly==""){fileNameToSaveAs="assembly.s"}else{fileNameToSaveAs=this.save_assembly+".s"}var downloadLink=document.createElement("a");downloadLink.download=fileNameToSaveAs;downloadLink.innerHTML="My Hidden Link";window.URL=window.URL||window.webkitURL;downloadLink.href=window.URL.createObjectURL(textFileAsBlob);downloadLink.onclick=destroyClickedElement;downloadLink.style.display="none";document.body.appendChild(downloadLink);downloadLink.click();this.save_assembly="";creator_ga("assembly","assembly.save","assembly.save")},debounce:_.debounce((function(param,e){console_log(param);console_log(e);e.replace(/[.*+?^${}()|[\]\\]/g,"\\$&");var re=new RegExp("'","g");e=e.replace(re,'"');re=new RegExp("[\f]","g");e=e.replace(re,"\\f");re=new RegExp("[\n]","g");e=e.replace(re,"\\n");re=new RegExp("[\r]","g");e=e.replace(re,"\\r");re=new RegExp("[\t]","g");e=e.replace(re,"\\t");re=new RegExp("[\v]","g");e=e.replace(re,"\\v");if(e==""){this[param]=null;return}console_log("this."+param+"= '"+e+"'");eval("this."+param+"= '"+e+"'");app.$forceUpdate()}),getDebounceTime())},template:' '+" "+"

Please write the file name:

"+" '+" "+"
"};Vue.component("save-assembly",uielto_save_assembly);function getDebounceTime(){if(screen.width>768){return 500}else{return 1e3}}var uielto_examples={props:{id:{type:String,required:true},ref:{type:String,required:true},example_set_available:{type:Array,required:true},example_available:{type:Array,required:true},compile:{type:String,required:true},modal:{type:String,required:true}},data:function(){return{example_set:0,example_set_name:""}},methods:{get_example_set(){return this.example_set},load_example(url,compile){this.$root.$emit("bv::hide::modal",this._props.modal,"#closeExample");$.get(url,(function(data){code_assembly=data;if(compile=="false"){textarea_assembly_editor.setValue(code_assembly)}else{uielto_toolbar_btngroup.methods.assembly_compiler(code_assembly)}show_notification(" The selected example has been loaded correctly","success");creator_ga("send","event","example","example.loading","example.loading."+url)}))},change_example_set(value){this.example_set=value}},template:' "+" "+' '+" "+" "+" "+' '+' '+" {{item.text}}"+" "+" "+" "+' '+" There's no examples at the moment"+" "+" "+" "+" '+" {{item.name}}:"+' '+" "+" "+" "};Vue.component("examples",uielto_examples);var uielto_uri={props:{id:{type:String,required:true}},data:function(){return{uri:""}},methods:{make_uri(){this.uri=window.location.href.split("?")[0].split("#")[0]+"?architecture="+encodeURIComponent(app._data.architecture_name)+"&asm="+encodeURIComponent(textarea_assembly_editor.getValue())},copy_uri(){navigator.clipboard.writeText(this.uri)}},template:'"+" "+'
'+' '+"
"+' '+' Copy'+" "+"
"+"
"};Vue.component("make-uri",uielto_uri);var uielto_load_library={props:{id:{type:String,required:true}},data:function(){return{name_binary_load:""}},methods:{library_update(){if(code_binary.length!==0){update_binary=JSON.parse(code_binary);load_binary=true;$("#divAssembly").attr("class","col-lg-10 col-sm-12");$("#divTags").attr("class","col-lg-2 col-sm-12");$("#divTags").show();show_notification("The selected library has been loaded correctly","success")}else{show_notification("Please select one library","danger")}},library_load(e){var file;var reader;var files=document.getElementById("binary_file").files;for(var i=0;i'+" "+"

Please select the binary file to be loaded

"+' '+" "+" "};Vue.component("load-library",uielto_load_library);var uielto_save_library={props:{id:{type:String,required:true}},data:function(){return{name_binary_save:""}},methods:{library_save(){if(assembly_compiler()==-1){return}promise.then((message=>{if(message=="-1"){return}if(creator_memory_is_segment_empty(memory_hash[0])===false){show_notification("You can not enter data in a library","danger");return}for(var i=0;i