From 495cc1df494505378977995eeb76b05f20f0b235 Mon Sep 17 00:00:00 2001 From: Nicolas Schodet Date: Sun, 13 Jun 2010 17:49:42 +0200 Subject: import firmware from LEGO v1.29 --- AT91SAM7S256/Source/c_cmd_bytecodes.h | 132 +++++++++++++++++----------------- 1 file changed, 68 insertions(+), 64 deletions(-) (limited to 'AT91SAM7S256/Source/c_cmd_bytecodes.h') diff --git a/AT91SAM7S256/Source/c_cmd_bytecodes.h b/AT91SAM7S256/Source/c_cmd_bytecodes.h index 6051aba..5cd9dfd 100644 --- a/AT91SAM7S256/Source/c_cmd_bytecodes.h +++ b/AT91SAM7S256/Source/c_cmd_bytecodes.h @@ -4,83 +4,87 @@ // opcode definitions // symbol, bits, arg format // -#define OPCODE_COUNT 0x36 +#define OPCODE_COUNT 0x38 //Family: Math -#define OP_ADD 0x00 // dest, src1, src2 -#define OP_SUB 0x01 // dest, src1, src2 -#define OP_NEG 0x02 // dest, src -#define OP_MUL 0x03 // dest, src1, src2 -#define OP_DIV 0x04 // dest, src1, src2 -#define OP_MOD 0x05 // dest, src1, src2 +#define OP_ADD 0x00 // dest, src1, src2 +#define OP_SUB 0x01 // dest, src1, src2 +#define OP_NEG 0x02 // dest, src +#define OP_MUL 0x03 // dest, src1, src2 +#define OP_DIV 0x04 // dest, src1, src2 +#define OP_MOD 0x05 // dest, src1, src2 //Family: Logic -#define OP_AND 0x06 // dest, src1, src2 -#define OP_OR 0x07 // dest, src1, src2 -#define OP_XOR 0x08 // dest, src1, src2 -#define OP_NOT 0x09 // dest, src +#define OP_AND 0x06 // dest, src1, src2 +#define OP_OR 0x07 // dest, src1, src2 +#define OP_XOR 0x08 // dest, src1, src2 +#define OP_NOT 0x09 // dest, src //Family: Bit manipulation -#define OP_CMNT 0x0A // dest, src -#define OP_LSL 0x0B // dest, src -#define OP_LSR 0x0C // dest, src -#define OP_ASL 0x0D // dest, src -#define OP_ASR 0x0E // dest, src -#define OP_ROTL 0x0F // dest, src -#define OP_ROTR 0x10 // dest, src +#define OP_CMNT 0x0A // dest, src +#define OP_LSL 0x0B // dest, src +#define OP_LSR 0x0C // dest, src +#define OP_ASL 0x0D // dest, src +#define OP_ASR 0x0E // dest, src +#define OP_ROTL 0x0F // dest, src +#define OP_ROTR 0x10 // dest, src //Family: Comparison -#define OP_CMP 0x11 // dest, src1, src2 -#define OP_TST 0x12 // dest, src -#define OP_CMPSET 0x13 // dest, src, testsrc, testsrc -#define OP_TSTSET 0x14 // dest, src, testsrc +#define OP_CMP 0x11 // dest, src1, src2 +#define OP_TST 0x12 // dest, src +#define OP_CMPSET 0x13 // dest, src, testsrc, testsrc +#define OP_TSTSET 0x14 // dest, src, testsrc //Family: Array ops -#define OP_INDEX 0x15 // dest, src, index -#define OP_REPLACE 0x16 // dest, src, index, val -#define OP_ARRSIZE 0x17 // dest, src -#define OP_ARRBUILD 0x18 // instrsize, dest, src1, src2, … -#define OP_ARRSUBSET 0x19 // dest, src, index, length -#define OP_ARRINIT 0x1A // dest, elem, length +#define OP_INDEX 0x15 // dest, src, index +#define OP_REPLACE 0x16 // dest, src, index, val +#define OP_ARRSIZE 0x17 // dest, src +#define OP_ARRBUILD 0x18 // instrsize, dest, src1, src2, … +#define OP_ARRSUBSET 0x19 // dest, src, index, length +#define OP_ARRINIT 0x1A // dest, elem, length //Family: Memory ops -#define OP_MOV 0x1B // dest, src -#define OP_SET 0x1C // dest, imm +#define OP_MOV 0x1B // dest, src +#define OP_SET 0x1C // dest, imm //Family: String ops -#define OP_FLATTEN 0x1D // dest, src -#define OP_UNFLATTEN 0x1E // dest, err, src, type -#define OP_NUMTOSTRING 0x1F // dest, src -#define OP_STRINGTONUM 0x20 // dest, offsetpast, src, offset, default -#define OP_STRCAT 0x21 // instrsize, dest, src1, src2, … -#define OP_STRSUBSET 0x22 // dest, src, index, length -#define OP_STRTOBYTEARR 0x23 // dest, src -#define OP_BYTEARRTOSTR 0x24 // dest, src +#define OP_FLATTEN 0x1D // dest, src +#define OP_UNFLATTEN 0x1E // dest, err, src, type +#define OP_NUMTOSTRING 0x1F // dest, src +#define OP_STRINGTONUM 0x20 // dest, offsetpast, src, offset, default +#define OP_STRCAT 0x21 // instrsize, dest, src1, src2, … +#define OP_STRSUBSET 0x22 // dest, src, index, length +#define OP_STRTOBYTEARR 0x23 // dest, src +#define OP_BYTEARRTOSTR 0x24 // dest, src //Family: Control flow -#define OP_JMP 0x25 // offset -#define OP_BRCMP 0x26 // offset, src1, src2 -#define OP_BRTST 0x27 // offset, src -#define OP_SYSCALL 0x28 // func, args -#define OP_STOP 0x29 // stop? +#define OP_JMP 0x25 // offset +#define OP_BRCMP 0x26 // offset, src1, src2 +#define OP_BRTST 0x27 // offset, src +#define OP_SYSCALL 0x28 // func, args +#define OP_STOP 0x29 // stop? //Family: Clump scheduling -#define OP_FINCLUMP 0x2A // start, end -#define OP_FINCLUMPIMMED 0x2B // clumpID -#define OP_ACQUIRE 0x2C // mutexID -#define OP_RELEASE 0x2D // mutexID -#define OP_SUBCALL 0x2E // subroutine, callerID -#define OP_SUBRET 0x2F // callerID +#define OP_FINCLUMP 0x2A // start, end +#define OP_FINCLUMPIMMED 0x2B // clumpID +#define OP_ACQUIRE 0x2C // mutexID +#define OP_RELEASE 0x2D // mutexID +#define OP_SUBCALL 0x2E // subroutine, callerID +#define OP_SUBRET 0x2F // callerID //Family: IO ops -#define OP_SETIN 0x30 // src, port, propid -#define OP_SETOUT 0x31 // instrsize, port/portlist, propid1, src1, ... -#define OP_GETIN 0x32 // dest, port, propid -#define OP_GETOUT 0x33 // dest, port, propid +#define OP_SETIN 0x30 // src, port, propid +#define OP_SETOUT 0x31 // src, port, propid +#define OP_GETIN 0x32 // dest, port, propid +#define OP_GETOUT 0x33 // dest, port, propid //Family: Timing -#define OP_WAIT 0x34 // milliseconds -#define OP_GETTICK 0x35 // dest +#define OP_WAIT 0x34 // dest, src +#define OP_GETTICK 0x35 // dest + +//Family: Math NEW +#define OP_SQRT 0x36 // dest, src +#define OP_ABS 0x37 // dest, src // condition code definitions #define OPCC1_LT 0x00 @@ -96,20 +100,20 @@ // short op definitions // #define USE_SHORT_OPS -#define SHORT_OP_MOV 0 -#define SHORT_OP_ACQUIRE 1 -#define SHORT_OP_RELEASE 2 -#define SHORT_OP_SUBCALL 3 +#define SHORT_OP_MOV 0 +#define SHORT_OP_ACQUIRE 1 +#define SHORT_OP_RELEASE 2 +#define SHORT_OP_SUBCALL 3 // // short op mapping table // -static UBYTE ShortOpMap[4] = +static UBYTE ShortOpMap[4] = { - OP_MOV, - OP_ACQUIRE, - OP_RELEASE, - OP_SUBCALL + OP_MOV, + OP_ACQUIRE, + OP_RELEASE, + OP_SUBCALL }; #endif // C_CMD_BYTECODES -- cgit v1.2.3