initial
This commit is contained in:
70
farm/program.h
Normal file
70
farm/program.h
Normal file
@@ -0,0 +1,70 @@
|
||||
#define INS_NOOP 0
|
||||
#define INS_ID 1
|
||||
#define INS_TAG 2
|
||||
#define INS_MOVE 3
|
||||
|
||||
#define INS_SENSE 4
|
||||
#define INS_PROBE 5
|
||||
|
||||
#define INS_PICKUP 6
|
||||
#define INS_CARRYING 7
|
||||
#define INS_DROP 8
|
||||
|
||||
#define INS_SMELL 9
|
||||
#define INS_SNIFF 0xa
|
||||
#define INS_MARK 0xb
|
||||
|
||||
#define INS_SET 0x10
|
||||
#define INS_AND 0x11
|
||||
#define INS_OR 0x12
|
||||
#define INS_XOR 0x13
|
||||
#define INS_LSHIFT 0x14
|
||||
#define INS_RSHIFT 0x15
|
||||
#define INS_ADD 0x16
|
||||
#define INS_SUB 0x17
|
||||
#define INS_MUL 0x18
|
||||
#define INS_DIV 0x19
|
||||
#define INS_MOD 0x1a
|
||||
#define INS_RANDOM 0x1b
|
||||
|
||||
#define INS_SJR 0x20
|
||||
#define INS_MJR 0x21
|
||||
#define INS_JMP 0x22
|
||||
#define INS_CALL 0x23
|
||||
#define INS_JEQ 0x24
|
||||
#define INS_JNE 0x25
|
||||
#define INS_JGT 0x26
|
||||
#define INS_JLT 0x27
|
||||
|
||||
static char* instruction_names[256] = {
|
||||
/* 0x00 */ "NOOP", "ID ", "TAG ", "MOVE", "SENS", "PROB", "PICK", "CARY", "DROP", "SMEL", "SNIF", "MARK", "?", "?", "?", "?",
|
||||
/* 0x10 */ "SET ", "AND ", "OR ", "XOR ", "SHL ", "SHR ", "ADD ", "SUB ", "MUL ", "DIV ", "MOD", "RAND", "?", "?", "?", "?",
|
||||
/* 0x20 */ "SJR ", "MJR ", "JMP ", "CALL", "JEQ", "JNE ", "JGT ", "JLT ", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x30 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x40 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x50 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x60 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x70 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x80 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0x90 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xa0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xb0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xc0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xd0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xe0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
/* 0xf0 */ "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?", "?",
|
||||
};
|
||||
|
||||
struct Instruction {
|
||||
unsigned char op;
|
||||
unsigned char arg1;
|
||||
unsigned char arg2;
|
||||
unsigned char arg3;
|
||||
};
|
||||
|
||||
struct Program {
|
||||
unsigned int num_instructions;
|
||||
struct Instruction instructions;
|
||||
};
|
||||
|
||||
struct Program* load_program(char* filename);
|
||||
Reference in New Issue
Block a user