我正在运行一个使用无限循环的模拟。 TRUE定义为1.在循环内,每个调用包含" state"是一个返回void的函数。
/* main sim loop */
for (i = 0, num_insn = 0; TRUE; i++) {
writeback(state, &num_insn);
execute(state);
if (!(state->fetch_lock)) {
decode(state);
fetch(state);
}
}
我想最终从"内部退出循环;如果"写回函数中的语句。这是怎么做到的?我尝试使用" break"但是我编译时遇到错误。
编辑:写回功能
if ((state->fetch_lock == TRUE)&&(fu_int__done == TRUE)&&(fu_fp_add_done ==TRUE)&&(fu_fp_mult_done == TRUE)&&(fu_fp_div_done == TRUE)) {
break;
}
给出编译错误"错误:break语句不在循环内或切换"
答案 0 :(得分:2)
可以从任何地方调用writehack
函数。
将其更改为
bool writeBack(...) {
...
return true; // Break is require if in a loop
return false; // Otherwise;
然后
for (i = 0, num_insn = 0; TRUE; i++) {
if (writeback(state, &num_insn) ) {break; }
execute(state);
if (!(state->fetch_lock)) {
decode(state);
fetch(state);
}
}