acron.s 5.7 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413
  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. lw $2,24($fp)
  184. beq $2,$0,$L8
  185. lw $2,24($fp)
  186. li $3,0x00000003 # 3
  187. bne $2,$3,$L7
  188. $L8:
  189. j $L4
  190. $L7:
  191. $L6:
  192. lw $2,64($fp)
  193. addu $3,$2,1
  194. sw $3,64($fp)
  195. sll $3,$2,2
  196. la $4,pindex
  197. addu $2,$3,$4
  198. lw $3,56($fp)
  199. sw $3,0($2)
  200. lw $2,64($fp)
  201. slt $3,$2,6
  202. beq $3,$0,$L9
  203. lw $3,68($fp)
  204. subu $2,$3,1
  205. move $3,$2
  206. sw $3,68($fp)
  207. beq $3,$0,$L9
  208. sw $0,16($fp)
  209. $L10:
  210. lw $2,16($fp)
  211. slt $3,$2,6
  212. beq $3,$0,$L11
  213. $L13:
  214. lw $2,16($fp)
  215. move $3,$2
  216. sll $2,$3,2
  217. lw $3,60($fp)
  218. addu $2,$2,$3
  219. lw $3,0($2)
  220. bne $3,$0,$L14
  221. lw $2,16($fp)
  222. move $3,$2
  223. sll $2,$3,2
  224. lw $3,60($fp)
  225. addu $2,$2,$3
  226. li $3,0x00000001 # 1
  227. sw $3,0($2)
  228. lw $4,16($fp)
  229. lw $5,60($fp)
  230. lw $6,64($fp)
  231. lw $7,68($fp)
  232. jal do_perm
  233. lw $2,16($fp)
  234. move $3,$2
  235. sll $2,$3,2
  236. lw $3,60($fp)
  237. addu $2,$2,$3
  238. sw $0,0($2)
  239. $L14:
  240. $L12:
  241. lw $3,16($fp)
  242. addu $2,$3,1
  243. move $3,$2
  244. sw $3,16($fp)
  245. j $L10
  246. $L11:
  247. j $L15
  248. $L9:
  249. sw $0,28($fp)
  250. sw $0,20($fp)
  251. $L16:
  252. lw $2,20($fp)
  253. lw $3,64($fp)
  254. slt $2,$2,$3
  255. beq $2,$0,$L17
  256. $L19:
  257. sw $0,32($fp)
  258. $L20:
  259. lw $2,20($fp)
  260. move $3,$2
  261. sll $2,$3,2
  262. la $3,pindex
  263. addu $2,$2,$3
  264. lw $3,0($2)
  265. move $2,$3
  266. sll $3,$2,2
  267. la $4,w
  268. addu $2,$3,$4
  269. lw $3,0($2)
  270. lw $4,32($fp)
  271. addu $2,$3,$4
  272. lb $4,0($2)
  273. jal isupper
  274. beq $2,$0,$L21
  275. $L22:
  276. lw $2,28($fp)
  277. addu $3,$2,1
  278. sw $3,28($fp)
  279. lw $3,20($fp)
  280. move $4,$3
  281. sll $3,$4,2
  282. la $4,pindex
  283. addu $3,$3,$4
  284. lw $4,0($3)
  285. move $3,$4
  286. sll $4,$3,2
  287. la $5,w
  288. addu $3,$4,$5
  289. lw $4,32($fp)
  290. addu $5,$4,1
  291. sw $5,32($fp)
  292. lw $5,0($3)
  293. addu $3,$4,$5
  294. lbu $4,0($3)
  295. sb $4,acron($2)
  296. j $L20
  297. $L21:
  298. $L18:
  299. lw $3,20($fp)
  300. addu $2,$3,1
  301. move $3,$2
  302. sw $3,20($fp)
  303. j $L16
  304. $L17:
  305. lw $2,28($fp)
  306. la $3,acron
  307. addu $2,$2,$3
  308. sb $0,0($2)
  309. la $4,$LC6
  310. la $5,acron
  311. jal printf
  312. sw $0,20($fp)
  313. $L23:
  314. lw $2,20($fp)
  315. lw $3,64($fp)
  316. slt $2,$2,$3
  317. beq $2,$0,$L24
  318. $L26:
  319. lw $2,20($fp)
  320. move $3,$2
  321. sll $2,$3,2
  322. la $3,pindex
  323. addu $2,$2,$3
  324. lw $3,0($2)
  325. move $2,$3
  326. sll $3,$2,2
  327. la $4,w
  328. addu $2,$3,$4
  329. la $4,$LC7
  330. lw $5,0($2)
  331. jal printf
  332. $L25:
  333. lw $3,20($fp)
  334. addu $2,$3,1
  335. move $3,$2
  336. sw $3,20($fp)
  337. j $L23
  338. $L24:
  339. la $4,$LC8
  340. jal printf
  341. $L15:
  342. $L4:
  343. move $sp,$fp # sp not trusted here
  344. lw $31,52($sp)
  345. lw $fp,48($sp)
  346. lw $17,44($sp)
  347. lw $16,40($sp)
  348. addu $sp,$sp,56
  349. j $31
  350. .end do_perm
  351. .loc 1 53
  352. .ent main
  353. main:
  354. .frame $fp,32,$31 # vars= 8, regs= 2/0, args= 16, extra= 0
  355. .mask 0xc0000000,-4
  356. .fmask 0x00000000,0
  357. subu $sp,$sp,32
  358. sw $31,28($sp)
  359. sw $fp,24($sp)
  360. move $fp,$sp
  361. jal __main
  362. li $2,0x00000004 # 4
  363. sw $2,20($fp)
  364. $L28:
  365. lw $2,20($fp)
  366. slt $3,$2,7
  367. beq $3,$0,$L29
  368. $L31:
  369. sw $0,16($fp)
  370. $L32:
  371. lw $2,16($fp)
  372. slt $3,$2,6
  373. beq $3,$0,$L33
  374. $L35:
  375. lw $2,16($fp)
  376. move $3,$2
  377. sll $2,$3,2
  378. la $3,done
  379. addu $2,$2,$3
  380. li $3,0x00000001 # 1
  381. sw $3,0($2)
  382. lw $4,16($fp)
  383. la $5,done
  384. move $6,$0
  385. lw $7,20($fp)
  386. jal do_perm
  387. lw $2,16($fp)
  388. move $3,$2
  389. sll $2,$3,2
  390. la $3,done
  391. addu $2,$2,$3
  392. sw $0,0($2)
  393. $L34:
  394. lw $3,16($fp)
  395. addu $2,$3,1
  396. move $3,$2
  397. sw $3,16($fp)
  398. j $L32
  399. $L33:
  400. $L30:
  401. lw $3,20($fp)
  402. addu $2,$3,1
  403. move $3,$2
  404. sw $3,20($fp)
  405. j $L28
  406. $L29:
  407. $L27:
  408. move $sp,$fp # sp not trusted here
  409. lw $31,28($sp)
  410. lw $fp,24($sp)
  411. addu $sp,$sp,32
  412. j $31
  413. .end main