fix generation of non-exception code

This commit is contained in:
Eyck Jentzsch 2022-05-30 22:04:16 +02:00
parent 1c90fe765d
commit 5d481eb79d
1 changed files with 15 additions and 19 deletions

View File

@ -303,9 +303,8 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co
case arch::traits<ARCH>::opcode_e::${instr.name}: { case arch::traits<ARCH>::opcode_e::${instr.name}: {
<%instr.fields.eachLine{%>${it} <%instr.fields.eachLine{%>${it}
<%}%>if(this->disass_enabled){ <%}%>if(this->disass_enabled){
/* generate console output when executing the command */ /* generate console output when executing the command */<%instr.disass.eachLine{%>
<%instr.disass.eachLine{%>${it} ${it}<%}%>
<%}%>
} }
// used registers<%instr.usedVariables.each{ k,v-> // used registers<%instr.usedVariables.each{ k,v->
if(v.isArray) {%> if(v.isArray) {%>
@ -313,11 +312,8 @@ typename vm_base<ARCH>::virt_addr_t vm_impl<ARCH>::execute_inst(finish_cond_e co
auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}]); auto* ${k} = reinterpret_cast<uint${nativeTypeSize(v.type.size)}_t*>(this->regs_base_ptr+arch::traits<ARCH>::reg_byte_offsets[arch::traits<ARCH>::${k}]);
<%}}%>// calculate next pc value <%}}%>// calculate next pc value
*NEXT_PC = *PC + ${instr.length/8}; *NEXT_PC = *PC + ${instr.length/8};
// execute instruction // execute instruction<%instr.behavior.eachLine{%>
try { ${it}<%}%>
<%instr.behavior.eachLine{%>${it}
<%}%>
} catch(...){}
TRAP_${instr.name}:break; TRAP_${instr.name}:break;
}// @suppress("No break at end of case")<%}%> }// @suppress("No break at end of case")<%}%>
default: { default: {