Mon 16 Mar 11:09:06 CET 2026

This commit is contained in:
sbosse 2026-03-16 11:10:23 +01:00
parent 2f8328ecf6
commit 62fcfd66be

51
src/ops.h Normal file
View File

@ -0,0 +1,51 @@
#ifndef _OPS_H
#define _OPS_H
/*
XP-Code Operations
[command][[arguments]]
*/
typedef enum {
ADD=1, DIV, MUL, SUB, NEG, MOD,
AND, OR, NOT,
EQ, NEQ, LT, GT, LE, GE, CMPS,
DROPD, DROPF,
PUSHD, PUSHF, NTHD, NTHF, TOF, SETF, SETSP, INCSP,
INCHAR, INNUMBER, INSTRING, INARRAY,
OUTCHAR, OUTNUMBER, OUTSTRING, OUTARRAY,
STRING,
JMP, JZ, JNZ, TESTRANGE, LOOP,
READ, WRITE, READS, WRITES, DATA, EVENT, ERR, EMIT,
INTERRUPT, RESUME, CALL, CCALL, PROC, FUNC, RETURN, FORK, YIELD,
#if HAS_LOCK > 0
LOCK, UNLOCK,
#endif
END, ENV
} ops_t;
/*
Variable XP operand sizes
*/
extern const index_t ops_s[];
typedef unsigned char opcmd_t; // code only
typedef struct {
index_t length; // real length in bytes
char data; // first character, dynamic memory
} string_t;
typedef struct __attribute__((packed)) {
opcmd_t command ;
union {
index_t ix ;
address_t ax ;
number_t nx ;
string_t sx ;
};
} op_t;
#define OPT(M,addr) ((op_t*)&M->data[addr])
#endif