GAS LISTING div_and_mul_vs_mult.s page 1 1 .option pic0 2 3 .data 4 .align 2 5 operands: 6 0000 00000000 .space 12 6 00000000 6 00000000 7 8 .align 2 9 savedLoHi: 10 000c 00000000 .space 8 10 00000000 11 12 0014 00000000 .rdata 12 00000000 12 00000000 13 14 .align 2 15 prompt: 16 0000 656E7465 .asciiz "enter an integer: " 16 7220616E 16 20696E74 16 65676572 16 3A2000 17 18 0013 00 .align 2 19 divide: 20 0014 2D2D2D2D .asciiz "-------------------------------------------------\n" 20 2D2D2D2D 20 2D2D2D2D 20 2D2D2D2D 20 2D2D2D2D 21 22 0047 00 .align 2 23 eol: 24 0048 0A00 .asciiz "\n" 25 26 004a 0000 .align 2 27 intFmt: 28 004c 256400 .asciiz "%d" 29 30 004f 00 .align 2 31 regsFmt: 32 0050 0A73303A .asciiz "\ns0: %d\ns1: %d\ns2: %d\n" 32 2025640A 32 73313A20 32 25640A73 32 323A2025 33 34 0067 00 .align 2 35 lohiFmt: 36 0068 4C6F3A20 .asciiz "Lo: %d\nHi: %d\n\n" 36 25640A48 36 693A2025 36 640A0A00 37 GAS LISTING div_and_mul_vs_mult.s page 2 38 .align 2 39 outputFmt: 40 0078 74686520 .asciiz "the gcd is: %d" 40 67636420 40 69733A20 40 256400 41 42 .text 43 .globl main 44 45 46 47 dumpRegs: 48 0000 23BDFFF4 addi $sp,-12 49 0004 AFBF0000 sw $ra,($sp) 50 51 0008 3C040000 la $a0,regsFmt 51 24840050 52 0010 02002825 move $a1,$s0 53 0014 02203025 move $a2,$s1 54 move $a3,$s2 55 0018 0C000000 jal printf 55 02403825 56 57 0020 00004012 mflo $t0 58 0024 AFA80004 sw $t0,4($sp) 59 60 0028 00004010 mfhi $t0 61 002c AFA80008 sw $t0,8($sp) 62 63 0030 3C040000 la $a0,lohiFmt 63 24840068 64 0038 3C080000 la $t0,savedLoHi 64 2508000C 65 0040 8D050000 lw $a1,0($t0) 66 0044 8D060004 lw $a2,4($t0) 67 0048 0C000000 jal printf 67 00000000 68 69 0050 8FBF0000 lw $ra,($sp) 70 0054 23BD000C addi $sp,12 71 72 0058 03E00008 jr $ra 72 00000000 73 74 printDivide: 75 0060 23BDFFFC addi $sp,-4 76 0064 AFBF0000 sw $ra,($sp) 77 78 0068 3C040000 la $a0,divide 79 006c 0C000000 jal printf 79 24840014 80 81 0074 8FBF0000 lw $ra,($sp) 82 0078 23BD0004 addi $sp,4 83 007c 03E00008 jr $ra 83 00000000 GAS LISTING div_and_mul_vs_mult.s page 3 84 85 resetRegs: 86 0084 3C080000 la $t0,operands 86 25080000 87 008c 8D100000 lw $s0,0($t0) 88 0090 8D110004 lw $s1,4($t0) 89 0094 8D120008 lw $s2,8($t0) 90 91 # clear saved lo/hi registers 92 0098 3C080000 la $t0,savedLoHi 92 2508000C 93 00a0 AD000000 sw $0,0($t0) 94 sw $0,4($t0) 95 96 00a4 03E00008 jr $ra 96 AD000004 97 98 main: 99 00ac 3C040000 la $a0, prompt 100 00b0 0C000000 jal printf 100 24840000 101 102 00b8 3C040000 la $a0,intFmt 102 2484004C 103 00c0 3C050000 la $a1,operands+0 104 00c4 0C000000 jal scanf 104 24A50000 105 106 00cc 3C040000 la $a0, prompt 107 00d0 0C000000 jal printf 107 24840000 108 109 00d8 3C040000 la $a0,intFmt 109 2484004C 110 00e0 3C050000 la $a1,operands+4 111 00e4 0C000000 jal scanf 111 24A50004 112 113 00ec 3C040000 la $a0, prompt 114 00f0 0C000000 jal printf 114 24840000 115 116 00f8 3C040000 la $a0,intFmt 116 2484004C 117 0100 3C050000 la $a1,operands+8 118 0104 0C000000 jal scanf 118 24A50008 119 120 010c 0C000021 jal resetRegs 120 00000000 121 0114 0C000000 jal dumpRegs 121 00000000 122 123 .rdata 124 fmt0: 125 0087 6D756C20 .asciiz "mul $s0,$s1\n" 125 2473302C GAS LISTING div_and_mul_vs_mult.s page 4 125 2473310A 125 00 126 .text 127 128 011c 3C040000 la $a0,fmt0 129 0120 0C000000 jal printf 129 24840087 130 131 0128 02110019 mul $s0,$s1 131 00008012 132 0130 3C080000 la $t0,savedLoHi 132 2508000C 133 0138 00004812 mflo $t1 134 013c AD090000 sw $t1,0($t0) 135 0140 00005010 mfhi $t2 136 sw $t2,4($t0) 137 138 0144 0C000000 jal dumpRegs 138 AD0A0004 139 140 014c 0C000018 jal printDivide 140 00000000 141 142 0154 0C000021 jal resetRegs 142 00000000 143 015c 0C000000 jal dumpRegs 143 00000000 144 145 .rdata 146 fmt1: 147 0094 6D756C20 .asciiz "mul $s0,$s1,$s2\n" 147 2473302C 147 2473312C 147 2473320A 147 00 148 .text 149 150 0164 3C040000 la $a0,fmt1 151 0168 0C000000 jal printf 151 24840094 152 153 0170 02320019 mul $s0,$s1,$s2 153 00008012 154 0178 3C080000 la $t0,savedLoHi 154 2508000C 155 0180 00004812 mflo $t1 156 0184 AD090000 sw $t1,0($t0) 157 0188 00005010 mfhi $t2 158 sw $t2,4($t0) 159 160 018c 0C000000 jal dumpRegs 160 AD0A0004 161 162 0194 0C000018 jal printDivide 162 00000000 163 164 019c 0C000021 jal resetRegs GAS LISTING div_and_mul_vs_mult.s page 5 164 00000000 165 01a4 0C000000 jal dumpRegs 165 00000000 166 167 .rdata 168 fmt2: 169 00a5 6D756C74 .asciiz "mult $s0,$s1\n" 169 20247330 169 2C247331 169 0A00 170 .text 171 172 01ac 3C040000 la $a0,fmt2 173 01b0 0C000000 jal printf 173 248400A5 174 175 01b8 02110018 mult $s0,$s1 176 01bc 3C080000 la $t0,savedLoHi 176 2508000C 177 01c4 00004812 mflo $t1 178 01c8 AD090000 sw $t1,0($t0) 179 01cc 00005010 mfhi $t2 180 sw $t2,4($t0) 181 182 01d0 0C000000 jal dumpRegs 182 AD0A0004 183 184 01d8 0C000018 jal printDivide 184 00000000 185 186 01e0 0C000021 jal resetRegs 186 00000000 187 01e8 0C000000 jal dumpRegs 187 00000000 188 189 .rdata 190 fmt3: 191 00b3 64697620 .asciiz "div $s0,$s1\n" 191 2473302C 191 2473310A 191 00 192 .text 193 194 01f0 3C040000 la $a0,fmt3 195 01f4 0C000000 jal printf 195 248400B3 196 197 01fc 16200002 div $s0,$s1 197 0211001A 197 0007000D 197 2401FFFF 197 16210004 198 0224 3C080000 la $t0,savedLoHi 198 2508000C 199 022c 00004812 mflo $t1 200 0230 AD090000 sw $t1,0($t0) 201 0234 00005010 mfhi $t2 GAS LISTING div_and_mul_vs_mult.s page 6 202 sw $t2,4($t0) 203 204 0238 0C000000 jal dumpRegs 204 AD0A0004 205 206 0240 0C000018 jal printDivide 206 00000000 207 208 0248 0C000021 jal resetRegs 208 00000000 209 0250 0C000000 jal dumpRegs 209 00000000 210 211 .rdata 212 fmt4: 213 00c0 64697620 .asciiz "div $s0,$s1,$s2\n" 213 2473302C 213 2473312C 213 2473320A 213 00 214 00d1 00000000 .text 214 00000000 214 00000000 214 000000 215 216 0258 3C040000 la $a0,fmt4 217 025c 0C000000 jal printf 217 248400C0 218 219 0264 16400002 div $s0,$s1,$s2 219 0232001A 219 0007000D 219 2401FFFF 219 16410004 220 028c 3C080000 la $t0,savedLoHi 220 2508000C 221 0294 00004812 mflo $t1 222 0298 AD090000 sw $t1,0($t0) 223 029c 00005010 mfhi $t2 224 sw $t2,4($t0) 225 226 02a0 0C000000 jal dumpRegs 226 AD0A0004 227 228 move $a0,$0 229 02a8 0C000000 jal exit 229 00002025 230 231 done: 232 move $v0, $a1 233 02b0 03E00008 jr $ra 233 00A01025 233 00000000 233 00000000 GAS LISTING div_and_mul_vs_mult.s page 7 DEFINED SYMBOLS div_and_mul_vs_mult.s:5 .data:0000000000000000 operands div_and_mul_vs_mult.s:9 .data:000000000000000c savedLoHi div_and_mul_vs_mult.s:15 .rodata:0000000000000000 prompt div_and_mul_vs_mult.s:19 .rodata:0000000000000014 divide div_and_mul_vs_mult.s:23 .rodata:0000000000000048 eol div_and_mul_vs_mult.s:27 .rodata:000000000000004c intFmt div_and_mul_vs_mult.s:31 .rodata:0000000000000050 regsFmt div_and_mul_vs_mult.s:35 .rodata:0000000000000068 lohiFmt div_and_mul_vs_mult.s:39 .rodata:0000000000000078 outputFmt div_and_mul_vs_mult.s:98 .text:00000000000000ac main div_and_mul_vs_mult.s:47 .text:0000000000000000 dumpRegs div_and_mul_vs_mult.s:74 .text:0000000000000060 printDivide div_and_mul_vs_mult.s:85 .text:0000000000000084 resetRegs div_and_mul_vs_mult.s:124 .rodata:0000000000000087 fmt0 div_and_mul_vs_mult.s:146 .rodata:0000000000000094 fmt1 div_and_mul_vs_mult.s:168 .rodata:00000000000000a5 fmt2 div_and_mul_vs_mult.s:190 .rodata:00000000000000b3 fmt3 div_and_mul_vs_mult.s:212 .rodata:00000000000000c0 fmt4 div_and_mul_vs_mult.s:231 .text:00000000000002b0 done UNDEFINED SYMBOLS printf scanf exit