Advertisement
Guest User

Untitled

a guest
Jun 29th, 2017
64
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
C 10.36 KB | None | 0 0
  1. /*
  2.   TODO: Write a description
  3. */
  4.  
  5. #include <stdbool.h>
  6. #include <stdint.h>
  7. #include <stdio.h>
  8. #include <stdlib.h>
  9. #include <string.h>
  10. #include <unistd.h>
  11. #include <sys/types.h>
  12. #include <signal.h>
  13.  
  14. #include "allegrex/backend_interpreter.h"
  15.  
  16. #include <pv/pv.h>
  17.  
  18.  
  19. void entryCode(pv_thread_t* thread) {
  20.  
  21.   PV_DATA(thread->context, 0x08900000,
  22.     0x00, 0x00, 0x01, 0x01, 0x55, 0x4E, 0x50, 0x00, 0x90, 0x08, 0x10, 0x3C, 0x04,
  23.     0x00, 0x04, 0x26, 0x50, 0x00, 0x05, 0x26, 0x14, 0x00, 0x06, 0x24, 0x02, 0x00,
  24.     0x07, 0x3C, 0x00, 0x80, 0x08, 0x3C, 0x21, 0x48, 0x00, 0x00, 0x00, 0x00, 0x00,
  25.     0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
  26.     0x4C, 0x1B, 0x08, 0x00, 0x21, 0x20, 0x40, 0x00, 0x21, 0x28, 0x00, 0x00, 0x21,
  27.     0x30, 0x00, 0x00, 0xCC, 0x1B, 0x08, 0x00, 0x21, 0x20, 0x00, 0x00, 0x4C, 0x1C,
  28.     0x08, 0x00, 0x20, 0xF6, 0xBD, 0x27, 0x21, 0x20, 0xA0, 0x03, 0x4C, 0x2F, 0x08,
  29.     0x00, 0xA0, 0x08, 0x11, 0x3C, 0xB0, 0x08, 0x12, 0x3C, 0x00, 0x44, 0x10, 0x3C,
  30.     0x21, 0x20, 0x00, 0x00, 0xE0, 0x01, 0x05, 0x24, 0x10, 0x01, 0x06, 0x24, 0x0C,
  31.     0x4B, 0x08, 0x00, 0x21, 0x10, 0x20, 0x02, 0x00, 0xB6, 0x08, 0x34, 0x00, 0x00,
  32.     0x40, 0xA0, 0xFF, 0xFF, 0x08, 0x25, 0xFD, 0xFF, 0x01, 0x05, 0x01, 0x00, 0x42,
  33.     0x24, 0x00, 0xB4, 0x34, 0x36, 0xFF, 0x01, 0x93, 0x26, 0x21, 0x20, 0xA0, 0x03,
  34.     0x8C, 0x2F, 0x08, 0x00, 0x01, 0x00, 0x94, 0x26, 0x2B, 0x18, 0x93, 0x02, 0xFB,
  35.     0xFF, 0x60, 0x14, 0x00, 0x00, 0x82, 0xA2, 0xFE, 0x01, 0x15, 0x24, 0x21, 0x20,
  36.     0xA0, 0x03, 0x8C, 0x2F, 0x08, 0x00, 0x59, 0x00, 0x03, 0x24, 0x02, 0x00, 0x60,
  37.     0x14, 0x1B, 0x00, 0x43, 0x00, 0x0D, 0x00, 0x07, 0x00, 0x12, 0x10, 0x00, 0x00,
  38.     0x10, 0x18, 0x00, 0x00, 0x01, 0x00, 0x63, 0x24, 0x40, 0x1A, 0x03, 0x00, 0x20,
  39.     0xA0, 0x71, 0x00, 0x24, 0x10, 0x55, 0x00, 0x01, 0x00, 0x42, 0x24, 0x20, 0xA0,
  40.     0x82, 0x02, 0x00, 0x00, 0x95, 0xA2, 0x59, 0x00, 0x08, 0x24, 0x00, 0xB2, 0x29,
  41.     0x36, 0x00, 0xB2, 0x4B, 0x36, 0xFE, 0x01, 0x2A, 0x25, 0x00, 0x02, 0x24, 0x91,
  42.     0x01, 0x02, 0x25, 0x91, 0x21, 0x20, 0x85, 0x00, 0x02, 0x02, 0x25, 0x91, 0x21,
  43.     0x20, 0x85, 0x00, 0x01, 0x00, 0x25, 0x91, 0x21, 0x20, 0x85, 0x00, 0x82, 0x20,
  44.     0x04, 0x00, 0x01, 0x00, 0x80, 0x5C, 0xFF, 0xFF, 0x84, 0x24, 0x01, 0x00, 0x64,
  45.     0xA1, 0x01, 0x00, 0x29, 0x25, 0x2B, 0x10, 0x2A, 0x01, 0xF2, 0xFF, 0x40, 0x14,
  46.     0x01, 0x00, 0x6B, 0x25, 0xFF, 0xFF, 0x08, 0x25, 0x02, 0xFC, 0x6B, 0x25, 0xED,
  47.     0xFF, 0x00, 0x1D, 0x02, 0xFC, 0x29, 0x25, 0x10, 0x00, 0x08, 0x3C, 0x26, 0x80,
  48.     0x08, 0x02, 0x21, 0x10, 0x00, 0x02, 0x21, 0x40, 0x00, 0x00, 0x21, 0x50, 0x40,
  49.     0x02, 0x21, 0x20, 0x00, 0x02, 0x00, 0x02, 0x4B, 0x25, 0x00, 0x00, 0x42, 0x91,
  50.     0x00, 0x00, 0x82, 0xAC, 0x00, 0x08, 0x82, 0xAC, 0x00, 0x10, 0x82, 0xAC, 0x01,
  51.     0x00, 0x4A, 0x25, 0x2B, 0x18, 0x4B, 0x01, 0xF9, 0xFF, 0x60, 0x14, 0x04, 0x00,
  52.     0x84, 0x24, 0x01, 0x00, 0x08, 0x25, 0x5A, 0x00, 0x02, 0x2D, 0xF4, 0xFF, 0x40,
  53.     0x14, 0x00, 0x10, 0x84, 0x24, 0xD0, 0x09, 0xA4, 0x27, 0x01, 0x00, 0x05, 0x24,
  54.     0x4C, 0x50, 0x08, 0x00, 0xD4, 0x09, 0xA8, 0x8F, 0x01, 0x00, 0x00, 0x55, 0x4C,
  55.     0x38, 0x08, 0x00, 0x4C, 0x4E, 0x08, 0x00, 0x21, 0x20, 0x00, 0x02, 0x00, 0x02,
  56.     0x05, 0x24, 0x03, 0x00, 0x06, 0x24, 0x01, 0x00, 0x07, 0x24, 0x4C, 0x4C, 0x08,
  57.     0x00, 0x21, 0x40, 0x20, 0x02, 0x21, 0x88, 0x40, 0x02, 0x24, 0x00, 0x24, 0x0A,
  58.     0x21, 0x90, 0x00, 0x01
  59.   )
  60.  
  61.   PV_CODE(thread->context,
  62.     PV_INSTRUCTION(0x08900008, I_lui__RI(_s0, 0x890)) //"
  63.     PV_INSTRUCTION(0x0890000C, I_addiu__RRI(_a0, _s0, 4)) //"
  64.     PV_INSTRUCTION(0x08900010, I_addiu__RRI(_a1, _s0, 80)) //"
  65.     PV_INSTRUCTION(0x08900014, I_li__RI(_a2, 20)) //"
  66.     PV_INSTRUCTION(0x08900018, I_lui__RI(_a3, 0x2)) //"
  67.     PV_INSTRUCTION(0x0890001C, I_lui__RI(_t0, 0x8000)) //"
  68.     PV_INSTRUCTION(0x08900020, I_move__RR(_t1, _zero)) //"
  69.     PV_INSTRUCTION(0x08900034, I_syscall__I(0x206D)) //"
  70.     PV_INSTRUCTION(0x08900038, I_move__RR(_a0, _v0)) //"
  71.     PV_INSTRUCTION(0x0890003C, I_move__RR(_a1, _zero)) //"
  72.     PV_INSTRUCTION(0x08900040, I_move__RR(_a2, _zero)) //"
  73.     PV_INSTRUCTION(0x08900044, I_syscall__I(0x206F)) //"
  74.     PV_INSTRUCTION(0x08900048, I_move__RR(_a0, _zero)) //"
  75.     PV_INSTRUCTION(0x0890004C, I_syscall__I(0x2071)) //"
  76.     PV_INSTRUCTION(0x08900050, I_addiu__RRI(_sp, _sp, 0xFFFFF620)) //"
  77.     PV_INSTRUCTION(0x08900054, I_move__RR(_a0, _sp)) //"
  78.     PV_INSTRUCTION(0x08900058, I_syscall__I(0x20BD)) //"
  79.     PV_INSTRUCTION(0x0890005C, I_lui__RI(_s1, 0x8A0)) //"
  80.     PV_INSTRUCTION(0x08900060, I_lui__RI(_s2, 0x8B0)) //"
  81.     PV_INSTRUCTION(0x08900064, I_lui__RI(_s0, 0x4400)) //"
  82.     PV_INSTRUCTION(0x08900068, I_move__RR(_a0, _zero)) //"
  83.     PV_INSTRUCTION(0x0890006C, I_li__RI(_a1, 480)) //"
  84.     PV_INSTRUCTION(0x08900070, I_li__RI(_a2, 272)) //"
  85.     PV_INSTRUCTION(0x08900074, I_syscall__I(0x212C)) //"
  86.     PV_INSTRUCTION(0x08900078, I_move__RR(_v0, _s1)) //"
  87.     PV_INSTRUCTION(0x0890007C, I_li__RI(_t0, 0xB600)) //"
  88.     PV_INSTRUCTION(0x08900080, I_sb__RRI(_zero, _v0, 0)) //"
  89.     PV_INSTRUCTION(0x08900084, I_addiu__RRI(_t0, _t0, 0xFFFFFFFF)) //"
  90.     PV_INSTRUCTION(0x08900088, I_bgez__RI(_t0, 0x8900080)) //"
  91.     PV_INSTRUCTION(0x0890008C, I_addiu__RRI(_v0, _v0, 1)) //"
  92.     PV_INSTRUCTION(0x08900090, I_ori__RRI(_s4, _s1, 0xB400)) //"
  93.     PV_INSTRUCTION(0x08900094, I_addiu__RRI(_s3, _s4, 511)) //"
  94.     PV_INSTRUCTION(0x08900098, I_move__RR(_a0, _sp)) //"
  95.     PV_INSTRUCTION(0x0890009C, I_syscall__I(0x20BE)) //"
  96.     PV_INSTRUCTION(0x089000A0, I_addiu__RRI(_s4, _s4, 1)) //"
  97.     PV_INSTRUCTION(0x089000A4, I_sltu__RRR(_v1, _s4, _s3)) //"
  98.     PV_INSTRUCTION(0x089000A8, I_bnez__RI(_v1, 0x8900098)) //"
  99.     PV_INSTRUCTION(0x089000AC, I_sb__RRI(_v0, _s4, 0)) //"
  100.     PV_INSTRUCTION(0x089000B0, I_li__RI(_s5, 510)) //"
  101.     PV_INSTRUCTION(0x089000B4, I_move__RR(_a0, _sp)) //"
  102.     PV_INSTRUCTION(0x089000B8, I_syscall__I(0x20BE)) //"
  103.     PV_INSTRUCTION(0x089000BC, I_li__RI(_v1, 89)) //"
  104.     PV_INSTRUCTION(0x089000C0, I_bnez__RI(_v1, 0x89000CC)) //"
  105.     PV_INSTRUCTION(0x089000C4, I_divu__RRR(_zero, _v0, _v1)) //"
  106.     PV_INSTRUCTION(0x089000C8, I_break__I(0x1C00)) //"
  107.     PV_INSTRUCTION(0x089000CC, I_mflo__R(_v0)) //"
  108.     PV_INSTRUCTION(0x089000D0, I_mfhi__R(_v1)) //"
  109.     PV_INSTRUCTION(0x089000D4, I_addiu__RRI(_v1, _v1, 1)) //"
  110.     PV_INSTRUCTION(0x089000D8, I_sll__RRI(_v1, _v1, 0x9)) //"
  111.     PV_INSTRUCTION(0x089000DC, I_add__RRR(_s4, _v1, _s1)) //"
  112.     PV_INSTRUCTION(0x089000E0, I_and__RRR(_v0, _v0, _s5)) //"
  113.     PV_INSTRUCTION(0x089000E4, I_addiu__RRI(_v0, _v0, 1)) //"
  114.     PV_INSTRUCTION(0x089000E8, I_add__RRR(_s4, _s4, _v0)) //"
  115.     PV_INSTRUCTION(0x089000EC, I_sb__RRI(_s5, _s4, 0)) //"
  116.     PV_INSTRUCTION(0x089000F0, I_li__RI(_t0, 89)) //"
  117.     PV_INSTRUCTION(0x089000F4, I_ori__RRI(_t1, _s1, 0xB200)) //"
  118.     PV_INSTRUCTION(0x089000F8, I_ori__RRI(_t3, _s2, 0xB200)) //"
  119.     PV_INSTRUCTION(0x089000FC, I_addiu__RRI(_t2, _t1, 510)) //"
  120.     PV_INSTRUCTION(0x08900100, I_lbu__RRI(_a0, _t1, 512)) //"
  121.     PV_INSTRUCTION(0x08900104, I_lbu__RRI(_a1, _t1, 513)) //"
  122.     PV_INSTRUCTION(0x08900108, I_addu__RRR(_a0, _a0, _a1)) //"
  123.     PV_INSTRUCTION(0x0890010C, I_lbu__RRI(_a1, _t1, 514)) //"
  124.     PV_INSTRUCTION(0x08900110, I_addu__RRR(_a0, _a0, _a1)) //"
  125.     PV_INSTRUCTION(0x08900114, I_lbu__RRI(_a1, _t1, 1)) //"
  126.     PV_INSTRUCTION(0x08900118, I_addu__RRR(_a0, _a0, _a1)) //"
  127.     PV_INSTRUCTION(0x0890011C, I_srl__RRI(_a0, _a0, 0x2)) //"
  128.     PV_INSTRUCTION(0x08900120, I_bgtzl__RI(_a0, 0x8900128)) //"
  129.     PV_INSTRUCTION(0x08900124, I_addiu__RRI(_a0, _a0, 0xFFFFFFFF)) //"
  130.     PV_INSTRUCTION(0x08900128, I_sb__RRI(_a0, _t3, 1)) //"
  131.     PV_INSTRUCTION(0x0890012C, I_addiu__RRI(_t1, _t1, 1)) //"
  132.     PV_INSTRUCTION(0x08900130, I_sltu__RRR(_v0, _t1, _t2)) //"
  133.     PV_INSTRUCTION(0x08900134, I_bnez__RI(_v0, 0x8900100)) //"
  134.     PV_INSTRUCTION(0x08900138, I_addiu__RRI(_t3, _t3, 1)) //"
  135.     PV_INSTRUCTION(0x0890013C, I_addiu__RRI(_t0, _t0, 0xFFFFFFFF)) //"
  136.     PV_INSTRUCTION(0x08900140, I_addiu__RRI(_t3, _t3, 0xFFFFFC02)) //"
  137.     PV_INSTRUCTION(0x08900144, I_bgtz__RI(_t0, 0x89000FC)) //"
  138.     PV_INSTRUCTION(0x08900148, I_addiu__RRI(_t1, _t1, 0xFFFFFC02)) //"
  139.     PV_INSTRUCTION(0x0890014C, I_lui__RI(_t0, 0x10)) //"
  140.     PV_INSTRUCTION(0x08900150, I_xor__RRR(_s0, _s0, _t0)) //"
  141.     PV_INSTRUCTION(0x08900154, I_move__RR(_v0, _s0)) //"
  142.     PV_INSTRUCTION(0x08900158, I_move__RR(_t0, _zero)) //"
  143.     PV_INSTRUCTION(0x0890015C, I_move__RR(_t2, _s2)) //"
  144.     PV_INSTRUCTION(0x08900160, I_move__RR(_a0, _s0)) //"
  145.     PV_INSTRUCTION(0x08900164, I_addiu__RRI(_t3, _t2, 512)) //"
  146.     PV_INSTRUCTION(0x08900168, I_lbu__RRI(_v0, _t2, 0)) //"
  147.     PV_INSTRUCTION(0x0890016C, I_sw__RRI(_v0, _a0, 0)) //"
  148.     PV_INSTRUCTION(0x08900170, I_sw__RRI(_v0, _a0, 2048)) //"
  149.     PV_INSTRUCTION(0x08900174, I_sw__RRI(_v0, _a0, 4096)) //"
  150.     PV_INSTRUCTION(0x08900178, I_addiu__RRI(_t2, _t2, 1)) //"
  151.     PV_INSTRUCTION(0x0890017C, I_sltu__RRR(_v1, _t2, _t3)) //"
  152.     PV_INSTRUCTION(0x08900180, I_bnez__RI(_v1, 0x8900168)) //"
  153.     PV_INSTRUCTION(0x08900184, I_addiu__RRI(_a0, _a0, 4)) //"
  154.     PV_INSTRUCTION(0x08900188, I_addiu__RRI(_t0, _t0, 1)) //"
  155.     PV_INSTRUCTION(0x0890018C, I_sltiu__RRI(_v0, _t0, 90)) //"
  156.     PV_INSTRUCTION(0x08900190, I_bnez__RI(_v0, 0x8900164)) //"
  157.     PV_INSTRUCTION(0x08900194, I_addiu__RRI(_a0, _a0, 4096)) //"
  158.     PV_INSTRUCTION(0x08900198, I_addiu__RRI(_a0, _sp, 2512)) //"
  159.     PV_INSTRUCTION(0x0890019C, I_li__RI(_a1, 1)) //"
  160.     PV_INSTRUCTION(0x089001A0, I_syscall__I(0x2141)) //"
  161.     PV_INSTRUCTION(0x089001A4, I_lw__RRI(_t0, _sp, 2516)) //"
  162.     PV_INSTRUCTION(0x089001A8, I_bnezl__RI(_t0, 0x89001B0)) //"
  163.     PV_INSTRUCTION(0x089001AC, I_syscall__I(0x20E1)) //"
  164.     PV_INSTRUCTION(0x089001B0, I_syscall__I(0x2139)) //"
  165.     PV_INSTRUCTION(0x089001B4, I_move__RR(_a0, _s0)) //"
  166.     PV_INSTRUCTION(0x089001B8, I_li__RI(_a1, 512)) //"
  167.     PV_INSTRUCTION(0x089001BC, I_li__RI(_a2, 3)) //"
  168.     PV_INSTRUCTION(0x089001C0, I_li__RI(_a3, 1)) //"
  169.     PV_INSTRUCTION(0x089001C4, I_syscall__I(0x2131)) //"
  170.     PV_INSTRUCTION(0x089001C8, I_move__RR(_t0, _s1)) //"
  171.     PV_INSTRUCTION(0x089001CC, I_move__RR(_s1, _s2)) //"
  172.     PV_INSTRUCTION(0x089001D0, I_j__I(0x8900090)) //"
  173.     PV_INSTRUCTION(0x089001D4, I_move__RR(_s2, _t0)) //"
  174.   )
  175. }
  176.  
  177. int main(int argc, char* argv[]) {
  178.  
  179.   //signal(SIGSEGV, pv_signalHandler);
  180.   //signal(SIGINT, pv_signalHandler);
  181.  
  182.   pv_context_t* entryContext = pv_createAllegrexContext();
  183.   pv_thread_t* entryThread = pv_createThread(entryCode,entryContext,NULL);
  184.   pv_joinThread(entryThread);
  185.   return 0;
  186. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement