mirror of
https://gitlab.com/2009scape/2009scape.git
synced 2025-12-10 10:20:41 -07:00
88 lines
4 KiB
Java
88 lines
4 KiB
Java
package org.runite.client;
|
|
|
|
public enum CS2AsmOpcodes {
|
|
// Copies the operand specified by the instruction to the int stack
|
|
PUSH_INT(0),
|
|
// Copies the int from ram onto the int stack specified by the operand
|
|
PUSH_INT_FROM_RAM(1),
|
|
// Copies an int from the stack onto ram, using the ram address specified by the operand
|
|
POP_INT_TO_RAM(2),
|
|
// Copies the operand specified by the instruction to the string stack
|
|
PUSH_STR(3),
|
|
// Jump to the relative location given by the operand. EG an op of 4 will jump ahead 4 instructions.
|
|
JUMP(6),
|
|
// Jumps to the relative location given by the operand IFF the last two values pushed on the int stack are NOT equal
|
|
// THIS ALSO POPS THE STACK TWICE
|
|
BRANCH_NOT_EQUAL(7),
|
|
// Jumps to the relative location given by the operand IFF the last two values on the int stack are equal
|
|
// THIS ALSO POPS THE STACK TWICE
|
|
BRANCH_EQUAL(8),
|
|
// Jumps to the relative location given by operand IFF the most recent value on the int stack > the second most recent one
|
|
// THIS ALSO POPS THE STACK TWICE
|
|
BRANCH_GREATER_THAN(9),
|
|
// See above but in reverse
|
|
BRANCH_LESS_THAN(10),
|
|
// Returns from the current method, completely analogous to returning from a method in any other programming language.
|
|
// It places you back on the previous method and resumes execution right after the call.
|
|
// IT DOES NOT TOUCH THE INT OR STRING STACK OR THE RAM.
|
|
RETURN(21),
|
|
// TODO: Opcode 25, opcode 27. I suspect these are tied together
|
|
|
|
// See 9 and 10
|
|
BRANCH_GREATER_OR_EQUAL(31),
|
|
BRANCH_LESS_OR_EQUAL(32),
|
|
|
|
// Copies the int from the int args array onto the stack specified by the operand.
|
|
// eg if the operand is 2 it copies the second int arg onto the stack
|
|
PUSH_INT_FROM_ARGS(33),
|
|
// Copies an int from the stack onto the int args array. It copies it onto the argument array index specified
|
|
// by the operand.
|
|
POP_INT_TO_ARGS(34),
|
|
// See above but for the string array and string args.
|
|
PUSH_STRING_FROM_ARGS(35),
|
|
POP_STRING_TO_ARGS(36),
|
|
// TODO: Opcode 37
|
|
|
|
// Pops int/string from the stack without using it. Effectively throwing it away.
|
|
POP_INT(38),
|
|
POP_STRING(39),
|
|
|
|
// Calls the method specified by the operand. The method's arguments are LOADED from the int and string stack
|
|
// If it has 4 int arguments, for instance, it will pop the int stack four times and assign these values in
|
|
// REVERSE order. That is, the first popped value becomes the LAST argument. Number of arguments are given in
|
|
// AssembledMethod.NumberOf[X]Arguments
|
|
// This effectively "resets" the program counter. It DOES NOT RESET THE INT OR STRING STACK OR THE RAM.
|
|
// Also It adds the previous method to the method stack. SEE RETURN(21)
|
|
CALL(40),
|
|
|
|
// Opcodes 42 and 43 load and store from the VARC array, respectively. Writing to the VARC array emits and processes a component modification request, which scripts can set listeners for (e.g. to update highlights in an interface when an item quantity changes).
|
|
LOAD_VARC(42),
|
|
STORE_VARC(43),
|
|
|
|
// allocates one of the five paged ram pages as selected by the top 16 bits of the operand.
|
|
// If the bottom 16 bits equal 105, this will be allocated as all zeroes.
|
|
// Otherwise it will be allocated with all -1s. Why?? Jagex is fucking stupid idk.
|
|
// THE NUMBER OF INTS ALLOCATED IS BASED ON THE VALUE ON INT STACK.
|
|
// POPS THE INT STACK
|
|
ALLOCATE_PAGED_RAM(44),
|
|
|
|
// Replaces the value at the end of the stack with the value in the ram page specified by the operand
|
|
// and the page entry specified by the last value of the int stack
|
|
REPLACE_STACK_PAGED_RAM(45),
|
|
|
|
// Copies an int from the int stack to paged ram. The page is given by the operand and the
|
|
// page entry is given by the NEXT value on the int stack.
|
|
// Thus this pops the int stack TWICE.
|
|
POP_TO_PAGED_RAM(46);
|
|
|
|
|
|
private final int op;
|
|
|
|
public int getOp() {
|
|
return this.op;
|
|
}
|
|
|
|
CS2AsmOpcodes(int op) {
|
|
this.op = op;
|
|
}
|
|
}
|