c++ - 为什么许多 VM 看起来具有 C++ 功能却用 C 编写?

标签 c++ c programming-languages vm-implementation

我注意到一些不太古老的 VM 语言,例如 Lua、NekoVM 和用 C 编写的 Potion。

看起来他们正在重新实现许多 C++ 功能。

用 C 而不是 C++ 编写它们有好处吗?

最佳答案

我对 Lua 有所了解。

  • Lua 是用纯 ANSI 标准 C 编写的,可以在任何 ANSI 平台上编译,没有错误也没有警告。因此,Lua 几乎可以在世界上任何平台上运行,包括像Canon PowerShot cameras 这样的平台。 .让 C++ 在奇怪的小型嵌入式平台上运行要困难得多。

  • Lua 是一个高性能的 VM,并且由于 C 无法表达方法调用(可能是虚拟的也可能不是)和运算符重载,因此更容易预测 C 代码的性能 只需查看代码即可。 C++,尤其是模板库,使得在不知不觉中烧毁资源变得有点太容易了。 (Lua 的完整实现不仅包括 VM,还包括库,适合 145K 的 x86 目标代码。整个语言甚至适合一个很小的 ​​256K 缓存,你可以在 Intel i7 的 L2 和旧芯片的 L1 找到它。除非你真的知道什么你在做,编写编译成这么小的东西的 C++ 要难得多。)

这是用 C 编写 VM 的两个很好的理由。

关于c++ - 为什么许多 VM 看起来具有 C++ 功能却用 C 编写?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/780027/

相关文章:

c++ - 如何调试 ActiveX 控件 (OCX) 或使其记录错误?

c++ - 在 boost Homebrew 软件安装中找不到 bjam

c - 可能基于预处理器生成的 #if 或 #ifdef "thing"

c - 怀疑在printf中使用*++p

c# - 为什么 Scala 和 C# lambda 有双箭头?

c++ - QAbstractTableModel 在数据更改时检索自定义对象

c++ - 为什么 unary_function 不定义 operator()?

任何人都可以解释和追踪这个因为我的老师不能

C、在一个shell实例中执行多个命令

programming-languages - 同形性究竟是什么意思?