mirror of
https://github.com/KevinMidboe/linguist.git
synced 2025-10-29 17:50:22 +00:00
49 lines
1.8 KiB
Plaintext
49 lines
1.8 KiB
Plaintext
(module
|
|
(memory 256 256)
|
|
(data (i32.const 10) "waka waka waka waka waka")
|
|
;; stack imports are special
|
|
(import "env" "STACKTOP" (global $STACKTOP$asm2wasm$import i32))
|
|
(import "env" "STACK_MAX" (global $STACK_MAX$asm2wasm$import i32))
|
|
;; other imports must not be touched!
|
|
(import "env" "tempDoublePtr" (global $tempDoublePtr i32))
|
|
(export "test1" $test1)
|
|
(export "test2" $test2)
|
|
(export "test3" $test3)
|
|
;; ok to modify a global, if we keep it the same value
|
|
(global $mine (mut i32) (i32.const 1))
|
|
;; stack imports are ok to use. their uses are the same as other
|
|
;; globals - must keep the same value (which means, unwind the stack)
|
|
;; here the global names are "minified"
|
|
(global $global0 (mut i32) (get_global $STACKTOP$asm2wasm$import))
|
|
(global $global1 (mut i32) (get_global $STACK_MAX$asm2wasm$import))
|
|
;; a global initialized by an import, so bad, but ok if not used
|
|
(global $do-not-use (mut i32) (get_global $tempDoublePtr))
|
|
(func $test1
|
|
(local $temp i32)
|
|
(set_global $mine (i32.const 1))
|
|
(set_local $temp (get_global $global0))
|
|
(set_global $global0 (i32.const 1337)) ;; bad
|
|
(set_global $global0 (get_local $temp)) ;; save us
|
|
(set_global $global1 (i32.const 913370)) ;; bad
|
|
(set_global $global1 (get_local $temp)) ;; save us
|
|
;; use the stack memory
|
|
(i32.store (get_local $temp) (i32.const 1337))
|
|
(if
|
|
(i32.ne
|
|
(i32.load (get_local $temp))
|
|
(i32.const 1337)
|
|
)
|
|
(unreachable) ;; they should be equal, never get here
|
|
)
|
|
;; finally, do a valid store
|
|
(i32.store8 (i32.const 12) (i32.const 115))
|
|
)
|
|
(func $test2
|
|
(set_global $tempDoublePtr (i32.const 1)) ;; bad!
|
|
(i32.store8 (i32.const 13) (i32.const 115))
|
|
)
|
|
(func $test3
|
|
(i32.store8 (i32.const 14) (i32.const 115))
|
|
)
|
|
)
|