/tests/gcc.c-torture/job_601_1465/bin/fprintf-1-0.asm

https://github.com/kframework/X86-64-semantics · Assembly · 557 lines · 554 code · 3 blank · 0 comment · 0 complexity · 730380da147781468db2eaf201f4b580 MD5 · raw file

  1. .text
  2. .globl strlen
  3. strlen:
  4. pushq %rbp
  5. movq %rsp, %rbp
  6. movq %rdi, -24(%rbp)
  7. movq $0, -8(%rbp)
  8. jmp L2
  9. L3:
  10. addq $1, -8(%rbp)
  11. L2:
  12. movq -24(%rbp), %rdx
  13. movq -8(%rbp), %rax
  14. addq %rdx, %rax
  15. movzbl (%rax), %eax
  16. testb %al, %al
  17. jne L3
  18. movq -8(%rbp), %rax
  19. popq %rbp
  20. ret
  21. .globl strcpy
  22. strcpy:
  23. pushq %rbp
  24. movq %rsp, %rbp
  25. movq %rdi, -24(%rbp)
  26. movq %rsi, -32(%rbp)
  27. movq -24(%rbp), %rax
  28. movq %rax, -8(%rbp)
  29. nop
  30. L6:
  31. movq -24(%rbp), %rax
  32. leaq 1(%rax), %rdx
  33. movq %rdx, -24(%rbp)
  34. movq -32(%rbp), %rdx
  35. leaq 1(%rdx), %rcx
  36. movq %rcx, -32(%rbp)
  37. movzbl (%rdx), %edx
  38. movb %dl, (%rax)
  39. movzbl (%rax), %eax
  40. testb %al, %al
  41. jne L6
  42. movq -8(%rbp), %rax
  43. popq %rbp
  44. ret
  45. .globl strcmp
  46. strcmp:
  47. pushq %rbp
  48. movq %rsp, %rbp
  49. movq %rdi, -8(%rbp)
  50. movq %rsi, -16(%rbp)
  51. jmp L9
  52. L11:
  53. addq $1, -8(%rbp)
  54. addq $1, -16(%rbp)
  55. L9:
  56. movq -8(%rbp), %rax
  57. movzbl (%rax), %eax
  58. testb %al, %al
  59. je L10
  60. movq -8(%rbp), %rax
  61. movzbl (%rax), %edx
  62. movq -16(%rbp), %rax
  63. movzbl (%rax), %eax
  64. cmpb %al, %dl
  65. je L11
  66. L10:
  67. movq -8(%rbp), %rax
  68. movzbl (%rax), %eax
  69. movzbl %al, %edx
  70. movq -16(%rbp), %rax
  71. movzbl (%rax), %eax
  72. movzbl %al, %eax
  73. subl %eax, %edx
  74. movl %edx, %eax
  75. popq %rbp
  76. ret
  77. .globl strchr
  78. strchr:
  79. pushq %rbp
  80. movq %rsp, %rbp
  81. movq %rdi, -8(%rbp)
  82. movl %esi, -12(%rbp)
  83. jmp L14
  84. L16:
  85. movq -8(%rbp), %rax
  86. leaq 1(%rax), %rdx
  87. movq %rdx, -8(%rbp)
  88. movzbl (%rax), %eax
  89. testb %al, %al
  90. jne L14
  91. movl $0, %eax
  92. jmp L15
  93. L14:
  94. movq -8(%rbp), %rax
  95. movzbl (%rax), %eax
  96. movl -12(%rbp), %edx
  97. cmpb %dl, %al
  98. jne L16
  99. movq -8(%rbp), %rax
  100. L15:
  101. popq %rbp
  102. ret
  103. .globl strncpy
  104. strncpy:
  105. pushq %rbp
  106. movq %rsp, %rbp
  107. movq %rdi, -24(%rbp)
  108. movq %rsi, -32(%rbp)
  109. movq %rdx, -40(%rbp)
  110. movq -24(%rbp), %rax
  111. movq %rax, -8(%rbp)
  112. L20:
  113. movq -40(%rbp), %rax
  114. leaq -1(%rax), %rdx
  115. movq %rdx, -40(%rbp)
  116. testq %rax, %rax
  117. jne L18
  118. movq -8(%rbp), %rax
  119. jmp L19
  120. L18:
  121. movq -24(%rbp), %rax
  122. leaq 1(%rax), %rdx
  123. movq %rdx, -24(%rbp)
  124. movq -32(%rbp), %rdx
  125. leaq 1(%rdx), %rcx
  126. movq %rcx, -32(%rbp)
  127. movzbl (%rdx), %edx
  128. movb %dl, (%rax)
  129. movzbl (%rax), %eax
  130. testb %al, %al
  131. jne L20
  132. jmp L21
  133. L22:
  134. movq -24(%rbp), %rax
  135. leaq 1(%rax), %rdx
  136. movq %rdx, -24(%rbp)
  137. movb $0, (%rax)
  138. L21:
  139. movq -40(%rbp), %rax
  140. leaq -1(%rax), %rdx
  141. movq %rdx, -40(%rbp)
  142. testq %rax, %rax
  143. jne L22
  144. movq -8(%rbp), %rax
  145. L19:
  146. popq %rbp
  147. ret
  148. .globl strncmp
  149. strncmp:
  150. pushq %rbp
  151. movq %rsp, %rbp
  152. movq %rdi, -8(%rbp)
  153. movq %rsi, -16(%rbp)
  154. movq %rdx, -24(%rbp)
  155. jmp L24
  156. L26:
  157. movq -8(%rbp), %rax
  158. leaq 1(%rax), %rdx
  159. movq %rdx, -8(%rbp)
  160. movzbl (%rax), %ecx
  161. movq -16(%rbp), %rax
  162. leaq 1(%rax), %rdx
  163. movq %rdx, -16(%rbp)
  164. movzbl (%rax), %eax
  165. cmpb %al, %cl
  166. je L24
  167. movq -8(%rbp), %rax
  168. subq $1, %rax
  169. movzbl (%rax), %eax
  170. movzbl %al, %edx
  171. movq -16(%rbp), %rax
  172. subq $1, %rax
  173. movzbl (%rax), %eax
  174. movzbl %al, %eax
  175. subl %eax, %edx
  176. movl %edx, %eax
  177. jmp L25
  178. L24:
  179. movq -24(%rbp), %rax
  180. leaq -1(%rax), %rdx
  181. movq %rdx, -24(%rbp)
  182. testq %rax, %rax
  183. jne L26
  184. movl $0, %eax
  185. L25:
  186. popq %rbp
  187. ret
  188. .globl strrchr
  189. strrchr:
  190. pushq %rbp
  191. movq %rsp, %rbp
  192. movq %rdi, -24(%rbp)
  193. movl %esi, -28(%rbp)
  194. movq $0, -8(%rbp)
  195. L29:
  196. movq -24(%rbp), %rax
  197. movzbl (%rax), %eax
  198. movl -28(%rbp), %edx
  199. cmpb %dl, %al
  200. jne L28
  201. movq -24(%rbp), %rax
  202. movq %rax, -8(%rbp)
  203. L28:
  204. movq -24(%rbp), %rax
  205. leaq 1(%rax), %rdx
  206. movq %rdx, -24(%rbp)
  207. movzbl (%rax), %eax
  208. testb %al, %al
  209. jne L29
  210. movq -8(%rbp), %rax
  211. popq %rbp
  212. ret
  213. .globl memcmp
  214. memcmp:
  215. pushq %rbp
  216. movq %rsp, %rbp
  217. movq %rdi, -24(%rbp)
  218. movq %rsi, -32(%rbp)
  219. movq %rdx, -40(%rbp)
  220. movq -24(%rbp), %rax
  221. movq %rax, -16(%rbp)
  222. movq -32(%rbp), %rax
  223. movq %rax, -8(%rbp)
  224. jmp L32
  225. L35:
  226. movq -16(%rbp), %rax
  227. movzbl (%rax), %edx
  228. movq -8(%rbp), %rax
  229. movzbl (%rax), %eax
  230. cmpb %al, %dl
  231. je L33
  232. movq -16(%rbp), %rax
  233. movzbl (%rax), %eax
  234. movzbl %al, %edx
  235. movq -8(%rbp), %rax
  236. movzbl (%rax), %eax
  237. movzbl %al, %eax
  238. subl %eax, %edx
  239. movl %edx, %eax
  240. jmp L34
  241. L33:
  242. addq $1, -16(%rbp)
  243. addq $1, -8(%rbp)
  244. L32:
  245. movq -40(%rbp), %rax
  246. leaq -1(%rax), %rdx
  247. movq %rdx, -40(%rbp)
  248. testq %rax, %rax
  249. jne L35
  250. movl $0, %eax
  251. L34:
  252. popq %rbp
  253. ret
  254. .globl __stack_chk_fail
  255. __stack_chk_fail:
  256. pushq %rbp
  257. movq %rsp, %rbp
  258. movq $-1, %rax
  259. jmp %rax
  260. nop
  261. popq %rbp
  262. ret
  263. .globl exit
  264. exit:
  265. pushq %rbp
  266. movq %rsp, %rbp
  267. movl %edi, -4(%rbp)
  268. movq $-1, %rax
  269. jmp %rax
  270. nop
  271. popq %rbp
  272. ret
  273. .globl abort
  274. abort:
  275. pushq %rbp
  276. movq %rsp, %rbp
  277. movq $-1, %rax
  278. jmp %rax
  279. nop
  280. popq %rbp
  281. ret
  282. .globl memset
  283. memset:
  284. pushq %rbp
  285. movq %rsp, %rbp
  286. movq %rdi, -24(%rbp)
  287. movl %esi, -28(%rbp)
  288. movq %rdx, -40(%rbp)
  289. movq -24(%rbp), %rax
  290. movq %rax, -8(%rbp)
  291. jmp L40
  292. L41:
  293. movq -8(%rbp), %rax
  294. leaq 1(%rax), %rdx
  295. movq %rdx, -8(%rbp)
  296. movl -28(%rbp), %edx
  297. movb %dl, (%rax)
  298. L40:
  299. movq -40(%rbp), %rax
  300. leaq -1(%rax), %rdx
  301. movq %rdx, -40(%rbp)
  302. testq %rax, %rax
  303. jne L41
  304. movq -24(%rbp), %rax
  305. popq %rbp
  306. ret
  307. .globl memcpy
  308. memcpy:
  309. pushq %rbp
  310. movq %rsp, %rbp
  311. movq %rdi, -24(%rbp)
  312. movq %rsi, -32(%rbp)
  313. movq %rdx, -40(%rbp)
  314. movq -24(%rbp), %rax
  315. movq %rax, -16(%rbp)
  316. movq -32(%rbp), %rax
  317. movq %rax, -8(%rbp)
  318. jmp L44
  319. L45:
  320. movq -16(%rbp), %rax
  321. leaq 1(%rax), %rdx
  322. movq %rdx, -16(%rbp)
  323. movq -8(%rbp), %rdx
  324. leaq 1(%rdx), %rcx
  325. movq %rcx, -8(%rbp)
  326. movzbl (%rdx), %edx
  327. movb %dl, (%rax)
  328. L44:
  329. movq -40(%rbp), %rax
  330. leaq -1(%rax), %rdx
  331. movq %rdx, -40(%rbp)
  332. testq %rax, %rax
  333. jne L45
  334. movq -24(%rbp), %rax
  335. popq %rbp
  336. ret
  337. .globl free
  338. free:
  339. pushq %rbp
  340. movq %rsp, %rbp
  341. movq %rdi, -8(%rbp)
  342. nop
  343. popq %rbp
  344. ret
  345. .globl isprint
  346. isprint:
  347. pushq %rbp
  348. movq %rsp, %rbp
  349. movl %edi, -4(%rbp)
  350. cmpl $96, -4(%rbp)
  351. jle L49
  352. cmpl $122, -4(%rbp)
  353. jg L49
  354. movl $1, %eax
  355. jmp L50
  356. L49:
  357. cmpl $64, -4(%rbp)
  358. jle L51
  359. cmpl $90, -4(%rbp)
  360. jg L51
  361. movl $1, %eax
  362. jmp L50
  363. L51:
  364. cmpl $47, -4(%rbp)
  365. jle L52
  366. cmpl $57, -4(%rbp)
  367. jg L52
  368. movl $1, %eax
  369. jmp L50
  370. L52:
  371. movl $0, %eax
  372. L50:
  373. popq %rbp
  374. ret
  375. .section .rodata
  376. LC0:
  377. .string "hello"
  378. LC1:
  379. .string "hello\n"
  380. LC2:
  381. .string "a"
  382. LC3:
  383. .string ""
  384. LC4:
  385. .string "%s"
  386. LC5:
  387. .string "%c"
  388. LC6:
  389. .string "%s\n"
  390. LC7:
  391. .string "%d\n"
  392. .text
  393. .globl main
  394. .globl _start
  395. _start:
  396. pushq %rbp
  397. movq %rsp, %rbp
  398. movq $stdout, %rax
  399. movq %rax, %rcx
  400. movl $5, %edx
  401. movl $1, %esi
  402. movl $LC0, %edi
  403. call fwrite
  404. movq $stdout, %rax
  405. movl $LC0, %esi
  406. movq %rax, %rdi
  407. movl $0, %eax
  408. call fprintf
  409. cmpl $5, %eax
  410. je L54
  411. call abort
  412. L54:
  413. movq $stdout, %rax
  414. movq %rax, %rcx
  415. movl $6, %edx
  416. movl $1, %esi
  417. movl $LC1, %edi
  418. call fwrite
  419. movq $stdout, %rax
  420. movl $LC1, %esi
  421. movq %rax, %rdi
  422. movl $0, %eax
  423. call fprintf
  424. cmpl $6, %eax
  425. je L55
  426. call abort
  427. L55:
  428. movq $stdout, %rax
  429. movq %rax, %rsi
  430. movl $97, %edi
  431. call fputc
  432. movq $stdout, %rax
  433. movl $LC2, %esi
  434. movq %rax, %rdi
  435. movl $0, %eax
  436. call fprintf
  437. cmpl $1, %eax
  438. je L56
  439. call abort
  440. L56:
  441. movq $stdout, %rax
  442. movl $LC3, %esi
  443. movq %rax, %rdi
  444. movl $0, %eax
  445. call fprintf
  446. testl %eax, %eax
  447. je L57
  448. call abort
  449. L57:
  450. movq $stdout, %rax
  451. movq %rax, %rcx
  452. movl $5, %edx
  453. movl $1, %esi
  454. movl $LC0, %edi
  455. call fwrite
  456. movq $stdout, %rax
  457. movl $LC0, %edx
  458. movl $LC4, %esi
  459. movq %rax, %rdi
  460. movl $0, %eax
  461. call fprintf
  462. cmpl $5, %eax
  463. je L58
  464. call abort
  465. L58:
  466. movq $stdout, %rax
  467. movq %rax, %rcx
  468. movl $6, %edx
  469. movl $1, %esi
  470. movl $LC1, %edi
  471. call fwrite
  472. movq $stdout, %rax
  473. movl $LC1, %edx
  474. movl $LC4, %esi
  475. movq %rax, %rdi
  476. movl $0, %eax
  477. call fprintf
  478. cmpl $6, %eax
  479. je L59
  480. call abort
  481. L59:
  482. movq $stdout, %rax
  483. movq %rax, %rsi
  484. movl $97, %edi
  485. call fputc
  486. movq $stdout, %rax
  487. movl $LC2, %edx
  488. movl $LC4, %esi
  489. movq %rax, %rdi
  490. movl $0, %eax
  491. call fprintf
  492. cmpl $1, %eax
  493. je L60
  494. call abort
  495. L60:
  496. movq $stdout, %rax
  497. movl $LC3, %edx
  498. movl $LC4, %esi
  499. movq %rax, %rdi
  500. movl $0, %eax
  501. call fprintf
  502. testl %eax, %eax
  503. je L61
  504. call abort
  505. L61:
  506. movq $stdout, %rax
  507. movq %rax, %rsi
  508. movl $120, %edi
  509. call fputc
  510. movq $stdout, %rax
  511. movl $120, %edx
  512. movl $LC5, %esi
  513. movq %rax, %rdi
  514. movl $0, %eax
  515. call fprintf
  516. cmpl $1, %eax
  517. je L62
  518. call abort
  519. L62:
  520. movq $stdout, %rax
  521. movl $LC1, %edx
  522. movl $LC6, %esi
  523. movq %rax, %rdi
  524. movl $0, %eax
  525. call fprintf
  526. movq $stdout, %rax
  527. movl $LC1, %edx
  528. movl $LC6, %esi
  529. movq %rax, %rdi
  530. movl $0, %eax
  531. call fprintf
  532. cmpl $7, %eax
  533. je L63
  534. call abort
  535. L63:
  536. movq $stdout, %rax
  537. movl $0, %edx
  538. movl $LC7, %esi
  539. movq %rax, %rdi
  540. movl $0, %eax
  541. call fprintf
  542. movq $stdout, %rax
  543. movl $0, %edx
  544. movl $LC7, %esi
  545. movq %rax, %rdi
  546. movl $0, %eax
  547. call fprintf
  548. cmpl $2, %eax
  549. je L64
  550. call abort
  551. L64:
  552. movl $0, %eax
  553. popq %rbp
  554. ret