我正在研究一组独立的 x86 汇编例程,我希望这些例程可用于以下系统上的 C 程序:
- 仅限 Linux 64 位
- Windows 32 位和 64 位
- (很高兴最终拥有 64 位 Mac,但目前尚不清楚,因为 Apple 似乎正在放弃 x86 以支持 ARM)
我已经以其他方式使用 LLVM,几乎可以肯定我会使用 clang 而不是 gcc,尽管我可以设想有人想要使用 gcc 编译整个它的情况。汇编器将是 NASM。
我开发了例程和将它们公开给用户的 C 库,即一切都在我的控制之下,我可以根据需要设计一切。
我希望有些用户会真正使用 C++,但他们仍会链接到 C 库——也就是说,不会直接使用汇编程序。
由于我是汇编新手,我正在发现一个奇妙的迷宫,其中包含跨系统、编译器、供应商、调用变体和语言的各种调用约定。我不能说它有时不会带来有趣的阅读,但我也不能说它不会让初学者感到困惑。
在阅读完所有内容后,我的看法是,在一天结束时,我可以简单地从 cdecl 开始,以在初始版本中获得最大的可移植性,然后在需要时考虑使用特殊的外壳来涵盖其他约定 - 取决于例程实际执行的操作在特定情况下,我可以通过使用其他约定来使事情变得更快。
但最初,因为我希望有一些可以正常工作的东西,然后进一步优化它 - 说选择cdecl将在我列出的系统之间提供最大的可移植性是否正确?谢谢你。