mirror of
https://github.com/bytecodealliance/wasm-micro-runtime.git
synced 2025-05-11 20:21:11 +00:00
53 lines
1.4 KiB
Plaintext
53 lines
1.4 KiB
Plaintext
(module
|
|
;; Memory definition: 4 GB = 65536
|
|
;; 8 GB = 131072
|
|
;; 16 GB = 262144
|
|
;; 20 GB = 327680
|
|
;; 32 GB = 524288
|
|
(memory (;0;) i64 131072 131072)
|
|
|
|
;; if touch too many pages more than physical memory can provide,
|
|
;; the signal will kill the process
|
|
(func (export "touch_every_page") (result i64 i64 i32 i32)
|
|
(local $i i64)
|
|
i64.const 0x0000000000000ff8
|
|
local.set $i
|
|
loop $loop
|
|
;; a[i] = i
|
|
local.get $i
|
|
local.get $i
|
|
i64.store
|
|
local.get $i
|
|
i64.const 4096
|
|
i64.add
|
|
local.set $i
|
|
local.get $i
|
|
;; max boundary(exclusive) 8GB - 8 = 0x0000000200000000 - 8
|
|
i64.const 0x0000000200000000
|
|
i64.const 8
|
|
i64.sub
|
|
i64.lt_u
|
|
br_if $loop
|
|
end
|
|
i64.const 0x000000000000fff8
|
|
i64.load
|
|
i64.const 0x000000010000fff8
|
|
i64.load
|
|
;; lower 8 bytes of 0x000000010001fff8 -> 0x0001fff8
|
|
i64.const 0x000000010001fff8
|
|
i32.load
|
|
;; higher 8 bytes of 0x000000010001fff8 -> 0x1
|
|
i64.const 0x000000010001fffc
|
|
i32.load
|
|
return
|
|
)
|
|
|
|
;; Function to test i64.atomic.store with i64 address
|
|
(func (export "i64_store_offset_4GB") (param $addr i64) (param $value i64)
|
|
(i64.store offset=0x100000000 (local.get $addr) (local.get $value))
|
|
)
|
|
|
|
(func (export "i64_load_offset_4GB") (param $addr i64) (result i64)
|
|
(i64.load offset=0x100000000 (local.get $addr))
|
|
)
|
|
) |