;;; instruction-test.asm: A file that contains all possible opcodes in ;;; order, with proper calling convention. Used to test lexer and ;;; parser but isn't a semantically correct program, but may be run as ;;; first instruction is halt (so program will stop immediately). halt push.byte 1 push.hword 2 push.word 3 pop.byte pop.hword pop.word push.reg.byte 1 push.reg.hword 2 push.reg.word 3 mov.byte 1 mov.hword 2 mov.word 3 dup.byte 1 dup.hword 2 dup.word 3 malloc.byte 1 malloc.hword 2 malloc.word 3 mset.byte 1 mset.hword 2 mset.word 3 mset.stack.byte mset.stack.hword mset.stack.word mget.byte 1 mget.hword 2 mget.word 3 mget.stack.byte mget.stack.hword mget.stack.word not.byte not.hword not.word or.byte or.hword or.word and.byte and.hword and.word xor.byte xor.hword xor.word eq.byte eq.hword eq.word plus.byte plus.hword plus.word print.char print.byte print.int print.hword print.long print.word jump.abs 1 jump.stack jump.register 2 jump.if.byte 1 jump.if.hword 2 jump.if.word 3 ;; Testing if overflows work correctly ;; Format is: ;; -1 All bits are turned on ;; UINT_MAX All bits are turned on ;; INT_MAX All bits but the most significant are on ;; INT_MIN Only the most significant bit is on push.byte -1 push.byte 255 push.byte 127 push.byte -128 push.hword -1 push.hword 4294967295 push.hword 2147483647 push.hword -2147483648 push.word -1 push.word 18446744073709551615 push.word 9223372036854775807 push.word -9223372036854775808