.global main .global foo .global bar main: nop nop lb $5, foo($3) bsr foo repeat $5, foo nop nop lb $5, (-foo & 0xffff)($3) bsr -foo repeat $5, -foo nop nop lb $5, (foo + bar)($3) bsr (foo + bar) repeat $5, (foo + bar) jmp (foo << 3) jmp (foo >> 3) jmp (foo - bar) & 0x7fffff jmp (foo - main) & 0x7fffff jmp (.text - foo) & 0x7fffff jmp (.data - foo) & 0x7fffff jmp (foo - %sizeof(.text)) jmp (foo * 7) jmp (foo / 7) jmp (foo % 7) jmp (foo ^ bar) jmp (foo | bar) jmp (foo & bar) jmp (foo == bar) << 5 jmp (foo < bar) << 5 jmp (foo <= bar) << 5 jmp (foo > bar) << 5 jmp (foo >= bar) << 5 # jmp (foo != bar) # FIXME this appears to not work atm. jmp (foo && bar) << 5 jmp (foo || bar) << 5 nop nop nop nop jmp %sizeof(.data) >> (((main ^ (bar + 0xf)) - ((foo | .text) << 2)) / 3) nop nop nop