Skip to content

Instantly share code, notes, and snippets.

@Lucretia
Created August 30, 2019 13:03
Show Gist options
  • Save Lucretia/17dc69c79af46881cb58bb74ec7cb0cb to your computer and use it in GitHub Desktop.
Save Lucretia/17dc69c79af46881cb58bb74ec7cb0cb to your computer and use it in GitHub Desktop.
Fizz buzz 2 - table based - no optimisation
.file "fizz_buzz_2.adb"
.text
.align 2
.globl _ada_fizz_buzz_2
.type _ada_fizz_buzz_2, @function
_ada_fizz_buzz_2:
.LFB1:
.cfi_startproc
pushq %rbp
.cfi_def_cfa_offset 16
.cfi_offset 6, -16
movq %rsp, %rbp
.cfi_def_cfa_register 6
subq $32, %rsp
leaq 16(%rbp), %rax
movq %rax, -16(%rbp)
movl $1, -4(%rbp)
.L4:
cmpl $100, -4(%rbp)
jg .L7
movl -4(%rbp), %ecx
movl $1431655766, %edx
movl %ecx, %eax
imull %edx
movl %ecx, %eax
sarl $31, %eax
subl %eax, %edx
movl %edx, %eax
movl %eax, %edx
addl %edx, %edx
addl %eax, %edx
movl %ecx, %eax
subl %edx, %eax
testl %eax, %eax
sete %al
movb %al, -5(%rbp)
movl -4(%rbp), %ecx
movl $1717986919, %edx
movl %ecx, %eax
imull %edx
sarl %edx
movl %ecx, %eax
sarl $31, %eax
subl %eax, %edx
movl %edx, %eax
movl %eax, %edx
sall $2, %edx
addl %eax, %edx
movl %ecx, %eax
subl %edx, %eax
testl %eax, %eax
sete %al
movb %al, -6(%rbp)
movzbl -5(%rbp), %edx
movzbl -6(%rbp), %eax
addq %rdx, %rdx
addq %rdx, %rax
salq $4, %rax
addq $string_table.4304, %rax
movq 8(%rax), %rdx
movq (%rax), %rax
movq %rax, -32(%rbp)
movq %rdx, -24(%rbp)
movq -32(%rbp), %rax
testq %rax, %rax
je .L6
movq -32(%rbp), %rdx
movq -24(%rbp), %rax
movq %rdx, %rdi
movq %rax, %rsi
call ada__text_io__put_line__2
.L6:
addl $1, -4(%rbp)
jmp .L4
.L7:
nop
leave
.cfi_def_cfa 7, 8
ret
.cfi_endproc
.LFE1:
.size _ada_fizz_buzz_2, .-_ada_fizz_buzz_2
.section .rodata
.align 8
.LC0:
.zero 8
.align 32
.type string_table.4304, @object
.size string_table.4304, 64
string_table.4304:
.quad 0
.quad .LC0
.quad buzz___UNC.4213+8
.quad buzz___UNC.4213
.quad fizz___UNC.4202+8
.quad fizz___UNC.4202
.quad fizz_buzz___UNC.4224+8
.quad fizz_buzz___UNC.4224
.align 8
.type fizz_buzz.4226, @object
.size fizz_buzz.4226, 8
fizz_buzz.4226:
.quad fizz_buzz___UNC.4224+8
.align 16
.type fizz_buzz___UNC.4224, @object
.size fizz_buzz___UNC.4224, 16
fizz_buzz___UNC.4224:
.long 1
.long 8
.ascii "FizzBuzz"
.align 8
.type buzz.4215, @object
.size buzz.4215, 8
buzz.4215:
.quad buzz___UNC.4213+8
.align 8
.type buzz___UNC.4213, @object
.size buzz___UNC.4213, 12
buzz___UNC.4213:
.long 1
.long 4
.ascii "Buzz"
.align 8
.type fizz.4204, @object
.size fizz.4204, 8
fizz.4204:
.quad fizz___UNC.4202+8
.align 8
.type fizz___UNC.4202, @object
.size fizz___UNC.4202, 12
fizz___UNC.4202:
.long 1
.long 4
.ascii "Fizz"
.ident "GCC: (GNU) 7.3.0"
.section .note.GNU-stack,"",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment