2

我正在尝试以与操作系统无关的方式打印字符串。例如,程序在 Windows 上的运行应该与在 *nix 上的运行方式相同。

这甚至可能吗?我假设由于底层架构是相同的(x86),所以方法是相同的。像调用中断一样简单吗?

这样做的原因是我正在尝试编写一个生成汇编代码的编译器 - 在其开发的早期阶段,只有少数功能存在 - 我希望能够在任一 Windows 中测试生成的汇编代码或 *nix。以后,在生成相同代码的同时保持平台中立性是不可能的,但基本上我现在要做的就是打印一个字符串。

4

4 回答 4

4

你可以链接反对libc吗?如果你能做到这一点,你应该能够打电话printf()并完成它。可以在此链接中找到示例程序。

于 2010-09-05T05:14:34.540 回答
3

纯汇编不应该被认为是操作系统之间的可移植性。没有通用的方法可以通过程序集与系统服务进行交互。您甚至不应该假设类 Unix 操作系统之间的可移植性(POSIX 没有指定调用约定,尽管某些 x86 Unices 确实使用通用约定)。

即使在高级语言中,调用约定在技术上也可以在完全相同的 CPU+OS 上从一个编译器到另一个编译器有所不同,尽管编译器通常使用为主机环境指定的任何约定。

另请参阅关于x86 调用约定的 Wikipedia 页面。

于 2010-09-05T05:27:05.183 回答
1

为此,您需要编写类似于polyglot的内容。

于 2010-09-24T00:36:37.367 回答
0

抱歉,没有人提出Java?

于 2010-09-24T00:47:52.017 回答