struct.sbk 5.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378
  1. .global addpoint
  2. .section ".text"
  3. .align 4
  4. addpoint:
  5. save %sp,-96,%sp
  6. ld [%i0],%i5
  7. ld [%i1],%i4
  8. add %i5,%i4,%i5
  9. st %i5,[%i0]
  10. add %i0,4,%i5
  11. ld [%i5],%i4
  12. ld [%i1+4],%i3
  13. add %i4,%i3,%i4
  14. st %i4,[%i5]
  15. ld [%fp+64],%i5
  16. ld [%r24+0],%r1
  17. ld [%r24+4],%r2
  18. st %r1,[%r29+0]
  19. st %r2,[%r29+4]
  20. .L1:
  21. jmp %i7+12; restore
  22. .type addpoint,#function
  23. .size addpoint,.-addpoint
  24. .global canonrect
  25. .align 4
  26. canonrect:
  27. save %sp,-112,%sp
  28. ld [%i0],%i3
  29. ld [%i0+8],%i2
  30. cmp %i3,%i2; bge .L6; nop
  31. ld [%i0],%i5
  32. ba .L7; nop
  33. .L6:
  34. ld [%i0+8],%i5
  35. .L7:
  36. st %i5,[%fp+-16]
  37. ld [%i0+4],%i3
  38. ld [%i0+12],%i2
  39. cmp %i3,%i2; bge .L10; nop
  40. ld [%i0+4],%i4
  41. ba .L11; nop
  42. .L10:
  43. ld [%i0+12],%i4
  44. .L11:
  45. st %i4,[%fp+-12]
  46. ld [%i0],%i2
  47. ld [%i0+8],%i1
  48. cmp %i2,%i1; ble .L14; nop
  49. ld [%i0],%i3
  50. ba .L15; nop
  51. .L14:
  52. ld [%i0+8],%i3
  53. .L15:
  54. st %i3,[%fp+-8]
  55. ld [%i0+4],%i1
  56. ld [%i0+12],%l7
  57. cmp %i1,%l7; ble .L19; nop
  58. ld [%i0+4],%i2
  59. ba .L20; nop
  60. .L19:
  61. ld [%i0+12],%i2
  62. .L20:
  63. st %i2,[%fp+-4]
  64. ld [%fp+64],%i1
  65. add -16,%fp,%l7
  66. ld [%r23+0],%r1
  67. ld [%r23+4],%r2
  68. st %r1,[%r25+0]
  69. st %r2,[%r25+4]
  70. ld [%r23+8],%r1
  71. ld [%r23+12],%r2
  72. st %r1,[%r25+8]
  73. st %r2,[%r25+12]
  74. .L3:
  75. jmp %i7+12; restore
  76. .type canonrect,#function
  77. .size canonrect,.-canonrect
  78. .global makepoint
  79. .align 4
  80. makepoint:
  81. save %sp,-104,%sp
  82. st %i0,[%fp+-8]
  83. st %i1,[%fp+-4]
  84. ld [%fp+64],%i5
  85. add -8,%fp,%i4
  86. ld [%r28+0],%r1
  87. ld [%r28+4],%r2
  88. st %r1,[%r29+0]
  89. st %r2,[%r29+4]
  90. .L21:
  91. jmp %i7+12; restore
  92. .type makepoint,#function
  93. .size makepoint,.-makepoint
  94. .global makerect
  95. .align 4
  96. makerect:
  97. save %sp,-128,%sp
  98. add -16,%fp,%i5
  99. ld [%r24+0],%r1
  100. ld [%r24+4],%r2
  101. st %r1,[%r29+0]
  102. st %r2,[%r29+4]
  103. add -8,%fp,%i5
  104. ld [%r25+0],%r1
  105. ld [%r25+4],%r2
  106. st %r1,[%r29+0]
  107. st %r2,[%r29+4]
  108. add -32,%fp,%i5
  109. add -16,%fp,%i4
  110. ld [%r28+0],%r1
  111. ld [%r28+4],%r2
  112. st %r1,[%r29+0]
  113. st %r2,[%r29+4]
  114. ld [%r28+8],%r1
  115. ld [%r28+12],%r2
  116. st %r1,[%r29+8]
  117. st %r2,[%r29+12]
  118. add -32,%fp,%o0
  119. ld [%fp+64],%i5
  120. call canonrect; st %i5,[%sp+64]; unimp 16&0xfff
  121. .L24:
  122. jmp %i7+12; restore
  123. .type makerect,#function
  124. .size makerect,.-makerect
  125. .global ptinrect
  126. .align 4
  127. ptinrect:
  128. ld [%o0],%o4
  129. ld [%o1],%o3
  130. cmp %o4,%o3; bl .L29; nop
  131. ld [%o1+8],%o3
  132. cmp %o4,%o3; bge .L29; nop
  133. ld [%o0+4],%o4
  134. ld [%o1+4],%o3
  135. cmp %o4,%o3; bl .L29; nop
  136. ld [%o1+12],%o3
  137. cmp %o4,%o3; bge .L29; nop
  138. set 1,%o5
  139. ba .L30; nop
  140. .L29:
  141. mov %g0,%o5
  142. .L30:
  143. mov %o5,%o0
  144. .L27:
  145. retl; nop
  146. .type ptinrect,#function
  147. .size ptinrect,.-ptinrect
  148. .section ".data"
  149. .global y
  150. .type y,#object
  151. .size y,3
  152. .align 1
  153. y:
  154. .byte 97
  155. .byte 98
  156. .byte 0
  157. .global odd
  158. .section ".text"
  159. .align 4
  160. odd:
  161. save %sp,-96,%sp
  162. add -3,%fp,%i5
  163. ldub [%r24+0],%r1
  164. ldub [%r24+1],%r2
  165. stb %r1,[%r29+0]
  166. stb %r2,[%r29+1]
  167. ldub [%r24+2],%r1
  168. stb %r1,[%r29+2]
  169. set .L32,%o0
  170. add -3,%fp,%o1
  171. call printf; nop
  172. mov %g0,%i0
  173. .L31:
  174. ret; restore
  175. .type odd,#function
  176. .size odd,.-odd
  177. .section ".rodata"
  178. .align 4
  179. .L34:
  180. .word 0x0
  181. .word 0x0
  182. .align 4
  183. .L35:
  184. .word 0x140
  185. .word 0x140
  186. .align 4
  187. .L36:
  188. .word 0xffffffff
  189. .word 0xffffffff
  190. .word 0x1
  191. .word 0x1
  192. .word 0x14
  193. .word 0x12c
  194. .word 0x1f4
  195. .word 0x190
  196. .global main
  197. .section ".text"
  198. .align 4
  199. main:
  200. save %sp,-240,%sp
  201. add -64,%fp,%i4
  202. set .L34,%i3
  203. ld [%r27+0],%r1
  204. ld [%r27+4],%r2
  205. st %r1,[%r28+0]
  206. st %r2,[%r28+4]
  207. add -72,%fp,%i4
  208. set .L35,%i3
  209. ld [%r27+0],%r1
  210. ld [%r27+4],%r2
  211. st %r1,[%r28+0]
  212. st %r2,[%r28+4]
  213. add -32,%fp,%i4
  214. set .L36,%i3
  215. add %r27,32,%r27
  216. add %r28,32,%r3
  217. 1: dec 8,%r3
  218. ld [%r27+-8],%r1
  219. ld [%r27+-4],%r2
  220. st %r1,[%r3+0]
  221. st %r2,[%r3+4]
  222. cmp %r3,%r28; bgt 1b; dec 8,%r27
  223. set -10,%i4
  224. mov %i4,%o0
  225. mov %i4,%o1
  226. add -80,%fp,%i4
  227. call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
  228. add -88,%fp,%i4
  229. add -72,%fp,%i3
  230. ld [%r27+0],%r1
  231. ld [%r27+4],%r2
  232. st %r1,[%r28+0]
  233. st %r2,[%r28+4]
  234. add -88,%fp,%o0
  235. add -80,%fp,%o1
  236. add -96,%fp,%i4
  237. call addpoint; st %i4,[%sp+64]; unimp 8&0xfff
  238. set 10,%i4
  239. mov %i4,%o0
  240. mov %i4,%o1
  241. add -104,%fp,%i4
  242. call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
  243. add -112,%fp,%i4
  244. add -64,%fp,%i3
  245. ld [%r27+0],%r1
  246. ld [%r27+4],%r2
  247. st %r1,[%r28+0]
  248. st %r2,[%r28+4]
  249. add -112,%fp,%o0
  250. add -104,%fp,%o1
  251. add -120,%fp,%i4
  252. call addpoint; st %i4,[%sp+64]; unimp 8&0xfff
  253. add -96,%fp,%o0
  254. add -120,%fp,%o1
  255. add -48,%fp,%i4
  256. call makerect; st %i4,[%sp+64]; unimp 16&0xfff
  257. mov %g0,%i5
  258. ba .L40; nop
  259. .L37:
  260. sll %i5,3,%i4
  261. add -32,%fp,%i3
  262. ld [%i4+%i3],%o0
  263. add -28,%fp,%i3
  264. ld [%i4+%i3],%o1
  265. add -56,%fp,%i4
  266. call makepoint; st %i4,[%sp+64]; unimp 8&0xfff
  267. set .L41,%o0
  268. sll %i5,3,%i4
  269. add -32,%fp,%i3
  270. ld [%i4+%i3],%o1
  271. ld [%fp+-52],%o2
  272. call printf; nop
  273. add -128,%fp,%i4
  274. add -56,%fp,%i3
  275. ld [%r27+0],%r1
  276. ld [%r27+4],%r2
  277. st %r1,[%r28+0]
  278. st %r2,[%r28+4]
  279. add -128,%fp,%o0
  280. add -144,%fp,%i4
  281. add -48,%fp,%i3
  282. ld [%r27+0],%r1
  283. ld [%r27+4],%r2
  284. st %r1,[%r28+0]
  285. st %r2,[%r28+4]
  286. ld [%r27+8],%r1
  287. ld [%r27+12],%r2
  288. st %r1,[%r28+8]
  289. st %r2,[%r28+12]
  290. add -144,%fp,%o1
  291. call ptinrect; nop
  292. cmp %o0,0; bne .L44; nop
  293. set .L46,%o0
  294. call printf; nop
  295. .L44:
  296. set .L47,%o0
  297. ld [%fp+-48],%o1
  298. ld [%fp+-44],%o2
  299. ld [%fp+-40],%o3
  300. ld [%fp+-36],%o4
  301. call printf; nop
  302. .L38:
  303. add %i5,1,%i5
  304. .L40:
  305. mov %i5,%i4
  306. set 4,%i3
  307. cmp %i4,%i3; blu .L37; nop
  308. add -123,%fp,%i4
  309. set y,%i3
  310. ldub [%r27+0],%r1
  311. ldub [%r27+1],%r2
  312. stb %r1,[%r28+0]
  313. stb %r2,[%r28+1]
  314. ldub [%r27+2],%r1
  315. stb %r1,[%r28+2]
  316. add -123,%fp,%o0
  317. call odd; nop
  318. mov %g0,%o0
  319. call exit; nop
  320. mov %g0,%i0
  321. .L33:
  322. ret; restore
  323. .type main,#function
  324. .size main,.-main
  325. .section ".rodata"
  326. .align 1
  327. .L47:
  328. .byte 119
  329. .byte 105
  330. .byte 116
  331. .byte 104
  332. .byte 105
  333. .byte 110
  334. .byte 32
  335. .byte 91
  336. .byte 37
  337. .byte 100
  338. .byte 44
  339. .byte 37
  340. .byte 100
  341. .byte 59
  342. .byte 32
  343. .byte 37
  344. .byte 100
  345. .byte 44
  346. .byte 37
  347. .byte 100
  348. .byte 93
  349. .byte 10
  350. .byte 0
  351. .align 1
  352. .L46:
  353. .byte 110
  354. .byte 111
  355. .byte 116
  356. .byte 32
  357. .byte 0
  358. .align 1
  359. .L41:
  360. .byte 40
  361. .byte 37
  362. .byte 100
  363. .byte 44
  364. .byte 37
  365. .byte 100
  366. .byte 41
  367. .byte 32
  368. .byte 105
  369. .byte 115
  370. .byte 32
  371. .byte 0
  372. .align 1
  373. .L32:
  374. .byte 37
  375. .byte 115
  376. .byte 10
  377. .byte 0