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

https://github.com/kframework/X86-64-semantics · Assembly · 711 lines · 708 code · 3 blank · 0 comment · 0 complexity · 8c3cad3828b0549777b164b430da21e0 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. .comm u1,80,32
  376. .comm u2,80,32
  377. .globl test
  378. test:
  379. pushq %rbp
  380. movq %rsp, %rbp
  381. subq $48, %rsp
  382. movq %rdi, -24(%rbp)
  383. movq %rsi, -32(%rbp)
  384. movq %rdx, -40(%rbp)
  385. movl %ecx, -44(%rbp)
  386. movq -40(%rbp), %rdx
  387. movq -32(%rbp), %rcx
  388. movq -24(%rbp), %rax
  389. movq %rcx, %rsi
  390. movq %rax, %rdi
  391. call strncmp
  392. movl %eax, -4(%rbp)
  393. cmpl $0, -44(%rbp)
  394. jns L54
  395. cmpl $0, -4(%rbp)
  396. js L54
  397. call abort
  398. L54:
  399. cmpl $0, -44(%rbp)
  400. jne L55
  401. cmpl $0, -4(%rbp)
  402. je L55
  403. call abort
  404. L55:
  405. cmpl $0, -44(%rbp)
  406. jle L57
  407. cmpl $0, -4(%rbp)
  408. jg L57
  409. call abort
  410. L57:
  411. nop
  412. leave
  413. ret
  414. .globl main
  415. .globl _start
  416. _start:
  417. pushq %rbp
  418. movq %rsp, %rbp
  419. subq $80, %rsp
  420. movq $0, -80(%rbp)
  421. jmp L59
  422. L76:
  423. movq $0, -72(%rbp)
  424. jmp L60
  425. L75:
  426. movq $0, -64(%rbp)
  427. jmp L61
  428. L74:
  429. movq $u1, -48(%rbp)
  430. movq $0, -56(%rbp)
  431. jmp L62
  432. L63:
  433. movq -48(%rbp), %rax
  434. leaq 1(%rax), %rdx
  435. movq %rdx, -48(%rbp)
  436. movb $0, (%rax)
  437. addq $1, -56(%rbp)
  438. L62:
  439. movq -56(%rbp), %rax
  440. cmpq -80(%rbp), %rax
  441. jb L63
  442. movq -48(%rbp), %rax
  443. movq %rax, -32(%rbp)
  444. movq $0, -56(%rbp)
  445. jmp L64
  446. L65:
  447. movq -48(%rbp), %rax
  448. leaq 1(%rax), %rdx
  449. movq %rdx, -48(%rbp)
  450. movb $97, (%rax)
  451. addq $1, -56(%rbp)
  452. L64:
  453. movq -56(%rbp), %rax
  454. cmpq -64(%rbp), %rax
  455. jb L65
  456. movq -48(%rbp), %rax
  457. movq %rax, -24(%rbp)
  458. movq $0, -56(%rbp)
  459. jmp L66
  460. L67:
  461. movq -48(%rbp), %rax
  462. leaq 1(%rax), %rdx
  463. movq %rdx, -48(%rbp)
  464. movb $120, (%rax)
  465. addq $1, -56(%rbp)
  466. L66:
  467. cmpq $7, -56(%rbp)
  468. jbe L67
  469. movq $u2, -40(%rbp)
  470. movq $0, -56(%rbp)
  471. jmp L68
  472. L69:
  473. movq -40(%rbp), %rax
  474. leaq 1(%rax), %rdx
  475. movq %rdx, -40(%rbp)
  476. movb $0, (%rax)
  477. addq $1, -56(%rbp)
  478. L68:
  479. movq -56(%rbp), %rax
  480. cmpq -72(%rbp), %rax
  481. jb L69
  482. movq -40(%rbp), %rax
  483. movq %rax, -16(%rbp)
  484. movq $0, -56(%rbp)
  485. jmp L70
  486. L71:
  487. movq -40(%rbp), %rax
  488. leaq 1(%rax), %rdx
  489. movq %rdx, -40(%rbp)
  490. movb $97, (%rax)
  491. addq $1, -56(%rbp)
  492. L70:
  493. movq -56(%rbp), %rax
  494. cmpq -64(%rbp), %rax
  495. jb L71
  496. movq -40(%rbp), %rax
  497. movq %rax, -8(%rbp)
  498. movq $0, -56(%rbp)
  499. jmp L72
  500. L73:
  501. movq -40(%rbp), %rax
  502. leaq 1(%rax), %rdx
  503. movq %rdx, -40(%rbp)
  504. movb $120, (%rax)
  505. addq $1, -56(%rbp)
  506. L72:
  507. cmpq $7, -56(%rbp)
  508. jbe L73
  509. movq -24(%rbp), %rax
  510. movb $0, (%rax)
  511. movq -8(%rbp), %rax
  512. movb $0, (%rax)
  513. movq -16(%rbp), %rsi
  514. movq -32(%rbp), %rax
  515. movl $0, %ecx
  516. movl $80, %edx
  517. movq %rax, %rdi
  518. call test
  519. movq -64(%rbp), %rdx
  520. movq -16(%rbp), %rsi
  521. movq -32(%rbp), %rax
  522. movl $0, %ecx
  523. movq %rax, %rdi
  524. call test
  525. movq -24(%rbp), %rax
  526. movb $97, (%rax)
  527. movq -24(%rbp), %rax
  528. addq $1, %rax
  529. movb $0, (%rax)
  530. movq -8(%rbp), %rax
  531. movb $0, (%rax)
  532. movq -16(%rbp), %rsi
  533. movq -32(%rbp), %rax
  534. movl $1, %ecx
  535. movl $80, %edx
  536. movq %rax, %rdi
  537. call test
  538. movq -64(%rbp), %rdx
  539. movq -16(%rbp), %rsi
  540. movq -32(%rbp), %rax
  541. movl $0, %ecx
  542. movq %rax, %rdi
  543. call test
  544. movq -24(%rbp), %rax
  545. movb $0, (%rax)
  546. movq -8(%rbp), %rax
  547. movb $97, (%rax)
  548. movq -8(%rbp), %rax
  549. addq $1, %rax
  550. movb $0, (%rax)
  551. movq -16(%rbp), %rsi
  552. movq -32(%rbp), %rax
  553. movl $-1, %ecx
  554. movl $80, %edx
  555. movq %rax, %rdi
  556. call test
  557. movq -64(%rbp), %rdx
  558. movq -16(%rbp), %rsi
  559. movq -32(%rbp), %rax
  560. movl $0, %ecx
  561. movq %rax, %rdi
  562. call test
  563. movq -24(%rbp), %rax
  564. movb $98, (%rax)
  565. movq -24(%rbp), %rax
  566. addq $1, %rax
  567. movb $0, (%rax)
  568. movq -8(%rbp), %rax
  569. movb $99, (%rax)
  570. movq -8(%rbp), %rax
  571. addq $1, %rax
  572. movb $0, (%rax)
  573. movq -16(%rbp), %rsi
  574. movq -32(%rbp), %rax
  575. movl $-1, %ecx
  576. movl $80, %edx
  577. movq %rax, %rdi
  578. call test
  579. movq -64(%rbp), %rdx
  580. movq -16(%rbp), %rsi
  581. movq -32(%rbp), %rax
  582. movl $0, %ecx
  583. movq %rax, %rdi
  584. call test
  585. movq -24(%rbp), %rax
  586. movb $99, (%rax)
  587. movq -24(%rbp), %rax
  588. addq $1, %rax
  589. movb $0, (%rax)
  590. movq -8(%rbp), %rax
  591. movb $98, (%rax)
  592. movq -8(%rbp), %rax
  593. addq $1, %rax
  594. movb $0, (%rax)
  595. movq -16(%rbp), %rsi
  596. movq -32(%rbp), %rax
  597. movl $1, %ecx
  598. movl $80, %edx
  599. movq %rax, %rdi
  600. call test
  601. movq -64(%rbp), %rdx
  602. movq -16(%rbp), %rsi
  603. movq -32(%rbp), %rax
  604. movl $0, %ecx
  605. movq %rax, %rdi
  606. call test
  607. movq -24(%rbp), %rax
  608. movb $98, (%rax)
  609. movq -24(%rbp), %rax
  610. addq $1, %rax
  611. movb $0, (%rax)
  612. movq -8(%rbp), %rax
  613. movb $-87, (%rax)
  614. movq -8(%rbp), %rax
  615. addq $1, %rax
  616. movb $0, (%rax)
  617. movq -16(%rbp), %rsi
  618. movq -32(%rbp), %rax
  619. movl $-1, %ecx
  620. movl $80, %edx
  621. movq %rax, %rdi
  622. call test
  623. movq -64(%rbp), %rdx
  624. movq -16(%rbp), %rsi
  625. movq -32(%rbp), %rax
  626. movl $0, %ecx
  627. movq %rax, %rdi
  628. call test
  629. movq -24(%rbp), %rax
  630. movb $-87, (%rax)
  631. movq -24(%rbp), %rax
  632. addq $1, %rax
  633. movb $0, (%rax)
  634. movq -8(%rbp), %rax
  635. movb $98, (%rax)
  636. movq -8(%rbp), %rax
  637. addq $1, %rax
  638. movb $0, (%rax)
  639. movq -16(%rbp), %rsi
  640. movq -32(%rbp), %rax
  641. movl $1, %ecx
  642. movl $80, %edx
  643. movq %rax, %rdi
  644. call test
  645. movq -64(%rbp), %rdx
  646. movq -16(%rbp), %rsi
  647. movq -32(%rbp), %rax
  648. movl $0, %ecx
  649. movq %rax, %rdi
  650. call test
  651. movq -24(%rbp), %rax
  652. movb $-87, (%rax)
  653. movq -24(%rbp), %rax
  654. addq $1, %rax
  655. movb $0, (%rax)
  656. movq -8(%rbp), %rax
  657. movb $-86, (%rax)
  658. movq -8(%rbp), %rax
  659. addq $1, %rax
  660. movb $0, (%rax)
  661. movq -16(%rbp), %rsi
  662. movq -32(%rbp), %rax
  663. movl $-1, %ecx
  664. movl $80, %edx
  665. movq %rax, %rdi
  666. call test
  667. movq -64(%rbp), %rdx
  668. movq -16(%rbp), %rsi
  669. movq -32(%rbp), %rax
  670. movl $0, %ecx
  671. movq %rax, %rdi
  672. call test
  673. movq -24(%rbp), %rax
  674. movb $-86, (%rax)
  675. movq -24(%rbp), %rax
  676. addq $1, %rax
  677. movb $0, (%rax)
  678. movq -8(%rbp), %rax
  679. movb $-87, (%rax)
  680. movq -8(%rbp), %rax
  681. addq $1, %rax
  682. movb $0, (%rax)
  683. movq -16(%rbp), %rsi
  684. movq -32(%rbp), %rax
  685. movl $1, %ecx
  686. movl $80, %edx
  687. movq %rax, %rdi
  688. call test
  689. movq -64(%rbp), %rdx
  690. movq -16(%rbp), %rsi
  691. movq -32(%rbp), %rax
  692. movl $0, %ecx
  693. movq %rax, %rdi
  694. call test
  695. addq $1, -64(%rbp)
  696. L61:
  697. cmpq $63, -64(%rbp)
  698. jbe L74
  699. addq $1, -72(%rbp)
  700. L60:
  701. cmpq $7, -72(%rbp)
  702. jbe L75
  703. addq $1, -80(%rbp)
  704. L59:
  705. cmpq $7, -80(%rbp)
  706. jbe L76
  707. movl $0, %edi
  708. call exit