# Arithmetic

The arithmetic operators have a lot of differences between WASM and EVM bytecode,
all of the operand requires the order of the stack are reserved...

## Sub, Div, Mod and Bitwise Operand

```wasm
i32.const 2       ;; PUSH1 0x02
i32.const 1       ;; PUSH1 0x01
sub               ;; SWAP1
                  ;; SUB
```

This `SWAP1` sticks to all of these reversed order instructions, will introduce
macros to optimize it in `v0.3.0`.

## Comparison

The order of comparison are reversed as well, but however, they are paired!

```wasm
i32.const 1    ;; PUSH1 0x01
i32.const 0    ;; PUSH1 0x00
gt             ;; LT
```

This is insane, but works perfectly, don't think too much about it, focus
on if the output is `0` or `1` ;)