From 49f510d2d60129526832bfcd9c0f4049962bc80e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Benedikt=20B=C3=B6hm?= Date: Mon, 18 May 2009 20:53:42 +0200 Subject: move stuff around and create initial source structure --- src/emu/opc.h | 68 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 68 insertions(+) create mode 100644 src/emu/opc.h (limited to 'src/emu/opc.h') diff --git a/src/emu/opc.h b/src/emu/opc.h new file mode 100644 index 0000000..45d21a8 --- /dev/null +++ b/src/emu/opc.h @@ -0,0 +1,68 @@ +#ifndef _OPC_H +#define _OPC_H + +#include + +/* instructions formats: + * --------------------- + * + * arithmetic: + * |000|xxx|aaaaa|bbbbb|ccccc|00000000000| + * logic: + * |001|xxx|aaaaa|bbbbb|ccccc|00000000000| + * load & store: + * |010|xxx|aaaaa|bbbbb|cccccccccccccccc| + * branch: + * |011|xxx|aaaaa|bbbbb|cccccccccccccccc| + * jump: + * |100|xxx|aaaaa|000000000000000000000| + * misc: + * |111|xxx|??????????????????????????| + * + */ + +/* arithmetic */ +#define OPC_ADD 000 +#define OPC_SUB 001 +#define OPC_MUL 002 +#define OPC_DIV 003 +#define OPC_MOD 004 +#define OPC_SHL 005 +#define OPC_SHR 006 + +/* logic */ +#define OPC_AND 010 +#define OPC_OR 011 +#define OPC_XOR 012 +#define OPC_NOR 013 + +/* load & store */ +#define OPC_MOV 020 +#define OPC_LB 021 +#define OPC_LH 022 +#define OPC_LW 023 +#define OPC_SB 024 +#define OPC_SH 025 +#define OPC_SW 026 + +/* branch instructions */ +#define OPC_CMP 030 +#define OPC_BEQ 031 +#define OPC_BNE 032 +#define OPC_BLT 033 +#define OPC_BGE 034 +#define OPC_BLE 035 +#define OPC_BGT 036 + +/* jump instructions */ +#define OPC_J 040 +#define OPC_JAL 041 + +/* misc */ +#define OPC_SYS 070 + +/* conversion functions */ +uint32_t mnemonic2opc(const char *mnemonic); +const char *opc2mnemonic(uint32_t IR); + +#endif -- cgit v1.2.3