quakeforge/ruamoko/scheme/Instruction.h

52 lines
936 B
C
Raw Normal View History

#ifndef __Instruction_h
#define __Instruction_h
#include "SchemeObject.h"
typedef enum {
LABEL,
PUSH,
POP,
MAKECLOSURE,
MAKECONT,
LOADENV,
LOADLITS,
MAKEENV,
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