Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- /*
- TODO: Write a description
- */
- #include <stdbool.h>
- #include <stdint.h>
- #include <stdio.h>
- #include <stdlib.h>
- #include <string.h>
- #include <unistd.h>
- #include <sys/types.h>
- #include <signal.h>
- #include "allegrex/backend_interpreter.h"
- #include <pv/pv.h>
- void entryCode(pv_thread_t* thread) {
- PV_DATA(thread->context, 0x08900000,
- 0x00, 0x00, 0x01, 0x01, 0x55, 0x4E, 0x50, 0x00, 0x90, 0x08, 0x10, 0x3C, 0x04,
- 0x00, 0x04, 0x26, 0x50, 0x00, 0x05, 0x26, 0x14, 0x00, 0x06, 0x24, 0x02, 0x00,
- 0x07, 0x3C, 0x00, 0x80, 0x08, 0x3C, 0x21, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
- 0x4C, 0x1B, 0x08, 0x00, 0x21, 0x20, 0x40, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21,
- 0x30, 0x00, 0x00, 0xCC, 0x1B, 0x08, 0x00, 0x21, 0x20, 0x00, 0x00, 0x4C, 0x1C,
- 0x08, 0x00, 0x20, 0xF6, 0xBD, 0x27, 0x21, 0x20, 0xA0, 0x03, 0x4C, 0x2F, 0x08,
- 0x00, 0xA0, 0x08, 0x11, 0x3C, 0xB0, 0x08, 0x12, 0x3C, 0x00, 0x44, 0x10, 0x3C,
- 0x21, 0x20, 0x00, 0x00, 0xE0, 0x01, 0x05, 0x24, 0x10, 0x01, 0x06, 0x24, 0x0C,
- 0x4B, 0x08, 0x00, 0x21, 0x10, 0x20, 0x02, 0x00, 0xB6, 0x08, 0x34, 0x00, 0x00,
- 0x40, 0xA0, 0xFF, 0xFF, 0x08, 0x25, 0xFD, 0xFF, 0x01, 0x05, 0x01, 0x00, 0x42,
- 0x24, 0x00, 0xB4, 0x34, 0x36, 0xFF, 0x01, 0x93, 0x26, 0x21, 0x20, 0xA0, 0x03,
- 0x8C, 0x2F, 0x08, 0x00, 0x01, 0x00, 0x94, 0x26, 0x2B, 0x18, 0x93, 0x02, 0xFB,
- 0xFF, 0x60, 0x14, 0x00, 0x00, 0x82, 0xA2, 0xFE, 0x01, 0x15, 0x24, 0x21, 0x20,
- 0xA0, 0x03, 0x8C, 0x2F, 0x08, 0x00, 0x59, 0x00, 0x03, 0x24, 0x02, 0x00, 0x60,
- 0x14, 0x1B, 0x00, 0x43, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, 0x00,
- 0x10, 0x18, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, 0x1A, 0x03, 0x00, 0x20,
- 0xA0, 0x71, 0x00, 0x24, 0x10, 0x55, 0x00, 0x01, 0x00, 0x42, 0x24, 0x20, 0xA0,
- 0x82, 0x02, 0x00, 0x00, 0x95, 0xA2, 0x59, 0x00, 0x08, 0x24, 0x00, 0xB2, 0x29,
- 0x36, 0x00, 0xB2, 0x4B, 0x36, 0xFE, 0x01, 0x2A, 0x25, 0x00, 0x02, 0x24, 0x91,
- 0x01, 0x02, 0x25, 0x91, 0x21, 0x20, 0x85, 0x00, 0x02, 0x02, 0x25, 0x91, 0x21,
- 0x20, 0x85, 0x00, 0x01, 0x00, 0x25, 0x91, 0x21, 0x20, 0x85, 0x00, 0x82, 0x20,
- 0x04, 0x00, 0x01, 0x00, 0x80, 0x5C, 0xFF, 0xFF, 0x84, 0x24, 0x01, 0x00, 0x64,
- 0xA1, 0x01, 0x00, 0x29, 0x25, 0x2B, 0x10, 0x2A, 0x01, 0xF2, 0xFF, 0x40, 0x14,
- 0x01, 0x00, 0x6B, 0x25, 0xFF, 0xFF, 0x08, 0x25, 0x02, 0xFC, 0x6B, 0x25, 0xED,
- 0xFF, 0x00, 0x1D, 0x02, 0xFC, 0x29, 0x25, 0x10, 0x00, 0x08, 0x3C, 0x26, 0x80,
- 0x08, 0x02, 0x21, 0x10, 0x00, 0x02, 0x21, 0x40, 0x00, 0x00, 0x21, 0x50, 0x40,
- 0x02, 0x21, 0x20, 0x00, 0x02, 0x00, 0x02, 0x4B, 0x25, 0x00, 0x00, 0x42, 0x91,
- 0x00, 0x00, 0x82, 0xAC, 0x00, 0x08, 0x82, 0xAC, 0x00, 0x10, 0x82, 0xAC, 0x01,
- 0x00, 0x4A, 0x25, 0x2B, 0x18, 0x4B, 0x01, 0xF9, 0xFF, 0x60, 0x14, 0x04, 0x00,
- 0x84, 0x24, 0x01, 0x00, 0x08, 0x25, 0x5A, 0x00, 0x02, 0x2D, 0xF4, 0xFF, 0x40,
- 0x14, 0x00, 0x10, 0x84, 0x24, 0xD0, 0x09, 0xA4, 0x27, 0x01, 0x00, 0x05, 0x24,
- 0x4C, 0x50, 0x08, 0x00, 0xD4, 0x09, 0xA8, 0x8F, 0x01, 0x00, 0x00, 0x55, 0x4C,
- 0x38, 0x08, 0x00, 0x4C, 0x4E, 0x08, 0x00, 0x21, 0x20, 0x00, 0x02, 0x00, 0x02,
- 0x05, 0x24, 0x03, 0x00, 0x06, 0x24, 0x01, 0x00, 0x07, 0x24, 0x4C, 0x4C, 0x08,
- 0x00, 0x21, 0x40, 0x20, 0x02, 0x21, 0x88, 0x40, 0x02, 0x24, 0x00, 0x24, 0x0A,
- 0x21, 0x90, 0x00, 0x01
- )
- PV_CODE(thread->context,
- PV_INSTRUCTION(0x08900008, I_lui__RI(_s0, 0x890)) //"
- PV_INSTRUCTION(0x0890000C, I_addiu__RRI(_a0, _s0, 4)) //"
- PV_INSTRUCTION(0x08900010, I_addiu__RRI(_a1, _s0, 80)) //"
- PV_INSTRUCTION(0x08900014, I_li__RI(_a2, 20)) //"
- PV_INSTRUCTION(0x08900018, I_lui__RI(_a3, 0x2)) //"
- PV_INSTRUCTION(0x0890001C, I_lui__RI(_t0, 0x8000)) //"
- PV_INSTRUCTION(0x08900020, I_move__RR(_t1, _zero)) //"
- PV_INSTRUCTION(0x08900034, I_syscall__I(0x206D)) //"
- PV_INSTRUCTION(0x08900038, I_move__RR(_a0, _v0)) //"
- PV_INSTRUCTION(0x0890003C, I_move__RR(_a1, _zero)) //"
- PV_INSTRUCTION(0x08900040, I_move__RR(_a2, _zero)) //"
- PV_INSTRUCTION(0x08900044, I_syscall__I(0x206F)) //"
- PV_INSTRUCTION(0x08900048, I_move__RR(_a0, _zero)) //"
- PV_INSTRUCTION(0x0890004C, I_syscall__I(0x2071)) //"
- PV_INSTRUCTION(0x08900050, I_addiu__RRI(_sp, _sp, 0xFFFFF620)) //"
- PV_INSTRUCTION(0x08900054, I_move__RR(_a0, _sp)) //"
- PV_INSTRUCTION(0x08900058, I_syscall__I(0x20BD)) //"
- PV_INSTRUCTION(0x0890005C, I_lui__RI(_s1, 0x8A0)) //"
- PV_INSTRUCTION(0x08900060, I_lui__RI(_s2, 0x8B0)) //"
- PV_INSTRUCTION(0x08900064, I_lui__RI(_s0, 0x4400)) //"
- PV_INSTRUCTION(0x08900068, I_move__RR(_a0, _zero)) //"
- PV_INSTRUCTION(0x0890006C, I_li__RI(_a1, 480)) //"
- PV_INSTRUCTION(0x08900070, I_li__RI(_a2, 272)) //"
- PV_INSTRUCTION(0x08900074, I_syscall__I(0x212C)) //"
- PV_INSTRUCTION(0x08900078, I_move__RR(_v0, _s1)) //"
- PV_INSTRUCTION(0x0890007C, I_li__RI(_t0, 0xB600)) //"
- PV_INSTRUCTION(0x08900080, I_sb__RRI(_zero, _v0, 0)) //"
- PV_INSTRUCTION(0x08900084, I_addiu__RRI(_t0, _t0, 0xFFFFFFFF)) //"
- PV_INSTRUCTION(0x08900088, I_bgez__RI(_t0, 0x8900080)) //"
- PV_INSTRUCTION(0x0890008C, I_addiu__RRI(_v0, _v0, 1)) //"
- PV_INSTRUCTION(0x08900090, I_ori__RRI(_s4, _s1, 0xB400)) //"
- PV_INSTRUCTION(0x08900094, I_addiu__RRI(_s3, _s4, 511)) //"
- PV_INSTRUCTION(0x08900098, I_move__RR(_a0, _sp)) //"
- PV_INSTRUCTION(0x0890009C, I_syscall__I(0x20BE)) //"
- PV_INSTRUCTION(0x089000A0, I_addiu__RRI(_s4, _s4, 1)) //"
- PV_INSTRUCTION(0x089000A4, I_sltu__RRR(_v1, _s4, _s3)) //"
- PV_INSTRUCTION(0x089000A8, I_bnez__RI(_v1, 0x8900098)) //"
- PV_INSTRUCTION(0x089000AC, I_sb__RRI(_v0, _s4, 0)) //"
- PV_INSTRUCTION(0x089000B0, I_li__RI(_s5, 510)) //"
- PV_INSTRUCTION(0x089000B4, I_move__RR(_a0, _sp)) //"
- PV_INSTRUCTION(0x089000B8, I_syscall__I(0x20BE)) //"
- PV_INSTRUCTION(0x089000BC, I_li__RI(_v1, 89)) //"
- PV_INSTRUCTION(0x089000C0, I_bnez__RI(_v1, 0x89000CC)) //"
- PV_INSTRUCTION(0x089000C4, I_divu__RRR(_zero, _v0, _v1)) //"
- PV_INSTRUCTION(0x089000C8, I_break__I(0x1C00)) //"
- PV_INSTRUCTION(0x089000CC, I_mflo__R(_v0)) //"
- PV_INSTRUCTION(0x089000D0, I_mfhi__R(_v1)) //"
- PV_INSTRUCTION(0x089000D4, I_addiu__RRI(_v1, _v1, 1)) //"
- PV_INSTRUCTION(0x089000D8, I_sll__RRI(_v1, _v1, 0x9)) //"
- PV_INSTRUCTION(0x089000DC, I_add__RRR(_s4, _v1, _s1)) //"
- PV_INSTRUCTION(0x089000E0, I_and__RRR(_v0, _v0, _s5)) //"
- PV_INSTRUCTION(0x089000E4, I_addiu__RRI(_v0, _v0, 1)) //"
- PV_INSTRUCTION(0x089000E8, I_add__RRR(_s4, _s4, _v0)) //"
- PV_INSTRUCTION(0x089000EC, I_sb__RRI(_s5, _s4, 0)) //"
- PV_INSTRUCTION(0x089000F0, I_li__RI(_t0, 89)) //"
- PV_INSTRUCTION(0x089000F4, I_ori__RRI(_t1, _s1, 0xB200)) //"
- PV_INSTRUCTION(0x089000F8, I_ori__RRI(_t3, _s2, 0xB200)) //"
- PV_INSTRUCTION(0x089000FC, I_addiu__RRI(_t2, _t1, 510)) //"
- PV_INSTRUCTION(0x08900100, I_lbu__RRI(_a0, _t1, 512)) //"
- PV_INSTRUCTION(0x08900104, I_lbu__RRI(_a1, _t1, 513)) //"
- PV_INSTRUCTION(0x08900108, I_addu__RRR(_a0, _a0, _a1)) //"
- PV_INSTRUCTION(0x0890010C, I_lbu__RRI(_a1, _t1, 514)) //"
- PV_INSTRUCTION(0x08900110, I_addu__RRR(_a0, _a0, _a1)) //"
- PV_INSTRUCTION(0x08900114, I_lbu__RRI(_a1, _t1, 1)) //"
- PV_INSTRUCTION(0x08900118, I_addu__RRR(_a0, _a0, _a1)) //"
- PV_INSTRUCTION(0x0890011C, I_srl__RRI(_a0, _a0, 0x2)) //"
- PV_INSTRUCTION(0x08900120, I_bgtzl__RI(_a0, 0x8900128)) //"
- PV_INSTRUCTION(0x08900124, I_addiu__RRI(_a0, _a0, 0xFFFFFFFF)) //"
- PV_INSTRUCTION(0x08900128, I_sb__RRI(_a0, _t3, 1)) //"
- PV_INSTRUCTION(0x0890012C, I_addiu__RRI(_t1, _t1, 1)) //"
- PV_INSTRUCTION(0x08900130, I_sltu__RRR(_v0, _t1, _t2)) //"
- PV_INSTRUCTION(0x08900134, I_bnez__RI(_v0, 0x8900100)) //"
- PV_INSTRUCTION(0x08900138, I_addiu__RRI(_t3, _t3, 1)) //"
- PV_INSTRUCTION(0x0890013C, I_addiu__RRI(_t0, _t0, 0xFFFFFFFF)) //"
- PV_INSTRUCTION(0x08900140, I_addiu__RRI(_t3, _t3, 0xFFFFFC02)) //"
- PV_INSTRUCTION(0x08900144, I_bgtz__RI(_t0, 0x89000FC)) //"
- PV_INSTRUCTION(0x08900148, I_addiu__RRI(_t1, _t1, 0xFFFFFC02)) //"
- PV_INSTRUCTION(0x0890014C, I_lui__RI(_t0, 0x10)) //"
- PV_INSTRUCTION(0x08900150, I_xor__RRR(_s0, _s0, _t0)) //"
- PV_INSTRUCTION(0x08900154, I_move__RR(_v0, _s0)) //"
- PV_INSTRUCTION(0x08900158, I_move__RR(_t0, _zero)) //"
- PV_INSTRUCTION(0x0890015C, I_move__RR(_t2, _s2)) //"
- PV_INSTRUCTION(0x08900160, I_move__RR(_a0, _s0)) //"
- PV_INSTRUCTION(0x08900164, I_addiu__RRI(_t3, _t2, 512)) //"
- PV_INSTRUCTION(0x08900168, I_lbu__RRI(_v0, _t2, 0)) //"
- PV_INSTRUCTION(0x0890016C, I_sw__RRI(_v0, _a0, 0)) //"
- PV_INSTRUCTION(0x08900170, I_sw__RRI(_v0, _a0, 2048)) //"
- PV_INSTRUCTION(0x08900174, I_sw__RRI(_v0, _a0, 4096)) //"
- PV_INSTRUCTION(0x08900178, I_addiu__RRI(_t2, _t2, 1)) //"
- PV_INSTRUCTION(0x0890017C, I_sltu__RRR(_v1, _t2, _t3)) //"
- PV_INSTRUCTION(0x08900180, I_bnez__RI(_v1, 0x8900168)) //"
- PV_INSTRUCTION(0x08900184, I_addiu__RRI(_a0, _a0, 4)) //"
- PV_INSTRUCTION(0x08900188, I_addiu__RRI(_t0, _t0, 1)) //"
- PV_INSTRUCTION(0x0890018C, I_sltiu__RRI(_v0, _t0, 90)) //"
- PV_INSTRUCTION(0x08900190, I_bnez__RI(_v0, 0x8900164)) //"
- PV_INSTRUCTION(0x08900194, I_addiu__RRI(_a0, _a0, 4096)) //"
- PV_INSTRUCTION(0x08900198, I_addiu__RRI(_a0, _sp, 2512)) //"
- PV_INSTRUCTION(0x0890019C, I_li__RI(_a1, 1)) //"
- PV_INSTRUCTION(0x089001A0, I_syscall__I(0x2141)) //"
- PV_INSTRUCTION(0x089001A4, I_lw__RRI(_t0, _sp, 2516)) //"
- PV_INSTRUCTION(0x089001A8, I_bnezl__RI(_t0, 0x89001B0)) //"
- PV_INSTRUCTION(0x089001AC, I_syscall__I(0x20E1)) //"
- PV_INSTRUCTION(0x089001B0, I_syscall__I(0x2139)) //"
- PV_INSTRUCTION(0x089001B4, I_move__RR(_a0, _s0)) //"
- PV_INSTRUCTION(0x089001B8, I_li__RI(_a1, 512)) //"
- PV_INSTRUCTION(0x089001BC, I_li__RI(_a2, 3)) //"
- PV_INSTRUCTION(0x089001C0, I_li__RI(_a3, 1)) //"
- PV_INSTRUCTION(0x089001C4, I_syscall__I(0x2131)) //"
- PV_INSTRUCTION(0x089001C8, I_move__RR(_t0, _s1)) //"
- PV_INSTRUCTION(0x089001CC, I_move__RR(_s1, _s2)) //"
- PV_INSTRUCTION(0x089001D0, I_j__I(0x8900090)) //"
- PV_INSTRUCTION(0x089001D4, I_move__RR(_s2, _t0)) //"
- )
- }
- int main(int argc, char* argv[]) {
- //signal(SIGSEGV, pv_signalHandler);
- //signal(SIGINT, pv_signalHandler);
- pv_context_t* entryContext = pv_createAllegrexContext();
- pv_thread_t* entryThread = pv_createThread(entryCode,entryContext,NULL);
- pv_joinThread(entryThread);
- return 0;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement