i32.rem_s
Pops two i32 values off the stack, divides the first by the second, takes the remaining amount, and then pushes that on to the stack. This looks at the values as signed integers (can be negative).
$result = $first % $second

Syntax

i32.rem_s

Stack In

i32 The first value to be divided.
i32 The second value to divide by.

Stack Out

i32 The remaining amount left after dividing the first value by the second one.

Examples

;; Push the i32 values onto the stack
i32.const 10
i32.const 3

;; Get remainder from 10 by 3 seeing it as signed
i32.rem_s

;; The stack contains an i32 value of 1 (result = 10 % 3)
;; Push the i32 values onto the stack
i32.const 0xF178CD56
i32.const 42

;; Get remainder from 0xF178CD56 by 42 seeing it as signed
i32.rem_s

;; The stack contains an i32 value of -24 (result = -243741354 % 42)
;; Push the i32 values onto the stack
i32.const 0xF178CD56
i32.const 42

;; Get remainder from 0xF178CD56 by 42 seeing it as unsigned
i32.rem_u

;; The stack contains an i32 value of 22 (result = 4051225942 % 42)