Как я могу экспортировать функцию, определенную в таблице wasm?

Вот мой файл с отходами:

(module
  (type $FUNCSIG$vi (func (param i32)))
  (type $FUNCSIG$j (func (result i64)))
  (type $FUNCSIG$vjj (func (param i64 i64)))
  (type $FUNCSIG$vii (func (param i32 i32)))
  (type $FUNCSIG$i (func (result i32)))
  (type $FUNCSIG$iii (func (param i32 i32) (result i32)))
  (type $FUNCSIG$v (func))
  (import "env" "action_data_size" (func $action_data_size (result i32))
  (import "env" "current_time" (func $current_time (result i64)))
  (import "env" "prints" (func $prints (param i32)))
  (import "env" "read_action_data" (func $read_action_data (param i32 i32) (result i32)))
  (import "env" "require_auth2" (func $require_auth2 (param i64 i64)))
  (table 4 4 anyfunc)
  (elem (i32.const 0) $__wasm_nullptr $_ZN5hello7testoneEv $_ZN5hello7testtwoEv $_ZN5hello9testthreeEv)
  (memory $0 1)
  ...

А вот мой файл JS:

function loadWebAssembly (path, imports = {}) {
return fetch(path)
  .then(response => response.arrayBuffer())
  .then(buffer => WebAssembly.compile(buffer))
  .then(module => {
    imports.env = imports.env || {}

    Object.assign(imports.env, {
        memoryBase: 0,
        tableBase: 0,
        memory: new WebAssembly.Memory({
          initial: 256,
          maximum: 512,
        }),
        action_data_size: action_data_size,
        current_time: get_current_time,
        eosio_assert: assert,
        memcpy: memcpy,
        read_action_data: read_action_data,
        require_auth2: auth2,
        prints:prints,
        printui:prints,
    });
    // create WebAssembly instance
    return new WebAssembly.Instance(module, imports)
  })
}

loadWebAssembly('./hello.wasm')
  .then(instance => {
  // **How can I export and call function "_ZN5hello7testoneEv" here?**
})

Если функция находится в списке экспортируемых функций в wasm, я могу найти способ экспортировать и вызывать ее, но только если функция объявлена ​​в таблице wasm, в настоящее время я не имею понятия ее экспортировать и вызывать.

Спасибо всем, кто может поделиться подсказкой.

0 ответов

Другие вопросы по тегам