sm64

A Super Mario 64 decompilation
Log | Files | Refs | README | LICENSE

test3.c (1973B)


      1 
      2 GLOBAL_ASM(
      3 .rdata
      4 .word 321321
      5 .text
      6 glabel test
      7 /* 000090 00400090 27BDFFF8 */  addiu $sp, $sp, -24
      8 /* 000094 00400094 18A00009 */  blez  $a1, .L004000BC
      9 /* 000098 00400098 AFA00004 */   sw    $zero, 4($sp)
     10 .L0040009C:
     11 /* 00009C 0040009C 8FAE0004 */  lw    $t6, 4($sp)
     12 /* 0000A0 004000A0 008E7821 */  addu  $t7, $a0, $t6
     13 /* 0000A4 004000A4 A1E00000 */  sb    $zero, ($t7)
     14 /* 0000A8 004000A8 8FB80004 */  lw    $t8, 4($sp)
     15 /* 0000AC 004000AC 27190001 */  addiu $t9, $t8, 1
     16 /* 0000B0 004000B0 0325082A */  slt   $at, $t9, $a1
     17 /* 0000B4 004000B4 1420FFF9 */  bnez  $at, .L0040009C
     18 /* 0000B8 004000B8 AFB90004 */   sw    $t9, 4($sp)
     19 .L004000BC:
     20 /* 0000BC 004000BC 10000001 */  b     .L004000C4
     21 /* 0000C0 004000C0 00000000 */   nop
     22 .L004000C4:
     23 /* 0000C4 004000C4 03E00008 */  jr    $ra
     24 /* 0000C8 004000C8 27BD0008 */   addiu $sp, $sp, 24
     25 )
     26 
     27 // static -> no symbols
     28 // bss
     29 char globalBuf[4];
     30 const char constBuf[4];
     31 
     32 // data
     33 char globalBufInit[4] = {1};
     34 
     35 // rodata
     36 const char constBufInit[4] = {1};
     37 const char constBufInit2[1] = {2};
     38 const char constBufInit3[1] = {3};
     39 
     40 unsigned g(void);
     41 unsigned f(void) {
     42     // aligns to 4 or 8 byte boundary (char -> 4, double -> 8)
     43     double x = 5.1;
     44     float y = 5.2f;
     45     float z = 5.3f;
     46     "Hello  ";
     47     "World";
     48     return g();
     49 }
     50 
     51 GLOBAL_ASM(
     52 .rdata
     53 .word 123123
     54 .text
     55 glabel g
     56 /* 0000C0 004000C0 27BDFFE8 */  addiu $sp, $sp, -0x18
     57 /* 0000C4 004000C4 AFBF0014 */  sw    $ra, 0x14($sp)
     58 /* 0000C8 004000C8 240E0004 */  addiu $t6, $zero, 4
     59 /* 0000CC 004000CC 3C010041 */  lui   $at, %hi(D_410100)
     60 /* 0000D0 004000D0 AC2E0100 */  sw    $t6, %lo(D_410100)($at)
     61 /* 0000D4 004000D4 0C10002C */  jal   func_004000B0
     62 /* 0000D8 004000D8 00000000 */   nop
     63 /* 0000DC 004000DC 10000001 */  b     .L004000E4
     64 /* 0000E0 004000E0 00000000 */   nop
     65 .L004000E4:
     66 /* 0000E4 004000E4 8FBF0014 */  lw    $ra, 0x14($sp)
     67 /* 0000E8 004000E8 27BD0018 */  addiu $sp, $sp, 0x18
     68 /* 0000EC 004000EC 03E00008 */  jr    $ra
     69 /* 0000F0 004000F0 00000000 */   nop
     70 )