我写了一个小的16位汇编程序,它在一些内存位置中写入一些值。有没有办法让我在Linux的32位保护模式下测试它?
是的,在Linux中,用户进程支持16位代码。调用它的系统调用称为vm86()
(有一个man页面,但内容不多)。很自然地,它只在x86平台上有效(仅限32位)。
如果您需要示例,则ELKS项目有一个完整的工具,可以在Linux上运行ELKS 8086二进制文件,该工具使用它:
https://github.com/lkundrak/dev86/tree/master/elksemu
查找run_elks()
函数即可。它相当简单明了。