libgccjit 的 FFI 封装器

dev-master 2019-03-06 03:15 UTC

This package is auto-updated.

Last update: 2024-09-06 17:48:59 UTC


README

这是一个使用 7.4 的 FFI 的 libgccjit 封装库。

基本上,它为 PHP 提供了一个“友好”的接口,用于构建 GCC JIT。

示例(来自 C,见 https://gcc.gnu.org/wiki/JIT

gcc_jit_type *void_type = gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_VOID);
gcc_jit_type *const_char_ptr_type = gcc_jit_context_get_type (ctxt, GCC_JIT_TYPE_CONST_CHAR_PTR);
gcc_jit_param *param_name =
  gcc_jit_context_new_param (ctxt, NULL, const_char_ptr_type, "name");
gcc_jit_function *func =
  gcc_jit_context_new_function (ctxt, NULL,
                                GCC_JIT_FUNCTION_EXPORTED,
                                void_type,
                                "some_fn",
                                1, &param_name,
                                0);

会变成

$void_type = gcc_jit_context_get_type($ctxt, GCC_JIT_TYPE_VOID);
$const_char_ptr_type = gcc_jit_context_get_type($ctxt, GCC_JIT_TYPE_CONST_CHAR_PTR);
$param_name = gcc_jit_context_new_param($ctxt, null, $const_char_ptr_type, "name");
$func = gcc_jit_context_new_function(
    $ctxt, 
    null,
    GCC_JIT_FUNCTION_EXPORTED,
    $void_type,
    "some_fn",
    1,
    gcc_jit_param_ptr_ptr::fromArray($param_name),
    0
);

它的目标是 PHP 中一个简单且类型安全的实现。