mirror of
https://git.code.sf.net/p/quake/quakeforge
synced 2024-11-10 23:32:09 +00:00
bc73af37f2
collector a bit.
52 lines
948 B
Objective-C
52 lines
948 B
Objective-C
#ifndef __Instruction_h
|
|
#define __Instruction_h
|
|
#include "SchemeObject.h"
|
|
|
|
typedef enum {
|
|
LABEL,
|
|
PUSH,
|
|
POP,
|
|
MAKECLOSURE,
|
|
MAKECONT,
|
|
LOADENV,
|
|
LOADLITS,
|
|
MAKEENV,
|
|
POPENV,
|
|
GET,
|
|
SET,
|
|
SETREST,
|
|
SETSTACK,
|
|
GETLINK,
|
|
GETGLOBAL,
|
|
SETGLOBAL,
|
|
CALL,
|
|
RETURN,
|
|
IFFALSE,
|
|
GOTO
|
|
} opcode_e;
|
|
|
|
struct instruction_s {
|
|
opcode_e opcode;
|
|
integer operand;
|
|
};
|
|
|
|
typedef struct instruction_s instruction_t;
|
|
|
|
@interface Instruction: SchemeObject
|
|
{
|
|
opcode_e opcode;
|
|
integer operand, offset;
|
|
Instruction label;
|
|
}
|
|
+ (id) opcode: (opcode_e) oc;
|
|
+ (id) opcode: (opcode_e) oc operand: (integer) op;
|
|
+ (id) opcode: (opcode_e) oc label: (Instruction) l;
|
|
- (id) initWithOpcode: (opcode_e) oc operand: (integer) op label: (Instruction) l;
|
|
- (void) offset: (integer) ofs;
|
|
- (integer) offset;
|
|
- (opcode_e) opcode;
|
|
- (void) emitStruct: (instruction_t []) program;
|
|
|
|
@end
|
|
|
|
#endif //__Instruction_h
|