示例代码:
int main () {
printf("Hello world begin\n");
// New instruction
__asm__ __volatile__ (".byte 0x0f\n\t"
".byte 0xd0\n\t"
:);
printf("Hello world end\n");
return 0;
}
我的问题[TLDR] :
让QEMU对待我的新指令类似于返回0; [sys_exit]
我的目的:
我正在尝试自定义x86 ISA的QEMU仿真,以在两点之间的CPU仿真期间记录一些数据(如环转换次数等)。假设为简单起见,启动将在第一个printf(或某个系统调用)之后,并且将由我编写的新指令(例如操作码' 0f d0'在Intel ISA中未使用)标记,其中目的是简单地打印那些日志信息并在那里终止进程(在第2行)并且不执行其余的行。换句话说,行为应该与'返回0的情况相同;' 紧接在我的新指令之后。
在我的QEMU帮助器逻辑中,我尝试添加 cpu_loop_exit()和所有其他组合,它们似乎无限循环。任何人都可以指出我如何实现我想要的行为(只修改QEMU而不是我的示例代码)?