stack-polymorphic 정보
3306 단어 WebAssembly
(module
(func (export "test") (param $i i32) (result i32)
(block (result i32)
i32.const 1
br 0
;;i32.const 2
)
)
)
(module
(func (export "test") (param $i i32) (result i32)
(block (result i32)
i32.const 1
br 0
i32.const 2
)
)
)
버그라고 생각했지만, 사양에 써 있었다.
stack-polymorphic라고 하는 것이 잘 모르겠지만, 후속 명령의 인수에 대해 「뽀뽀이 없는 한」어떤 형태라도 생각해 주어도 좋다, 라고 하는 것 같습니다.
이 블록의 반환값이 [i32]이면 좋기 때문에, 이쪽이면 br의 형태는 [i32]->[i32]가 되어,
(block (result i32)
i32.const 1
br 0
)
여기라면 br의 형태는 [i32]->[]가 된다.
(block (result i32)
i32.const 1
br 0
i32.const 2
)
unconditional control transfer(문답 무용으로 점프한다) 때 밖에 사용되지 않는 것 같기 때문에, 실질적으로는 그 후의 명령은 형 체크만 하면 좋고, 구현은 하지 않아도 된다.
Reference
이 문제에 관하여(stack-polymorphic 정보), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://qiita.com/edvakf@github/items/559d8032fbe9fa8a2d1e텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)