135 lines
3.8 KiB
JSON
Executable File
135 lines
3.8 KiB
JSON
Executable File
{
|
|
"arg_patterns":[
|
|
[
|
|
"(ip|dp|sp|r[0-3]),? (ip|dp|sp|r[0-3])",
|
|
"(ip|dp|sp|r[0-3]),? #(0b[0-1]{1,8}|(0x)?[0-9]{1,3})",
|
|
"(ip|dp|sp|r[0-3]),? [A-z][A-z0-9]*"
|
|
],
|
|
[
|
|
"(ip|dp|sp|r[0-3])"
|
|
],
|
|
[
|
|
"#(0b[0-1]{1,3}|(0x)?[0-9]{1,3})",
|
|
"(INPUT|OVERFLOW|NEGATIVE|CARRY|ZERO)"
|
|
]
|
|
[
|
|
"(ip|dp|sp|r[0-3])",
|
|
"#(0b[0-1]{1,8}|(0x)?[0-9]{1,3})",
|
|
"[A-z][A-z0-9]*"
|
|
],
|
|
[
|
|
""
|
|
]
|
|
],
|
|
"opcodes":[
|
|
{
|
|
"opcode": 0b0000,
|
|
"mnemonic":"add",
|
|
"patterns": 0,
|
|
"description": "Adds the immediate data, or the contents of the register given as the second operand to the register given as first operand."
|
|
},
|
|
{
|
|
"opcode": 0b0001,
|
|
"mnemonic":"sub",
|
|
"patterns": 0,
|
|
"description": "Subtracts the immediate data, or the contents of the register given as the third operand to the register given as the first operand."
|
|
},
|
|
{
|
|
"opcode":0b0010,
|
|
"mnemonic": "adc",
|
|
"patterns": 0,
|
|
"description": "Adds the two operands plus the carry flag, stores in the first operand register."
|
|
},
|
|
{
|
|
"opcode":0b0011,
|
|
"mnemonic":"subb",
|
|
"patterns":0,
|
|
"description": "Subtracts the second operand plus the carry flag from the first operand."
|
|
},
|
|
{
|
|
"opcode":0b0100,
|
|
"mnemonic":"nand",
|
|
"patterns":0,
|
|
"description":"Performs logical NAND on the two operands; stores in first operand register."
|
|
},
|
|
{
|
|
"opcode":0b0101,
|
|
"mnemonic": "xor",
|
|
"patterns":0,
|
|
"description":"Performs logical XOR on the two operands; stores in first operand register."
|
|
},
|
|
{
|
|
"opcode":0b0110,
|
|
"mnemonic":"sll",
|
|
"patterns":0,
|
|
"description":"Shifts bits in the first operand register left by the amount specified in the second operand."
|
|
},
|
|
{
|
|
"opcode":0b0111,
|
|
"mnemonic":"srl",
|
|
"patterns":0,
|
|
"description":"Shifts bits in the first operand register right by the amount specified in the second operand."
|
|
},
|
|
{
|
|
"opcode":0b1000,
|
|
"mnemonic":"mov",
|
|
"patterns":0,
|
|
"description": "Copies the register or data in the second operand into the first operand register."
|
|
},
|
|
{
|
|
"opcode":0b1001,
|
|
"mnemonic":"ldb",
|
|
"patterns":0,
|
|
"description":"Loads the byte into the first operand register at the address specified in the second operand."
|
|
},
|
|
{
|
|
"opcode":0b1010,
|
|
"mnemonic":"stb",
|
|
"patterns":0,
|
|
"description":"Stores the contents of the first operand register into the address specified in the second operand."
|
|
},
|
|
{
|
|
"opcode":0b1011,
|
|
"mnemonic":"push",
|
|
"patterns":1,
|
|
"description":"Pushes the contents of the specified register onto the stack."
|
|
},
|
|
{
|
|
"opcode":0b1011,
|
|
"mnemonic":"pop",
|
|
"patterns":1,
|
|
"description":"Pops the first item of the stack into the specified register"
|
|
},
|
|
{
|
|
"opcode":0b1100,
|
|
"mnemonic":"bflag",
|
|
"patterns":2,
|
|
"description": "Branches to the specified memory address if the specified flag bit is set."
|
|
},
|
|
{
|
|
"opcode":0b1101,
|
|
"mnemonic":"jmp",
|
|
"patterns":3,
|
|
"description":"Branches unconditionally to the specified memory address."
|
|
},
|
|
{
|
|
"opcode":0b1110,
|
|
"menmonic":"jsr",
|
|
"patterns":3,
|
|
"description":"Branches unconditionally to the specified memory address and push the lower 8 bits of (program counter + 2) onto the stack."
|
|
},
|
|
{
|
|
"opcode":0b1111,
|
|
"mnemonic":"setipg",
|
|
"patterns":4,
|
|
"description":"Sets the instruction page register to the upper 8 bits of (program counter + 4)."
|
|
},
|
|
{
|
|
"opcode":0b1111,
|
|
"mnemonic":"ret",
|
|
"patterns":4,
|
|
"description":"Pulls the lower 8 bits of the return address from the stack and jumps to it."
|
|
|
|
|
|
}
|