Introduced type semantics, completely replacing tag semantics.
2 * Copyright (C) 2012 David Anderson
4 * This file is part of JITCraft.
6 * JITCraft is free software: you can redistribute it and/or modify it under
7 * the terms of the GNU General Public License as published by the Free
8 * Software Foundation, either version 3 of the License, or (at your option)
11 * Foobar is distributed in the hope that it will be useful, but WITHOUT ANY
12 * WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
13 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
15 * You should have received a copy of the GNU General Public License along with
16 * JITCraft. If not, see http://www.gnu.org/licenses/.
18 #ifndef _include_opcodes_h_
19 #define _include_opcodes_h_
28 #define OPDEF(name, number, text, length, uses, defs) \
30 #include "Opcodes.tbl"
35 #define OPDEF(name, number, text, length, uses, defs) \
36 static const unsigned name##_LENGTH = length;
37 #include "Opcodes.tbl"
48 typedef unsigned char bytecode;
50 extern OpInfo OpcodeInfo[];
73 READ_INT32(bytecode *pc)
75 return *reinterpret_cast<int *>(pc + 1);
77 static inline unsigned
78 READ_UINT32(bytecode *pc)
80 return *reinterpret_cast<unsigned *>(pc + 1);
83 READ_FLOAT(bytecode *pc)
85 return *reinterpret_cast<float *>(pc + 1);
90 void Disassemble(Code *code, FILE *fp);
94 #endif // _include_opcodes_h_