mirror of
https://github.com/RetroPortingToolKit/psxrecomp
synced 2026-10-26 02:11:36 -04:00
7c40d33db3
Phase 1a (boot slice): 30 instructions at 0xBFC00000, compiles clean. Phase 1b (instruction coverage): 54 opcodes implemented in strict_translator, 44,629 walker-reachable instructions covered, 0 missing. Phase 1c (function discovery): 76 functions from 2 seeds, 2,988 instructions, 199 call edges, 27 indirect jumps. All validated through StrictTranslator. Phase 1d (indirect control flow): 27 sites classified — 21 A0/B0/C0 dispatch stubs, 4 computed calls, 2 computed tail calls. Ghidra cross-referenced with 0 disagreements. Phase 1e (relocation): ROM-to-RAM copy at FUN_bfc00420 proven with both Ghidra (static) and DuckStation (runtime). 69 address aliases, 68/69 function entries match byte-for-byte in RAM. Normalization rule documented. Includes PRINCIPLES.md and DEBUG.md adapted from recomp-template. Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
1409 lines
30 KiB
JSON
1409 lines
30 KiB
JSON
{
|
|
"schema": "psxrecomp-v4 phase1b instruction_inventory v2",
|
|
"program": "SCPH1001.BIN",
|
|
"image_base": "0xbfc00000",
|
|
"image_end": "0xbfc7ffff",
|
|
"source_function_count": 666,
|
|
"walker": {
|
|
"strategy": "BFS reachability from each seed: visit linear fall-through, in-function direct/conditional branch targets, and JAL/JALR delay-slot+return; terminate paths on JR/J after their delay slot. Conditional branches enqueue both taken target and post-delay fall-through. Delay slots are visited inline (never re-enqueued) so they cannot extend the walk on their own.",
|
|
"verification": [
|
|
{
|
|
"entry": "0xbfc00420",
|
|
"ghidra_end": "0xbfc0045b",
|
|
"walker_end": "0xbfc0045b",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc00678",
|
|
"ghidra_end": "0xbfc006a7",
|
|
"walker_end": "0xbfc006a7",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc006a8",
|
|
"ghidra_end": "0xbfc006d7",
|
|
"walker_end": "0xbfc006d7",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc00b7c",
|
|
"ghidra_end": "0xbfc00d9f",
|
|
"walker_end": "0xbfc00d9f",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc02324",
|
|
"ghidra_end": "0xbfc0258f",
|
|
"walker_end": "0xbfc0258f",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc04dec",
|
|
"ghidra_end": "0xbfc04fbb",
|
|
"walker_end": "0xbfc04fbb",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc18254",
|
|
"ghidra_end": "0xbfc18683",
|
|
"walker_end": "0xbfc18683",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc34160",
|
|
"ghidra_end": "0xbfc34303",
|
|
"walker_end": "0xbfc34303",
|
|
"match": true
|
|
},
|
|
{
|
|
"entry": "0xbfc4270c",
|
|
"ghidra_end": "0xbfc42843",
|
|
"walker_end": "0xbfc42843",
|
|
"match": true
|
|
}
|
|
],
|
|
"synthetic_seeds": [
|
|
{
|
|
"label": "reset_vector",
|
|
"entry": "0xbfc00000",
|
|
"hard_cap": "0xbfc00420",
|
|
"end": "0xbfc0041f",
|
|
"instr_count": 210
|
|
},
|
|
{
|
|
"label": "boot_general_exception_bev1",
|
|
"entry": "0xbfc00180",
|
|
"hard_cap": "0xbfc00420",
|
|
"end": "0xbfc0041f",
|
|
"instr_count": 168
|
|
}
|
|
]
|
|
},
|
|
"totals": {
|
|
"instructions_walked": 44629,
|
|
"distinct_buckets": 56,
|
|
"unknown_bucket_instructions": 0
|
|
},
|
|
"buckets": [
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x10",
|
|
"sub_kind": "rs_cop0",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "MFC0",
|
|
"category": "COP0",
|
|
"count": 2,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc01920",
|
|
"raw": "0x40086000"
|
|
},
|
|
{
|
|
"address": "0xbfc03968",
|
|
"raw": "0x40026000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x10",
|
|
"sub_kind": "rs_cop0",
|
|
"sub_value_hex": "0x04"
|
|
},
|
|
"mnemonic": "MTC0",
|
|
"category": "COP0",
|
|
"count": 13,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0023c",
|
|
"raw": "0x408c6000"
|
|
},
|
|
{
|
|
"address": "0xbfc00278",
|
|
"raw": "0x40806000"
|
|
},
|
|
{
|
|
"address": "0xbfc0028c",
|
|
"raw": "0x408c6000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x20"
|
|
},
|
|
"mnemonic": "ADD",
|
|
"category": "CPU",
|
|
"count": 1,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc03d40",
|
|
"raw": "0x01094020"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x08",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "ADDI",
|
|
"category": "CPU",
|
|
"count": 13,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00274",
|
|
"raw": "0x214a0080"
|
|
},
|
|
{
|
|
"address": "0xbfc00324",
|
|
"raw": "0x214a0080"
|
|
},
|
|
{
|
|
"address": "0xbfc003bc",
|
|
"raw": "0x20420004"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x09",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "ADDIU",
|
|
"category": "CPU",
|
|
"count": 7237,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00014",
|
|
"raw": "0x24080b88"
|
|
},
|
|
{
|
|
"address": "0xbfc0019c",
|
|
"raw": "0x24083022"
|
|
},
|
|
{
|
|
"address": "0xbfc0022c",
|
|
"raw": "0x24090804"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x21"
|
|
},
|
|
"mnemonic": "ADDU",
|
|
"category": "CPU",
|
|
"count": 3806,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc003dc",
|
|
"raw": "0x03a0f021"
|
|
},
|
|
{
|
|
"address": "0xbfc00688",
|
|
"raw": "0x00002021"
|
|
},
|
|
{
|
|
"address": "0xbfc0068c",
|
|
"raw": "0x00002821"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x24"
|
|
},
|
|
"mnemonic": "AND",
|
|
"category": "CPU",
|
|
"count": 165,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0128c",
|
|
"raw": "0x02218824"
|
|
},
|
|
{
|
|
"address": "0xbfc01ca8",
|
|
"raw": "0x00a12824"
|
|
},
|
|
{
|
|
"address": "0xbfc01cc0",
|
|
"raw": "0x00ca4024"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0C",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "ANDI",
|
|
"category": "CPU",
|
|
"count": 634,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0081c",
|
|
"raw": "0x31cf00ff"
|
|
},
|
|
{
|
|
"address": "0xbfc00828",
|
|
"raw": "0x316c00ff"
|
|
},
|
|
{
|
|
"address": "0xbfc00858",
|
|
"raw": "0x31f800ff"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x04",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "BEQ",
|
|
"category": "CPU",
|
|
"count": 2768,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00970",
|
|
"raw": "0x10000022"
|
|
},
|
|
{
|
|
"address": "0xbfc00998",
|
|
"raw": "0x10000018"
|
|
},
|
|
{
|
|
"address": "0xbfc009ac",
|
|
"raw": "0x12240007"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x01",
|
|
"sub_kind": "rt",
|
|
"sub_value_hex": "0x01"
|
|
},
|
|
"mnemonic": "BGEZ",
|
|
"category": "CPU",
|
|
"count": 181,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00ed8",
|
|
"raw": "0x06a1fff3"
|
|
},
|
|
{
|
|
"address": "0xbfc00f74",
|
|
"raw": "0x06010003"
|
|
},
|
|
{
|
|
"address": "0xbfc01058",
|
|
"raw": "0x04610089"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x07",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "BGTZ",
|
|
"category": "CPU",
|
|
"count": 49,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc01ab8",
|
|
"raw": "0x1cc0fffb"
|
|
},
|
|
{
|
|
"address": "0xbfc01ad4",
|
|
"raw": "0x1ca00003"
|
|
},
|
|
{
|
|
"address": "0xbfc01af4",
|
|
"raw": "0x1ca0fffd"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x06",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "BLEZ",
|
|
"category": "CPU",
|
|
"count": 131,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0151c",
|
|
"raw": "0x1b20000e"
|
|
},
|
|
{
|
|
"address": "0xbfc01aa0",
|
|
"raw": "0x18c00007"
|
|
},
|
|
{
|
|
"address": "0xbfc01ae4",
|
|
"raw": "0x18a00005"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x01",
|
|
"sub_kind": "rt",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "BLTZ",
|
|
"category": "CPU",
|
|
"count": 25,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0113c",
|
|
"raw": "0x04c00017"
|
|
},
|
|
{
|
|
"address": "0xbfc01280",
|
|
"raw": "0x04c00003"
|
|
},
|
|
{
|
|
"address": "0xbfc0155c",
|
|
"raw": "0x0600000e"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x05",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "BNE",
|
|
"category": "CPU",
|
|
"count": 1463,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00270",
|
|
"raw": "0x154bfff7"
|
|
},
|
|
{
|
|
"address": "0xbfc00320",
|
|
"raw": "0x154bffdf"
|
|
},
|
|
{
|
|
"address": "0xbfc003c4",
|
|
"raw": "0x1420fffc"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x0D"
|
|
},
|
|
"mnemonic": "BREAK",
|
|
"category": "CPU",
|
|
"count": 93,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc012cc",
|
|
"raw": "0x0007000d"
|
|
},
|
|
{
|
|
"address": "0xbfc028a8",
|
|
"raw": "0x0007000d"
|
|
},
|
|
{
|
|
"address": "0xbfc02a88",
|
|
"raw": "0x0007000d"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x1A"
|
|
},
|
|
"mnemonic": "DIV",
|
|
"category": "CPU",
|
|
"count": 73,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc07c7c",
|
|
"raw": "0x02a1001a"
|
|
},
|
|
{
|
|
"address": "0xbfc07ca0",
|
|
"raw": "0x01e1001a"
|
|
},
|
|
{
|
|
"address": "0xbfc07ce0",
|
|
"raw": "0x0321001a"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x1B"
|
|
},
|
|
"mnemonic": "DIVU",
|
|
"category": "CPU",
|
|
"count": 18,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc012a8",
|
|
"raw": "0x0064001b"
|
|
},
|
|
{
|
|
"address": "0xbfc02898",
|
|
"raw": "0x0193001b"
|
|
},
|
|
{
|
|
"address": "0xbfc02a6c",
|
|
"raw": "0x0195001b"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x02",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "J",
|
|
"category": "CPU",
|
|
"count": 2,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00070",
|
|
"raw": "0x0bf00054"
|
|
},
|
|
{
|
|
"address": "0xbfc00418",
|
|
"raw": "0x0bf01bb1"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x03",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "JAL",
|
|
"category": "CPU",
|
|
"count": 2606,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00680",
|
|
"raw": "0x0ff00e44"
|
|
},
|
|
{
|
|
"address": "0xbfc00690",
|
|
"raw": "0x0ff001b6"
|
|
},
|
|
{
|
|
"address": "0xbfc006b0",
|
|
"raw": "0x0ff00e44"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x09"
|
|
},
|
|
"mnemonic": "JALR",
|
|
"category": "CPU",
|
|
"count": 73,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc02d5c",
|
|
"raw": "0x0240f809"
|
|
},
|
|
{
|
|
"address": "0xbfc02e20",
|
|
"raw": "0x0260f809"
|
|
},
|
|
{
|
|
"address": "0xbfc02e58",
|
|
"raw": "0x0260f809"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x08"
|
|
},
|
|
"mnemonic": "JR",
|
|
"category": "CPU",
|
|
"count": 716,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00454",
|
|
"raw": "0x00800008"
|
|
},
|
|
{
|
|
"address": "0xbfc006a0",
|
|
"raw": "0x03e00008"
|
|
},
|
|
{
|
|
"address": "0xbfc006d0",
|
|
"raw": "0x03e00008"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x20",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LB",
|
|
"category": "CPU",
|
|
"count": 261,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00960",
|
|
"raw": "0x822e0000"
|
|
},
|
|
{
|
|
"address": "0xbfc009a4",
|
|
"raw": "0x82040000"
|
|
},
|
|
{
|
|
"address": "0xbfc009bc",
|
|
"raw": "0x82040001"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x24",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LBU",
|
|
"category": "CPU",
|
|
"count": 457,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00cc4",
|
|
"raw": "0x90ac0000"
|
|
},
|
|
{
|
|
"address": "0xbfc00ce4",
|
|
"raw": "0x90580001"
|
|
},
|
|
{
|
|
"address": "0xbfc00e1c",
|
|
"raw": "0x92440000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x21",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LH",
|
|
"category": "CPU",
|
|
"count": 527,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc01040",
|
|
"raw": "0x86620000"
|
|
},
|
|
{
|
|
"address": "0xbfc010f0",
|
|
"raw": "0x86620000"
|
|
},
|
|
{
|
|
"address": "0xbfc011fc",
|
|
"raw": "0x86620000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x25",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LHU",
|
|
"category": "CPU",
|
|
"count": 150,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc08e44",
|
|
"raw": "0x94c30008"
|
|
},
|
|
{
|
|
"address": "0xbfc08e90",
|
|
"raw": "0x95630008"
|
|
},
|
|
{
|
|
"address": "0xbfc09054",
|
|
"raw": "0x94c90008"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0F",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LUI",
|
|
"category": "CPU",
|
|
"count": 4122,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00000",
|
|
"raw": "0x3c080013"
|
|
},
|
|
{
|
|
"address": "0xbfc00008",
|
|
"raw": "0x3c011f80"
|
|
},
|
|
{
|
|
"address": "0xbfc00018",
|
|
"raw": "0x3c011f80"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x23",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LW",
|
|
"category": "CPU",
|
|
"count": 5482,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00334",
|
|
"raw": "0x8d090000"
|
|
},
|
|
{
|
|
"address": "0xbfc00338",
|
|
"raw": "0x8d090000"
|
|
},
|
|
{
|
|
"address": "0xbfc0033c",
|
|
"raw": "0x8d090000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x22",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LWL",
|
|
"category": "CPU",
|
|
"count": 6,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc19598",
|
|
"raw": "0x8901005f"
|
|
},
|
|
{
|
|
"address": "0xbfc195ac",
|
|
"raw": "0x89010057"
|
|
},
|
|
{
|
|
"address": "0xbfc195c0",
|
|
"raw": "0x8901005b"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x26",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LWR",
|
|
"category": "CPU",
|
|
"count": 6,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc1959c",
|
|
"raw": "0x9901005c"
|
|
},
|
|
{
|
|
"address": "0xbfc195b0",
|
|
"raw": "0x99010054"
|
|
},
|
|
{
|
|
"address": "0xbfc195c4",
|
|
"raw": "0x99010058"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x10"
|
|
},
|
|
"mnemonic": "MFHI",
|
|
"category": "CPU",
|
|
"count": 45,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc012b0",
|
|
"raw": "0x0000c810"
|
|
},
|
|
{
|
|
"address": "0xbfc063a0",
|
|
"raw": "0x00006010"
|
|
},
|
|
{
|
|
"address": "0xbfc064a8",
|
|
"raw": "0x00007010"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x12"
|
|
},
|
|
"mnemonic": "MFLO",
|
|
"category": "CPU",
|
|
"count": 172,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc012bc",
|
|
"raw": "0x00001812"
|
|
},
|
|
{
|
|
"address": "0xbfc026f0",
|
|
"raw": "0x00009012"
|
|
},
|
|
{
|
|
"address": "0xbfc0289c",
|
|
"raw": "0x00001812"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x19"
|
|
},
|
|
"mnemonic": "MULTU",
|
|
"category": "CPU",
|
|
"count": 115,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc026e4",
|
|
"raw": "0x02530019"
|
|
},
|
|
{
|
|
"address": "0xbfc028ac",
|
|
"raw": "0x02530019"
|
|
},
|
|
{
|
|
"address": "0xbfc028dc",
|
|
"raw": "0x02540019"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "NOP",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "NOP",
|
|
"category": "CPU",
|
|
"count": 3884,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00010",
|
|
"raw": "0x00000000"
|
|
},
|
|
{
|
|
"address": "0xbfc00020",
|
|
"raw": "0x00000000"
|
|
},
|
|
{
|
|
"address": "0xbfc00024",
|
|
"raw": "0x00000000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x27"
|
|
},
|
|
"mnemonic": "NOR",
|
|
"category": "CPU",
|
|
"count": 7,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc11f40",
|
|
"raw": "0x00805827"
|
|
},
|
|
{
|
|
"address": "0xbfc1220c",
|
|
"raw": "0x00805827"
|
|
},
|
|
{
|
|
"address": "0xbfc3cc34",
|
|
"raw": "0x01606027"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x25"
|
|
},
|
|
"mnemonic": "OR",
|
|
"category": "CPU",
|
|
"count": 126,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc001b0",
|
|
"raw": "0x00000825"
|
|
},
|
|
{
|
|
"address": "0xbfc001b4",
|
|
"raw": "0x00001025"
|
|
},
|
|
{
|
|
"address": "0xbfc001b8",
|
|
"raw": "0x00001825"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0D",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "ORI",
|
|
"category": "CPU",
|
|
"count": 485,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00004",
|
|
"raw": "0x3508243f"
|
|
},
|
|
{
|
|
"address": "0xbfc00154",
|
|
"raw": "0x35291000"
|
|
},
|
|
{
|
|
"address": "0xbfc0015c",
|
|
"raw": "0x35081125"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x28",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SB",
|
|
"category": "CPU",
|
|
"count": 703,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc008d4",
|
|
"raw": "0xa1c00000"
|
|
},
|
|
{
|
|
"address": "0xbfc008dc",
|
|
"raw": "0xa0000180"
|
|
},
|
|
{
|
|
"address": "0xbfc00cc0",
|
|
"raw": "0xa2000000"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x29",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SH",
|
|
"category": "CPU",
|
|
"count": 693,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0040c",
|
|
"raw": "0xa5200180"
|
|
},
|
|
{
|
|
"address": "0xbfc00410",
|
|
"raw": "0xa5200182"
|
|
},
|
|
{
|
|
"address": "0xbfc00414",
|
|
"raw": "0xa5200184"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SLL",
|
|
"category": "CPU",
|
|
"count": 1680,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00820",
|
|
"raw": "0x000fc400"
|
|
},
|
|
{
|
|
"address": "0xbfc00834",
|
|
"raw": "0x000c6a00"
|
|
},
|
|
{
|
|
"address": "0xbfc0084c",
|
|
"raw": "0x000a1400"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x04"
|
|
},
|
|
"mnemonic": "SLLV",
|
|
"category": "CPU",
|
|
"count": 10,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc11f2c",
|
|
"raw": "0x00495004"
|
|
},
|
|
{
|
|
"address": "0xbfc121f8",
|
|
"raw": "0x00495004"
|
|
},
|
|
{
|
|
"address": "0xbfc3ca30",
|
|
"raw": "0x01255004"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x2A"
|
|
},
|
|
"mnemonic": "SLT",
|
|
"category": "CPU",
|
|
"count": 166,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc01180",
|
|
"raw": "0x00c3082a"
|
|
},
|
|
{
|
|
"address": "0xbfc01360",
|
|
"raw": "0x0338082a"
|
|
},
|
|
{
|
|
"address": "0xbfc0139c",
|
|
"raw": "0x0055082a"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0A",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SLTI",
|
|
"category": "CPU",
|
|
"count": 235,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc02444",
|
|
"raw": "0x2861015f"
|
|
},
|
|
{
|
|
"address": "0xbfc02494",
|
|
"raw": "0x28a103e8"
|
|
},
|
|
{
|
|
"address": "0xbfc024d4",
|
|
"raw": "0x28a103e8"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0B",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SLTIU",
|
|
"category": "CPU",
|
|
"count": 79,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00f00",
|
|
"raw": "0x2c610080"
|
|
},
|
|
{
|
|
"address": "0xbfc00f10",
|
|
"raw": "0x2c610080"
|
|
},
|
|
{
|
|
"address": "0xbfc00f4c",
|
|
"raw": "0x2c610080"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x2B"
|
|
},
|
|
"mnemonic": "SLTU",
|
|
"category": "CPU",
|
|
"count": 130,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc003c0",
|
|
"raw": "0x0043082b"
|
|
},
|
|
{
|
|
"address": "0xbfc01b94",
|
|
"raw": "0x0044082b"
|
|
},
|
|
{
|
|
"address": "0xbfc01bd8",
|
|
"raw": "0x0043082b"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x03"
|
|
},
|
|
"mnemonic": "SRA",
|
|
"category": "CPU",
|
|
"count": 300,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc016bc",
|
|
"raw": "0x00042603"
|
|
},
|
|
{
|
|
"address": "0xbfc01bcc",
|
|
"raw": "0x00021083"
|
|
},
|
|
{
|
|
"address": "0xbfc01c50",
|
|
"raw": "0x0001c883"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x07"
|
|
},
|
|
"mnemonic": "SRAV",
|
|
"category": "CPU",
|
|
"count": 5,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc3c8f8",
|
|
"raw": "0x01631007"
|
|
},
|
|
{
|
|
"address": "0xbfc3c9fc",
|
|
"raw": "0x03232807"
|
|
},
|
|
{
|
|
"address": "0xbfc3cb78",
|
|
"raw": "0x03234807"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x02"
|
|
},
|
|
"mnemonic": "SRL",
|
|
"category": "CPU",
|
|
"count": 94,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc01ce4",
|
|
"raw": "0x00077882"
|
|
},
|
|
{
|
|
"address": "0xbfc01d3c",
|
|
"raw": "0x00087082"
|
|
},
|
|
{
|
|
"address": "0xbfc01d50",
|
|
"raw": "0x00087082"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x23"
|
|
},
|
|
"mnemonic": "SUBU",
|
|
"category": "CPU",
|
|
"count": 517,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc00ee0",
|
|
"raw": "0x0015a823"
|
|
},
|
|
{
|
|
"address": "0xbfc01060",
|
|
"raw": "0x00031823"
|
|
},
|
|
{
|
|
"address": "0xbfc0117c",
|
|
"raw": "0x00561823"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x2B",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SW",
|
|
"category": "CPU",
|
|
"count": 4037,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0000c",
|
|
"raw": "0xac281010"
|
|
},
|
|
{
|
|
"address": "0xbfc0001c",
|
|
"raw": "0xac281060"
|
|
},
|
|
{
|
|
"address": "0xbfc00160",
|
|
"raw": "0xad280020"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x2A",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SWL",
|
|
"category": "CPU",
|
|
"count": 6,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc195a4",
|
|
"raw": "0xa9210063"
|
|
},
|
|
{
|
|
"address": "0xbfc195b8",
|
|
"raw": "0xa921005b"
|
|
},
|
|
{
|
|
"address": "0xbfc195cc",
|
|
"raw": "0xa921005f"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x2E",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "SWR",
|
|
"category": "CPU",
|
|
"count": 6,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc195a8",
|
|
"raw": "0xb9210060"
|
|
},
|
|
{
|
|
"address": "0xbfc195bc",
|
|
"raw": "0xb9210058"
|
|
},
|
|
{
|
|
"address": "0xbfc195d4",
|
|
"raw": "0xb921005c"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x0C"
|
|
},
|
|
"mnemonic": "SYSCALL",
|
|
"category": "CPU",
|
|
"count": 2,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0d8c4",
|
|
"raw": "0x0000000c"
|
|
},
|
|
{
|
|
"address": "0xbfc0d964",
|
|
"raw": "0x0000000c"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x00",
|
|
"sub_kind": "funct",
|
|
"sub_value_hex": "0x26"
|
|
},
|
|
"mnemonic": "XOR",
|
|
"category": "CPU",
|
|
"count": 28,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc07528",
|
|
"raw": "0x012a5826"
|
|
},
|
|
{
|
|
"address": "0xbfc08734",
|
|
"raw": "0x004e1026"
|
|
},
|
|
{
|
|
"address": "0xbfc08744",
|
|
"raw": "0x004f1026"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x0E",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "XORI",
|
|
"category": "CPU",
|
|
"count": 5,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc14104",
|
|
"raw": "0x38420001"
|
|
},
|
|
{
|
|
"address": "0xbfc141c8",
|
|
"raw": "0x38420001"
|
|
},
|
|
{
|
|
"address": "0xbfc1427c",
|
|
"raw": "0x38420001"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x11",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "COP1",
|
|
"category": "PRIVILEGED_OR_DATA",
|
|
"count": 17,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc0233c",
|
|
"raw": "0x44801000"
|
|
},
|
|
{
|
|
"address": "0xbfc02340",
|
|
"raw": "0x44801800"
|
|
},
|
|
{
|
|
"address": "0xbfc02358",
|
|
"raw": "0x46201006"
|
|
}
|
|
]
|
|
},
|
|
{
|
|
"key": {
|
|
"primary_opcode_hex": "0x31",
|
|
"sub_kind": "none",
|
|
"sub_value_hex": "0x00"
|
|
},
|
|
"mnemonic": "LWC1",
|
|
"category": "PRIVILEGED_OR_DATA",
|
|
"count": 2,
|
|
"examples": [
|
|
{
|
|
"address": "0xbfc02544",
|
|
"raw": "0xc422dc60"
|
|
},
|
|
{
|
|
"address": "0xbfc02548",
|
|
"raw": "0xc423dc64"
|
|
}
|
|
]
|
|
}
|
|
]
|
|
} |