slige/runtime/arch.hpp

71 lines
1.3 KiB
C++
Raw Normal View History

2024-11-08 11:22:42 +00:00
#pragma once
#include <cstdint>
namespace sliger {
// NOTICE: keep up to date with src/arch.ts
enum class Op : uint32_t {
2024-12-10 23:18:51 +00:00
Nop = 0x00,
PushNull = 0x01,
PushInt = 0x02,
PushBool = 0x03,
PushString = 0x04,
PushPtr = 0x05,
Pop = 0x06,
ReserveStatic = 0x07,
LoadStatic = 0x08,
StoreStatic = 0x09,
LoadLocal = 0x0a,
StoreLocal = 0x0b,
Call = 0x0c,
Return = 0x0d,
Jump = 0x0e,
JumpIfTrue = 0x0f,
Builtin = 0x10,
2024-12-17 01:10:11 +00:00
Duplicate = 0x11,
Swap = 0x12,
2024-12-10 23:18:51 +00:00
Add = 0x20,
Subtract = 0x21,
Multiply = 0x22,
Divide = 0x23,
Remainder = 0x24,
Equal = 0x25,
LessThan = 0x26,
And = 0x27,
Or = 0x28,
Xor = 0x29,
Not = 0x2a,
SourceMap = 0x30,
};
enum class Builtin : uint32_t {
2024-12-22 01:30:23 +00:00
Exit = 0x00,
IntToString = 0x01,
2024-12-10 23:18:51 +00:00
StringConcat = 0x10,
StringEqual = 0x11,
2024-12-12 15:07:59 +00:00
StringCharAt = 0x12,
StringLength = 0x13,
StringPushChar = 0x14,
2024-12-13 15:03:01 +00:00
StringToInt = 0x15,
2024-12-12 15:07:59 +00:00
ArrayNew = 0x20,
ArraySet = 0x21,
ArrayPush = 0x22,
ArrayAt = 0x23,
ArrayLength = 0x24,
2024-12-31 02:38:38 +00:00
StructNew = 0x30,
StructSet = 0x31,
StructAt = 0x32,
2024-12-11 12:37:26 +00:00
Print = 0x40,
2024-12-13 19:05:27 +00:00
FileOpen = 0x41,
FileClose = 0x42,
FileWriteString = 0x43,
2024-12-13 19:29:06 +00:00
FileReadChar = 0x44,
FileReadToString = 0x45,
FileFlush = 0x46,
FileEof = 0x47,
2024-11-08 11:22:42 +00:00
};
}