Programming/wasm2021. 11. 25. 19:07

웹 어셈블리에서

인자로 입력 받아 결과를 웹에서 받는 예제를 찾아봄.

 

wasm으로 변환될 코드는 int 형을 받아서 int 형으로 출력할 것이고

#include <math.h>

extern "C" {

int int_sqrt(int x) {
  return sqrt(x);
}

}

 

빌드는 아래와 같이 emcc를 통해 ccall과 cwrap 방식으로 _int_sqrt 함수를 내보내라 인것 같은데

int_sqrt가 아니라 _int_sqrt는 calling convention때문인가?

$ emcc tests/hello_function.cpp -o function.html -s EXPORTED_FUNCTIONS='["_int_sqrt"]' -s EXPORTED_RUNTIME_METHODS='["ccall","cwrap"]'

 

웹에서 받는 법이 두가지라는데 cwrap으로 하면 int_sqrt 객체를 만들어서 한다는데 리턴이 되는진 모르겠고

ccall로 하면 인자를 던지는게 조금 귀찮아 지지만 var result에 결과가 들어가는 듯.

int_sqrt = Module.cwrap('int_sqrt', 'number', ['number'])
int_sqrt(12)
int_sqrt(28)

// Call C from JavaScript
var result = Module.ccall('int_sqrt', // name of C function
  'number', // return type
  ['number'], // argument types
  [28]); // arguments

// result is 5

[링크 : https://emscripten.org/docs/porting/connecting_cpp_and_javascript/Interacting-with-code.html]

 

 

[링크 : https://m.blog.daum.net/junek69/88]

[링크 : https://developer.mozilla.org/ko/docs/WebAssembly/C_to_wasm]

 

'Programming > wasm' 카테고리의 다른 글

wasm 배열 예제  (0) 2023.01.31
wasm text format  (0) 2021.10.26
wasm text 와 binary 상호변환  (0) 2021.10.26
emcc wasm 빌드  (0) 2021.10.25
wasm from c, cpp  (0) 2021.10.24
Posted by 구차니