allocate-registers x, one, result, jump read x li one, 1 ; fall through even: li jump, true jeqz x, jump sub x, x, one ; fall through odd: li jump, false jeqz x, jump sub x, x, one li jump, even j jump true: li result, 1 li jump, done j jump false: li result, 0 ; fall through done: write result halt test even-case >>> 4 1 test odd-case >>> 5 0 test zero-is-even >>> 0 1 test one-is-odd >>> 1 0