Newer
Older
zweic / theirasm / Factorial.asm
@glproj03 glproj03 on 3 Feb 2006 5 KB added theirasm
/* 0000 */ beq 0 168
/* 0004 */ add 0 0 0        /* Factorial::factorial1 */
/* 0008 */ add 0 0 0        /* Factorial::factorial2_aux */
/* 0012 */ add 0 0 0        /* Factorial::factorial2 */
/* 0016 */ add 0 0 0        /* Factorial::factorial3 */
/* 0020 */ add 0 0 0        /* Example::main */
/* 0024 */ psh 31 30 4      /* def Factorial::factorial1 */
/* 0028 */ ldw 1 30 4       /* x */
/* 0032 */ oriu 2 0 0
/* 0036 */ cmp 1 1 2
/* 0040 */ bne 1 3
/* 0044 */ oriu 1 0 1
/* 0048 */ beq 0 19
/* 0052 */ ldw 1 30 4       /* x */
/* 0056 */ psh 1 30 4
/* 0060 */ ldw 2 30 12      /* this */
/* 0064 */ bne 2 3
/* 0068 */ oriu 2 0 1
/* 0072 */ syscall 2 0 19   /* SYS_EXIT */
/* 0076 */ psh 2 30 4
/* 0080 */ ldw 2 2 0
/* 0084 */ ldw 1 2 0
/* 0088 */ ldw 2 30 12      /* x */
/* 0092 */ oriu 3 0 1
/* 0096 */ sub 2 2 3
/* 0100 */ psh 2 30 4
/* 0104 */ oriu 31 0 112
/* 0108 */ ret 1
/* 0112 */ addi 2 1 0
/* 0116 */ pop 1 30 4
/* 0120 */ mul 1 1 2
/* 0124 */ pop 31 30 12
/* 0128 */ ret 31
/* 0132 */ psh 31 30 4      /* def Factorial::factorial2_aux */
/* 0136 */ ldw 1 30 8       /* x */
/* 0140 */ oriu 2 0 0
/* 0144 */ cmp 1 1 2
/* 0148 */ bne 1 3
/* 0152 */ ldw 1 30 4       /* acc */
/* 0156 */ beq 0 18
/* 0160 */ ldw 2 30 12      /* this */
/* 0164 */ bne 2 3
/* 0168 */ oriu 2 0 1
/* 0172 */ syscall 2 0 19   /* SYS_EXIT */
/* 0176 */ psh 2 30 4
/* 0180 */ ldw 2 2 0
/* 0184 */ ldw 1 2 4
/* 0188 */ ldw 2 30 12      /* x */
/* 0192 */ oriu 3 0 1
/* 0196 */ sub 2 2 3
/* 0200 */ psh 2 30 4
/* 0204 */ ldw 2 30 12      /* acc */
/* 0208 */ ldw 3 30 16      /* x */
/* 0212 */ mul 2 2 3
/* 0216 */ psh 2 30 4
/* 0220 */ oriu 31 0 228
/* 0224 */ ret 1
/* 0228 */ pop 31 30 16
/* 0232 */ ret 31
/* 0236 */ psh 31 30 4      /* def Factorial::factorial2 */
/* 0240 */ ldw 2 30 8       /* this */
/* 0244 */ bne 2 3
/* 0248 */ oriu 2 0 1
/* 0252 */ syscall 2 0 19   /* SYS_EXIT */
/* 0256 */ psh 2 30 4
/* 0260 */ ldw 2 2 0
/* 0264 */ ldw 1 2 4
/* 0268 */ ldw 2 30 8       /* x */
/* 0272 */ psh 2 30 4
/* 0276 */ oriu 2 0 1
/* 0280 */ psh 2 30 4
/* 0284 */ oriu 31 0 292
/* 0288 */ ret 1
/* 0292 */ pop 31 30 12
/* 0296 */ ret 31
/* 0300 */ psh 31 30 4      /* def Factorial::factorial3 */
/* 0304 */ oriu 1 0 1
/* 0308 */ psh 1 30 4       /* var p */
/* 0312 */ ldw 1 30 8       /* x */
/* 0316 */ oriu 2 0 0
/* 0320 */ cmp 1 1 2
/* 0324 */ ble 1 10
/* 0328 */ ldw 1 30 0       /* p */
/* 0332 */ ldw 2 30 8       /* x */
/* 0336 */ mul 1 1 2
/* 0340 */ stw 1 30 0
/* 0344 */ ldw 1 30 8       /* x */
/* 0348 */ oriu 2 0 1
/* 0352 */ sub 1 1 2
/* 0356 */ stw 1 30 8
/* 0360 */ beq 0 -12
/* 0364 */ ldw 1 30 0       /* p */
/* 0368 */ addi 30 30 4
/* 0372 */ pop 31 30 12
/* 0376 */ ret 31
/* 0380 */ psh 31 30 4      /* def Example::main */
/* 0384 */ oriu 1 0 4
/* 0388 */ syscall 1 1 12   /* new Factorial */
/* 0392 */ oriu 2 0 4
/* 0396 */ stw 2 1 0
/* 0400 */ psh 1 30 4       /* var fac */
/* 0404 */ oriu 1 0 5
/* 0408 */ psh 1 30 4       /* var x */
/* 0412 */ ldw 2 30 4       /* fac */
/* 0416 */ bne 2 3
/* 0420 */ oriu 2 0 1
/* 0424 */ syscall 2 0 19   /* SYS_EXIT */
/* 0428 */ psh 2 30 4
/* 0432 */ ldw 2 2 0
/* 0436 */ ldw 1 2 0
/* 0440 */ ldw 2 30 4       /* x */
/* 0444 */ psh 2 30 4
/* 0448 */ oriu 31 0 456
/* 0452 */ ret 1
/* 0456 */ syscall 1 0 7    /* printInt */
/* 0460 */ syscall 0 0 15   /* flush */
/* 0464 */ oriu 1 0 10
/* 0468 */ syscall 1 0 6    /* printChar */
/* 0472 */ syscall 0 0 15   /* flush */
/* 0476 */ ldw 2 30 4       /* fac */
/* 0480 */ bne 2 3
/* 0484 */ oriu 2 0 1
/* 0488 */ syscall 2 0 19   /* SYS_EXIT */
/* 0492 */ psh 2 30 4
/* 0496 */ ldw 2 2 0
/* 0500 */ ldw 1 2 8
/* 0504 */ ldw 2 30 4       /* x */
/* 0508 */ psh 2 30 4
/* 0512 */ oriu 31 0 520
/* 0516 */ ret 1
/* 0520 */ syscall 1 0 7    /* printInt */
/* 0524 */ syscall 0 0 15   /* flush */
/* 0528 */ oriu 1 0 10
/* 0532 */ syscall 1 0 6    /* printChar */
/* 0536 */ syscall 0 0 15   /* flush */
/* 0540 */ ldw 2 30 4       /* fac */
/* 0544 */ bne 2 3
/* 0548 */ oriu 2 0 1
/* 0552 */ syscall 2 0 19   /* SYS_EXIT */
/* 0556 */ psh 2 30 4
/* 0560 */ ldw 2 2 0
/* 0564 */ ldw 1 2 12
/* 0568 */ ldw 2 30 4       /* x */
/* 0572 */ psh 2 30 4
/* 0576 */ oriu 31 0 584
/* 0580 */ ret 1
/* 0584 */ syscall 1 0 7    /* printInt */
/* 0588 */ syscall 0 0 15   /* flush */
/* 0592 */ oriu 1 0 10
/* 0596 */ syscall 1 0 6    /* printChar */
/* 0600 */ syscall 0 0 15   /* flush */
/* 0604 */ oriu 1 0 0       /* null */
/* 0608 */ addi 30 30 8
/* 0612 */ pop 31 30 8
/* 0616 */ ret 31
/* 0620 */ oriu 2 0 4
/* 0624 */ syscall 2 2 12   /* new Example */
/* 0628 */ oriu 3 0 20
/* 0632 */ stw 3 2 0
/* 0636 */ bne 2 3
/* 0640 */ oriu 2 0 1
/* 0644 */ syscall 2 0 19   /* SYS_EXIT */
/* 0648 */ psh 2 30 4
/* 0652 */ ldw 2 2 0
/* 0656 */ ldw 1 2 0
/* 0660 */ oriu 31 0 668
/* 0664 */ ret 1
/* 0668 */ ret 0
/* 0672 */ syscall 30 0 13  /* SYS_GET_TOTAL_MEM_SIZE */
/* 0676 */ oriu 1 0 672
/* 0680 */ sub 2 30 1
/* 0684 */ diviu 2 2 12
/* 0688 */ lshi 2 2 1
/* 0692 */ oriu 3 0 -4096
/* 0696 */ lshi 3 3 16
/* 0700 */ add 2 2 3
/* 0704 */ syscall 1 2 11   /* SYS_GC_INIT */
/* 0708 */ oriu 1 0 4
/* 0712 */ oriu 31 0 24
/* 0716 */ stw 31 1 0       /* Factorial::factorial1 */
/* 0720 */ oriu 31 0 132
/* 0724 */ stw 31 1 4       /* Factorial::factorial2_aux */
/* 0728 */ oriu 31 0 236
/* 0732 */ stw 31 1 8       /* Factorial::factorial2 */
/* 0736 */ oriu 31 0 300
/* 0740 */ stw 31 1 12      /* Factorial::factorial3 */
/* 0744 */ oriu 1 0 20
/* 0748 */ oriu 31 0 380
/* 0752 */ stw 31 1 0       /* Example::main */
/* 0756 */ beq 0 -34