This page was translated from English by the community. Learn more and join the MDN Web Docs community.

View in English Always switch to English

Converting WebAssembly text format to wasm

WebAssembly에는 S- expression 기반의 텍스트 표현, 텍스트 편집기, 브라우저 개발자 도구 등에서 노출되도록 고안된 중간 양식이 있습니다.이 기사에서는 어떻게 작동하는지, 텍스트 형식 파일을 .wasm 어셈블리 형식으로 변환할 수 있는 도구를 사용하는 방법에 대해 설명합니다.

참고 : 텍스트 형식 파일은 대개 .wat 확장자로 저장됩니다. 때로는 .wast도 사용됩니다.이 파일은 변환 할 때 .wast으로 변환되지 않는 파일에 허용되는 추가 테스트 명령을 포함하는 파일을 가리 킵니다 - assertions 등

A first look at the text format

이 간단한 예제를 보자 - 다음 프로그램은 imports라는 모듈에서 imported_func라는 함수를 가져오고 exported_func라는 함수를 내 보냅니다.

js
    (module
      (func $i (import "imports" "imported_func") (param i32))
      (func (export "exported_func")
        i32.const 42
        call $i
      )
    )

WebAssembly 함수 exported_func는 Google 환경에서 사용하기 위해 내보내집니다 (예 : WebAssembly 모듈을 사용하는 웹 앱). 이 함수를 호출하면 imported_func라는 가져온 JavaScript 함수가 호출됩니다.이 함수는 매개 변수로 제공된 값 (42)으로 실행됩니다.

Converting the text .wat into a binary .wasm file

위의 .wat 텍스트 표현 예제를 .wasm 어셈블리 형식으로 변환 해 봅시다.

  1. 시작하려면 simple.wat 라는 텍스트 파일 안에 위의 목록을 복사하십시오.

  2. 이 텍스트 표현을 우리가 사용하기 전에 브라우저가 실제로 읽는 어셈블리 언어로 어셈블해야합니다. 이를 위해 wabt 도구를 사용할 수 있습니다.이 도구에는 WebAssembly의 텍스트 표현과 wasm을 변환하는 컴파일러가 포함되어 있으며 그 반대의 경우도 가능합니다. https://github.com/webassembly/wabt로 이동 -이 페이지의 지침에 따라 도구를 설정하십시오.

  3. 일단 도구를 만들었 으면 시스템 PATH/wabt/out/clang/Debug 디렉토리를 추가하십시오.

  4. 그런 다음, wat2wasm 프로그램을 실행하여 입력 파일의 경로와 -o 매개 변수 다음에 출력 파일의 경로를 전달하십시오.

    bash
    wat2wasm simple.wat -o simple.wasm
    

wasm을 .wasm 어셈블리 코드가 들어있는 simple.wasm 파일로 변환합니다.

참고 : wasm2wat 도구를 사용하여 어셈블리를 다시 텍스트 표현으로 변환 할 수도 있습니다. 예 : wasm2wat simple.wasm -o text.wat.

Viewing the assembly output

출력 파일은 어셈블리 기반이므로 일반 텍스트 편집기에서는 볼 수 없습니다. 그러나 wat2wasm 도구의 -v 옵션을 사용하여 볼 수 있습니다. 아래 코드를 실행해 보세요:

bash
wat2wasm simple.wat -v

이렇게하면 다음과 같은 방법으로 터미널에 출력을 줄 수 있습니다.

several strings of binary with textual descriptions beside them. For example: 0000008: 01 ; section code

See also

  • Understanding WebAssembly text format — 텍스트 형식 구문에 대한 자세한 설명.
  • Compiling from C/C++ to WebAssembly — Binaryen / Emscripten과 같은 도구는 소스 코드를 wasm으로 컴파일하고 JavaScript 컨텍스트에서 모듈을 실행하는 데 필요한 API 코드를 만듭니다. 그들을 사용하는 방법에 대해 자세히 알아보십시오.
  • Using the WebAssembly JavaScript API — WebAssembly API 코드가 작동하는 방식에 대해 자세히 알고 싶다면이 내용을 읽으십시오.
  • Text format — WebAssembly GitHub repo에서 텍스트 형식에 대한 자세한 설명.
  • wast-loader — 이 모든 것을 처리하는 WebPack 용 로더입니다.