使用QEMU和ARM半托管获取输入



对于ARM架构,我们使用SVC指令进行系统调用。我的参考是以下ARM的什么是半托管?。特别是,选择任何版本,选择Arm编译器工具链开发软件…,然后选择Semihosting,以查看可用的系统调用号码。

要定义一个getChar()例程,使char留在寄存器r0中。根据文档,r1在调用时必须为0,并且在退出后r0包含read字符。因此,人们认为像

这样的东西
mov r1,#0
mov r0,#7
svc 123456

应该是必不可少的成分。然而,程序并不等待输入。我也可以肯定地说,寄存器r0在退出后总是包含值0。有什么想法吗?我怀疑问题在于理解console在文档中的含义。

从qemu 1.4.0源代码:(文件target-arm/arm-semi.c,行303-305)

case TARGET_SYS_READC:
   /* XXX: Read from debug console. Not implemented.  */
    return 0;

如果你真的想使用qemu的半托管模式并从'控制台'读取,我建议你使用SYS_READ,缓冲区大小为1。

相关内容

  • 没有找到相关文章

最新更新