acron.s 5.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412
  1. .file 1 "acron.c"
  2. # GNU C 2.7.2.3 [AL 1.1, MM 40, tma 0.1] SimpleScalar running sstrix compiled by GNU C
  3. # Cc1 defaults:
  4. # -mgas -mgpOPT
  5. # Cc1 arguments (-G value = 8, Cpu = default, ISA = 1):
  6. # -quiet -dumpbase -O0 -o
  7. gcc2_compiled.:
  8. __gnu_compiled_c:
  9. .globl w
  10. .data
  11. .align 2
  12. w:
  13. .word $LC0
  14. .word $LC1
  15. .word $LC2
  16. .word $LC3
  17. .word $LC4
  18. .word $LC5
  19. .sdata
  20. .align 2
  21. $LC5:
  22. .ascii "Eephole\000"
  23. .rdata
  24. .align 2
  25. $LC4:
  26. .ascii "Peephole\000"
  27. .align 2
  28. $LC3:
  29. .ascii "Optimization\000"
  30. .align 2
  31. $LC2:
  32. .ascii "Practicum\000"
  33. .align 2
  34. $LC1:
  35. .ascii "Ertalerbouw\000"
  36. .align 2
  37. $LC0:
  38. .ascii "Vertalerbouw\000"
  39. .text
  40. .align 2
  41. .globl is_vowel
  42. .sdata
  43. .align 2
  44. $LC6:
  45. .ascii "%s\000"
  46. .align 2
  47. $LC7:
  48. .ascii " %s\000"
  49. .align 2
  50. $LC8:
  51. .ascii "\n\000"
  52. .text
  53. .align 2
  54. .globl do_perm
  55. .align 2
  56. .globl main
  57. .comm acron,12
  58. .comm command,100
  59. .comm done,24
  60. .comm pindex,28
  61. .text
  62. .loc 1 10
  63. .ent is_vowel
  64. is_vowel:
  65. .frame $fp,16,$31 # vars= 8, regs= 1/0, args= 0, extra= 0
  66. .mask 0x40000000,-8
  67. .fmask 0x00000000,0
  68. subu $sp,$sp,16
  69. sw $fp,8($sp)
  70. move $fp,$sp
  71. move $3,$4
  72. sb $3,0($fp)
  73. move $2,$0
  74. lb $4,0($fp)
  75. li $5,0x00000041 # 65
  76. beq $4,$5,$L3
  77. lb $4,0($fp)
  78. li $5,0x00000045 # 69
  79. beq $4,$5,$L3
  80. lb $4,0($fp)
  81. li $5,0x00000049 # 73
  82. beq $4,$5,$L3
  83. lb $4,0($fp)
  84. li $5,0x0000004f # 79
  85. beq $4,$5,$L3
  86. lb $4,0($fp)
  87. li $5,0x00000055 # 85
  88. beq $4,$5,$L3
  89. lb $4,0($fp)
  90. li $5,0x00000059 # 89
  91. bne $4,$5,$L2
  92. $L3:
  93. li $2,0x00000001 # 1
  94. $L2:
  95. j $L1
  96. $L1:
  97. move $sp,$fp # sp not trusted here
  98. lw $fp,8($sp)
  99. addu $sp,$sp,16
  100. j $31
  101. .end is_vowel
  102. .loc 1 15
  103. .ent do_perm
  104. do_perm:
  105. .frame $fp,56,$31 # vars= 24, regs= 4/0, args= 16, extra= 0
  106. .mask 0xc0030000,-4
  107. .fmask 0x00000000,0
  108. subu $sp,$sp,56
  109. sw $31,52($sp)
  110. sw $fp,48($sp)
  111. sw $17,44($sp)
  112. sw $16,40($sp)
  113. move $fp,$sp
  114. sw $4,56($fp)
  115. sw $5,60($fp)
  116. sw $6,64($fp)
  117. sw $7,68($fp)
  118. sw $0,24($fp)
  119. lw $2,64($fp)
  120. li $3,0x00000001 # 1
  121. bne $2,$3,$L5
  122. lw $2,pindex
  123. move $3,$2
  124. sll $2,$3,2
  125. la $3,w
  126. addu $2,$2,$3
  127. lw $3,0($2)
  128. lb $4,0($3)
  129. jal is_vowel
  130. bne $2,$0,$L5
  131. lw $2,56($fp)
  132. move $3,$2
  133. sll $2,$3,2
  134. la $3,w
  135. addu $2,$2,$3
  136. lw $3,0($2)
  137. lb $4,0($3)
  138. jal is_vowel
  139. beq $2,$0,$L4
  140. $L5:
  141. lw $2,64($fp)
  142. slt $3,$2,2
  143. bne $3,$0,$L6
  144. lw $2,64($fp)
  145. move $3,$2
  146. sll $2,$3,2
  147. la $3,pindex-8
  148. addu $2,$2,$3
  149. lw $3,0($2)
  150. move $2,$3
  151. sll $3,$2,2
  152. la $4,w
  153. addu $2,$3,$4
  154. lw $3,0($2)
  155. lb $4,0($3)
  156. jal is_vowel
  157. move $16,$2
  158. lw $2,64($fp)
  159. move $3,$2
  160. sll $2,$3,2
  161. la $3,pindex-4
  162. addu $2,$2,$3
  163. lw $3,0($2)
  164. move $2,$3
  165. sll $3,$2,2
  166. la $4,w
  167. addu $2,$3,$4
  168. lw $3,0($2)
  169. lb $4,0($3)
  170. jal is_vowel
  171. move $17,$2
  172. lw $2,56($fp)
  173. move $3,$2
  174. sll $2,$3,2
  175. la $3,w
  176. addu $2,$2,$3
  177. lw $3,0($2)
  178. lb $4,0($3)
  179. jal is_vowel
  180. addu $3,$16,$17
  181. addu $2,$3,$2
  182. sw $2,24($fp)
  183. beq $2,$0,$L8
  184. lw $2,24($fp)
  185. li $3,0x00000003 # 3
  186. bne $2,$3,$L7
  187. $L8:
  188. j $L4
  189. $L7:
  190. $L6:
  191. lw $2,64($fp)
  192. addu $3,$2,1
  193. sw $3,64($fp)
  194. sll $3,$2,2
  195. la $4,pindex
  196. addu $2,$3,$4
  197. lw $3,56($fp)
  198. sw $3,0($2)
  199. lw $2,64($fp)
  200. slt $3,$2,6
  201. beq $3,$0,$L9
  202. lw $3,68($fp)
  203. subu $2,$3,1
  204. move $3,$2
  205. sw $3,68($fp)
  206. beq $3,$0,$L9
  207. sw $0,16($fp)
  208. $L10:
  209. lw $2,16($fp)
  210. slt $3,$2,6
  211. beq $3,$0,$L11
  212. $L13:
  213. lw $2,16($fp)
  214. move $3,$2
  215. sll $2,$3,2
  216. lw $3,60($fp)
  217. addu $2,$2,$3
  218. lw $3,0($2)
  219. bne $3,$0,$L14
  220. lw $2,16($fp)
  221. move $3,$2
  222. sll $2,$3,2
  223. lw $3,60($fp)
  224. addu $2,$2,$3
  225. li $3,0x00000001 # 1
  226. sw $3,0($2)
  227. lw $4,16($fp)
  228. lw $5,60($fp)
  229. lw $6,64($fp)
  230. lw $7,68($fp)
  231. jal do_perm
  232. lw $2,16($fp)
  233. move $3,$2
  234. sll $2,$3,2
  235. lw $3,60($fp)
  236. addu $2,$2,$3
  237. sw $0,0($2)
  238. $L14:
  239. $L12:
  240. lw $3,16($fp)
  241. addu $2,$3,1
  242. move $3,$2
  243. sw $3,16($fp)
  244. j $L10
  245. $L11:
  246. j $L15
  247. $L9:
  248. sw $0,28($fp)
  249. sw $0,20($fp)
  250. $L16:
  251. lw $2,20($fp)
  252. lw $3,64($fp)
  253. slt $2,$2,$3
  254. beq $2,$0,$L17
  255. $L19:
  256. sw $0,32($fp)
  257. $L20:
  258. lw $2,20($fp)
  259. move $3,$2
  260. sll $2,$3,2
  261. la $3,pindex
  262. addu $2,$2,$3
  263. lw $3,0($2)
  264. move $2,$3
  265. sll $3,$2,2
  266. la $4,w
  267. addu $2,$3,$4
  268. lw $3,0($2)
  269. lw $4,32($fp)
  270. addu $2,$3,$4
  271. lb $4,0($2)
  272. jal isupper
  273. beq $2,$0,$L21
  274. $L22:
  275. lw $2,28($fp)
  276. addu $3,$2,1
  277. sw $3,28($fp)
  278. lw $3,20($fp)
  279. move $4,$3
  280. sll $3,$4,2
  281. la $4,pindex
  282. addu $3,$3,$4
  283. lw $4,0($3)
  284. move $3,$4
  285. sll $4,$3,2
  286. la $5,w
  287. addu $3,$4,$5
  288. lw $4,32($fp)
  289. addu $5,$4,1
  290. sw $5,32($fp)
  291. lw $5,0($3)
  292. addu $3,$4,$5
  293. lbu $4,0($3)
  294. sb $4,acron($2)
  295. j $L20
  296. $L21:
  297. $L18:
  298. lw $3,20($fp)
  299. addu $2,$3,1
  300. move $3,$2
  301. sw $3,20($fp)
  302. j $L16
  303. $L17:
  304. lw $2,28($fp)
  305. la $3,acron
  306. addu $2,$2,$3
  307. sb $0,0($2)
  308. la $4,$LC6
  309. la $5,acron
  310. jal printf
  311. sw $0,20($fp)
  312. $L23:
  313. lw $2,20($fp)
  314. lw $3,64($fp)
  315. slt $2,$2,$3
  316. beq $2,$0,$L24
  317. $L26:
  318. lw $2,20($fp)
  319. move $3,$2
  320. sll $2,$3,2
  321. la $3,pindex
  322. addu $2,$2,$3
  323. lw $3,0($2)
  324. move $2,$3
  325. sll $3,$2,2
  326. la $4,w
  327. addu $2,$3,$4
  328. la $4,$LC7
  329. lw $5,0($2)
  330. jal printf
  331. $L25:
  332. lw $3,20($fp)
  333. addu $2,$3,1
  334. move $3,$2
  335. sw $3,20($fp)
  336. j $L23
  337. $L24:
  338. la $4,$LC8
  339. jal printf
  340. $L15:
  341. $L4:
  342. move $sp,$fp # sp not trusted here
  343. lw $31,52($sp)
  344. lw $fp,48($sp)
  345. lw $17,44($sp)
  346. lw $16,40($sp)
  347. addu $sp,$sp,56
  348. j $31
  349. .end do_perm
  350. .loc 1 53
  351. .ent main
  352. main:
  353. .frame $fp,32,$31 # vars= 8, regs= 2/0, args= 16, extra= 0
  354. .mask 0xc0000000,-4
  355. .fmask 0x00000000,0
  356. subu $sp,$sp,32
  357. sw $31,28($sp)
  358. sw $fp,24($sp)
  359. move $fp,$sp
  360. jal __main
  361. li $2,0x00000004 # 4
  362. sw $2,20($fp)
  363. $L28:
  364. lw $2,20($fp)
  365. slt $3,$2,7
  366. beq $3,$0,$L29
  367. $L31:
  368. sw $0,16($fp)
  369. $L32:
  370. lw $2,16($fp)
  371. slt $3,$2,6
  372. beq $3,$0,$L33
  373. $L35:
  374. lw $2,16($fp)
  375. move $3,$2
  376. sll $2,$3,2
  377. la $3,done
  378. addu $2,$2,$3
  379. li $3,0x00000001 # 1
  380. sw $3,0($2)
  381. lw $4,16($fp)
  382. la $5,done
  383. move $6,$0
  384. lw $7,20($fp)
  385. jal do_perm
  386. lw $2,16($fp)
  387. move $3,$2
  388. sll $2,$3,2
  389. la $3,done
  390. addu $2,$2,$3
  391. sw $0,0($2)
  392. $L34:
  393. lw $3,16($fp)
  394. addu $2,$3,1
  395. move $3,$2
  396. sw $3,16($fp)
  397. j $L32
  398. $L33:
  399. $L30:
  400. lw $3,20($fp)
  401. addu $2,$3,1
  402. move $3,$2
  403. sw $3,20($fp)
  404. j $L28
  405. $L29:
  406. $L27:
  407. move $sp,$fp # sp not trusted here
  408. lw $31,28($sp)
  409. lw $fp,24($sp)
  410. addu $sp,$sp,32
  411. j $31
  412. .end main