我正在尝试以与操作系统无关的方式打印字符串。例如,程序应该在Windows上运行与在* nix上运行相同的程序。
这甚至可能吗?我假设,因为底层架构是相同的(x86),方法将是相同的。它是否像调用中断一样简单?
原因是我正在尝试编写一个生成汇编代码的编译器 - 在开发的早期阶段,只有少数几个特性存在 - 我希望能够测试生成的汇编代码在Windows或* nix中。在未来的道路上,在生成相同的代码时不可能保持平台中立性,但基本上我此时想要做的就是打印一个字符串。
答案 0 :(得分:3)
你可以链接libc
吗?如果你能做到这一点,你应该只需致电printf()
并完成它。可以在this link找到示例程序。
答案 1 :(得分:2)
不应将纯装配视为可在操作系统之间移植。没有通用的方法与程序集中的系统服务进行交互。您甚至不应该假设类Unix操作系统之间的可移植性(POSIX没有指定调用约定,尽管某些x86 Unices确实使用了通用约定。)
即使在更高级别的语言中,在完全相同的CPU + OS上,调用约定在技术上也可能因编译器而异,但通常编译器会使用为主机环境指定的任何约定。
另见x86 calling conventions上的维基百科页面。
答案 2 :(得分:1)
抱歉,没有人提出过Java?
答案 3 :(得分:0)
为此,您需要编写与polyglot类似的内容。