从我自己的语言访问本机代码

塔先生

我正在学习构建一种可以编译为字节码的 OOP 语言,然后使用在 C++ 中实现的基于堆栈的 vm 来解释它。我的问题是如何用我自己的语言调用本机函数(在我的例子中是 C++ 函数)。

例如,我有一个 C++ 文件:native.cpp

float div2(int x) {
    return float(x) / 2;
}

和 func 用我的语言调用:

import native

void main() {
    int foo = 1234;
    print(native.div2(foo));
}

如果我创建一条新指令,我必须重新构建整个解释器。

对不起,我的英语不好。

杰里米·弗里斯纳

假设问题是关于如何将函数调用添加到您的 OOP 语言,而不必在每次添加另一个本机函数时向解释器编写一堆特定于用例的支持代码……一种方法是编写具有按名称注册的本机函数的通用函数调用接口。例如,您的 C++ 文件可能包含一个 std::map,它(在初始化时)填充了 OOP 语言允许调用的各种函数的名称,例如:

std::map<std::string, std::function> userAccessibleFunctions;

int main(int argc, char ** argv)
{
   userAccessibleFunctions["div2"] = div2;
   [... add other functions here...]

   // the rest of your program's startup-and-run code here
}

...那么当你的 OOP 语言需要调用一个原生函数时,它可以在 userAccessibleFunctions 表中通过它的名称查找该函数,如果存在,它可以调用它。(请注意,我没有在此处包含有关如何处理不同参数类型和返回类型的信息,因为我还没有充分使用 std::function 来自信地谈论它)

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

从本机代码访问WebView的localStorage

来自分类Dev

使用 Java DSL TestRunner - 如何在我自己的 Java 代码中访问变量

来自分类Dev

本机代码在 Java 中是什么样子的。汇编语言是本机代码吗?

来自分类Dev

Java程序是否包含C语言机器的本机代码?

来自分类Dev

包含C语言机器本机代码的Java程序是否相关?

来自分类Dev

我需要帮助以本机代码修改InAppBrowser

来自分类Dev

获取我自己的Facebook用户访问令牌

来自分类Dev

用我自己的代码检测对DependencyProperty的更改

来自分类Dev

我如何从html代码编写自己的xpath

来自分类Dev

使我的代码在C语言中更短

来自分类Dev

以我自己的语言向字符串添加操作

来自分类Dev

使本机代码访问Java方法和数据成员

来自分类Dev

如何从Android本机代码访问Codename One首选项?

来自分类Dev

bash隐藏默认的stderr代码并用我自己的代码替换

来自分类Dev

Django访问过滤功能中的语言代码

来自分类Dev

我该如何编写响应Thread.interrupt()的本机代码?

来自分类Dev

我应该如何减少这种反应本机代码?

来自分类Dev

我的Android绘图应用程序在本机代码中崩溃

来自分类Dev

Java/C - 将本机语言代码编译成共享库 DLL

来自分类Dev

Google Drive API访问我自己的帐户

来自分类Dev

无法从我自己的域访问已部署的流星项目

来自分类Dev

我在Windows 7上禁止访问自己的驱动器

来自分类Dev

为什么我无法访问自己的用户控件?

来自分类Dev

无法在instagram API上访问我自己的关注者

来自分类Dev

Lubuntu 20.04 拒绝我自己的硬盘分区任何访问

来自分类Dev

为什么我不能以自己的定义访问类?

来自分类Dev

如何将本机联系人同步到我自己的服务器?

来自分类Dev

我可以为JavaFX应用程序创建自己的本机启动器吗?

来自分类Dev

可以通过我们自己的代码扩展哪个PCR?

Related 相关文章

  1. 1

    从本机代码访问WebView的localStorage

  2. 2

    使用 Java DSL TestRunner - 如何在我自己的 Java 代码中访问变量

  3. 3

    本机代码在 Java 中是什么样子的。汇编语言是本机代码吗?

  4. 4

    Java程序是否包含C语言机器的本机代码?

  5. 5

    包含C语言机器本机代码的Java程序是否相关?

  6. 6

    我需要帮助以本机代码修改InAppBrowser

  7. 7

    获取我自己的Facebook用户访问令牌

  8. 8

    用我自己的代码检测对DependencyProperty的更改

  9. 9

    我如何从html代码编写自己的xpath

  10. 10

    使我的代码在C语言中更短

  11. 11

    以我自己的语言向字符串添加操作

  12. 12

    使本机代码访问Java方法和数据成员

  13. 13

    如何从Android本机代码访问Codename One首选项?

  14. 14

    bash隐藏默认的stderr代码并用我自己的代码替换

  15. 15

    Django访问过滤功能中的语言代码

  16. 16

    我该如何编写响应Thread.interrupt()的本机代码?

  17. 17

    我应该如何减少这种反应本机代码?

  18. 18

    我的Android绘图应用程序在本机代码中崩溃

  19. 19

    Java/C - 将本机语言代码编译成共享库 DLL

  20. 20

    Google Drive API访问我自己的帐户

  21. 21

    无法从我自己的域访问已部署的流星项目

  22. 22

    我在Windows 7上禁止访问自己的驱动器

  23. 23

    为什么我无法访问自己的用户控件?

  24. 24

    无法在instagram API上访问我自己的关注者

  25. 25

    Lubuntu 20.04 拒绝我自己的硬盘分区任何访问

  26. 26

    为什么我不能以自己的定义访问类?

  27. 27

    如何将本机联系人同步到我自己的服务器?

  28. 28

    我可以为JavaFX应用程序创建自己的本机启动器吗?

  29. 29

    可以通过我们自己的代码扩展哪个PCR?

热门标签

归档