Skip to content

Instantly share code, notes, and snippets.

@luizperes
Created October 20, 2017 09:42
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save luizperes/32f9065e1c41bc9f63219f4387dca6e7 to your computer and use it in GitHub Desktop.
Save luizperes/32f9065e1c41bc9f63219f4387dca6e7 to your computer and use it in GitHub Desktop.
++++++++[>++++[>++>+++>+++>+<<<<-]>+>+>->>+[<]<-]>>.>---.+++++++..+++.>>.<-.<.+++.------.--------.>>+.>++.
.text
.file "helloworld.b"
.globl main
.align 16, 0x90
.type main,@function
main:
.cfi_startproc
pushq %r15
.Ltmp0:
.cfi_def_cfa_offset 16
pushq %r14
.Ltmp1:
.cfi_def_cfa_offset 24
pushq %rbx
.Ltmp2:
.cfi_def_cfa_offset 32
.Ltmp3:
.cfi_offset %rbx, -32
.Ltmp4:
.cfi_offset %r14, -24
.Ltmp5:
.cfi_offset %r15, -16
movq brain.index@GOTPCREL(%rip), %rbx
movslq (%rbx), %rax
movq brain.cells@GOTPCREL(%rip), %r14
addl $8, (%r14,%rax,4)
jmp .LBB0_1
.align 16, 0x90
.LBB0_8:
decl (%rbx)
movslq (%rbx), %rax
decl (%r14,%rax,4)
.LBB0_1:
movslq (%rbx), %rax
cmpl $0, (%r14,%rax,4)
je .LBB0_9
incl (%rbx)
movslq (%rbx), %rax
addl $4, (%r14,%rax,4)
jmp .LBB0_3
.align 16, 0x90
.LBB0_4:
incl (%rbx)
movslq (%rbx), %rax
addl $2, (%r14,%rax,4)
incl (%rbx)
movslq (%rbx), %rax
addl $3, (%r14,%rax,4)
incl (%rbx)
movslq (%rbx), %rax
addl $3, (%r14,%rax,4)
incl (%rbx)
movslq (%rbx), %rax
incl (%r14,%rax,4)
addl $-4, (%rbx)
movslq (%rbx), %rax
decl (%r14,%rax,4)
.LBB0_3:
movslq (%rbx), %rax
cmpl $0, (%r14,%rax,4)
jne .LBB0_4
incl (%rbx)
movslq (%rbx), %rax
incl (%r14,%rax,4)
incl (%rbx)
movslq (%rbx), %rax
incl (%r14,%rax,4)
incl (%rbx)
movslq (%rbx), %rax
decl (%r14,%rax,4)
addl $2, (%rbx)
movslq (%rbx), %rax
incl (%r14,%rax,4)
jmp .LBB0_6
.align 16, 0x90
.LBB0_7:
decl (%rbx)
.LBB0_6:
movslq (%rbx), %rax
cmpl $0, (%r14,%rax,4)
jne .LBB0_7
jmp .LBB0_8
.LBB0_9:
movl (%rbx), %edi
addl $2, %edi
movl %edi, (%rbx)
movq brain.cells.size@GOTPCREL(%rip), %r15
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
incl (%rbx)
movslq (%rbx), %rax
addl $-3, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movslq (%rbx), %rax
addl $7, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movslq (%rbx), %rax
addl $3, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movl (%rbx), %edi
addl $2, %edi
movl %edi, (%rbx)
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
decl (%rbx)
movslq (%rbx), %rax
decl (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movl (%rbx), %edi
decl %edi
movl %edi, (%rbx)
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movslq (%rbx), %rax
addl $3, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movslq (%rbx), %rax
addl $-6, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
movslq (%rbx), %rax
addl $-8, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
addl $2, (%rbx)
movslq (%rbx), %rax
incl (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
incl (%rbx)
movslq (%rbx), %rax
addl $2, (%r14,%rax,4)
movl (%rbx), %edi
movl (%r15), %edx
movq %r14, %rsi
callq b_putchar
xorl %eax, %eax
popq %rbx
popq %r14
popq %r15
retq
.Lfunc_end0:
.size main, .Lfunc_end0-main
.cfi_endproc
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LCPI1_0:
.quad 4607182418800017408
.text
.globl number_size
.align 16, 0x90
.type number_size,@function
number_size:
.cfi_startproc
pushq %rbp
.Ltmp6:
.cfi_def_cfa_offset 16
.Ltmp7:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp8:
.cfi_def_cfa_register %rbp
subq $16, %rsp
movl %edi, -4(%rbp)
callq abs
cvtsi2sdl %eax, %xmm0
callq log10
callq floor
addsd .LCPI1_0(%rip), %xmm0
xorl %eax, %eax
cmpl $0, -4(%rbp)
jg .LBB1_2
movl $1, %eax
.LBB1_2:
cvtsi2sdl %eax, %xmm1
addsd %xmm1, %xmm0
cvttsd2si %xmm0, %eax
addq $16, %rsp
popq %rbp
retq
.Lfunc_end1:
.size number_size, .Lfunc_end1-number_size
.cfi_endproc
.globl b_show_tape
.align 16, 0x90
.type b_show_tape,@function
b_show_tape:
.cfi_startproc
pushq %rbp
.Ltmp9:
.cfi_def_cfa_offset 16
.Ltmp10:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp11:
.cfi_def_cfa_register %rbp
pushq %r15
pushq %r14
pushq %rbx
subq $328, %rsp
.Ltmp12:
.cfi_offset %rbx, -40
.Ltmp13:
.cfi_offset %r14, -32
.Ltmp14:
.cfi_offset %r15, -24
movl %edi, -28(%rbp)
movq %rsi, -40(%rbp)
movl %edx, -44(%rbp)
movl $12, -44(%rbp)
xorps %xmm0, %xmm0
movups %xmm0, -65(%rbp)
movaps %xmm0, -80(%rbp)
movaps %xmm0, -96(%rbp)
movaps %xmm0, -112(%rbp)
movaps %xmm0, -128(%rbp)
movaps %xmm0, -144(%rbp)
movaps %xmm0, -160(%rbp)
movaps %xmm0, -176(%rbp)
movaps %xmm0, -192(%rbp)
movaps %xmm0, -208(%rbp)
movaps %xmm0, -224(%rbp)
movaps %xmm0, -240(%rbp)
movaps %xmm0, -256(%rbp)
movaps %xmm0, -272(%rbp)
movaps %xmm0, -288(%rbp)
movaps %xmm0, -304(%rbp)
movb $91, -304(%rbp)
movl $1, -308(%rbp)
movl $0, -312(%rbp)
movl $0, -316(%rbp)
movb $0, -317(%rbp)
movb $0, -318(%rbp)
movl $0, -324(%rbp)
movabsq $8589934576, %r15
leaq .L.str(%rip), %r14
jmp .LBB2_1
.align 16, 0x90
.LBB2_19:
incl -324(%rbp)
addq $4, -40(%rbp)
.LBB2_1:
movl -324(%rbp), %eax
cmpl -44(%rbp), %eax
jge .LBB2_20
testb $1, -317(%rbp)
jne .LBB2_6
movl -324(%rbp), %eax
cmpl -28(%rbp), %eax
jne .LBB2_6
movl -308(%rbp), %eax
movl %eax, -312(%rbp)
movb $1, -317(%rbp)
movq -40(%rbp), %rax
cmpl $0, (%rax)
jne .LBB2_6
movl $1, -316(%rbp)
movb $1, -318(%rbp)
.align 16, 0x90
.LBB2_6:
movslq -308(%rbp), %rax
leal 1(%rax), %ecx
movl %ecx, -308(%rbp)
movb $32, -304(%rbp,%rax)
movq -40(%rbp), %rax
cmpl $0, (%rax)
je .LBB2_14
movq -40(%rbp), %rax
movl (%rax), %edi
callq number_size
movl %eax, -332(%rbp)
movl -332(%rbp), %eax
movq %rsp, -344(%rbp)
addq $15, %rax
andq %r15, %rax
movq %rsp, %rbx
subq %rax, %rbx
movq %rbx, %rsp
movq -40(%rbp), %rax
movl (%rax), %edx
xorl %eax, %eax
movq %rbx, %rdi
movq %r14, %rsi
callq sprintf
movl $0, -328(%rbp)
jmp .LBB2_8
.align 16, 0x90
.LBB2_9:
movslq -328(%rbp), %rax
movb (%rbx,%rax), %al
movslq -308(%rbp), %rcx
leal 1(%rcx), %edx
movl %edx, -308(%rbp)
movb %al, -304(%rbp,%rcx)
incl -328(%rbp)
.LBB2_8:
movl -328(%rbp), %eax
cmpl -332(%rbp), %eax
jb .LBB2_9
testb $1, -317(%rbp)
je .LBB2_13
testb $1, -318(%rbp)
jne .LBB2_13
movl -332(%rbp), %eax
movl %eax, -316(%rbp)
movb $1, -318(%rbp)
.LBB2_13:
movq -344(%rbp), %rsp
jmp .LBB2_17
.align 16, 0x90
.LBB2_14:
movl -324(%rbp), %ecx
movl $48, %eax
cmpl -28(%rbp), %ecx
je .LBB2_16
movl $95, %eax
.LBB2_16:
movslq -308(%rbp), %rcx
leal 1(%rcx), %edx
movl %edx, -308(%rbp)
movb %al, -304(%rbp,%rcx)
.LBB2_17:
movslq -308(%rbp), %rax
leal 1(%rax), %ecx
movl %ecx, -308(%rbp)
movb $32, -304(%rbp,%rax)
movl -44(%rbp), %eax
decl %eax
cmpl %eax, -324(%rbp)
jge .LBB2_19
movslq -308(%rbp), %rax
leal 1(%rax), %ecx
movl %ecx, -308(%rbp)
movb $124, -304(%rbp,%rax)
jmp .LBB2_19
.LBB2_20:
movslq -308(%rbp), %rax
leal 1(%rax), %ecx
movl %ecx, -308(%rbp)
movb $93, -304(%rbp,%rax)
movl $0, -324(%rbp)
jmp .LBB2_21
.align 16, 0x90
.LBB2_22:
movl $45, %edi
callq putchar
incl -324(%rbp)
.LBB2_21:
movl -324(%rbp), %eax
cmpl -308(%rbp), %eax
jl .LBB2_22
leaq .L.str.1(%rip), %rdi
leaq -304(%rbp), %rsi
xorl %eax, %eax
callq printf
movl $0, -324(%rbp)
jmp .LBB2_24
.align 16, 0x90
.LBB2_25:
movl $32, %edi
callq putchar
incl -324(%rbp)
.LBB2_24:
movl -324(%rbp), %eax
cmpl -312(%rbp), %eax
jl .LBB2_25
movl $94, %edi
callq putchar
movl $0, -348(%rbp)
jmp .LBB2_27
.align 16, 0x90
.LBB2_28:
movl $94, %edi
callq putchar
incl -348(%rbp)
.LBB2_27:
movl -348(%rbp), %eax
cmpl -316(%rbp), %eax
jle .LBB2_28
movl $10, %edi
callq putchar
movl $0, -324(%rbp)
jmp .LBB2_30
.align 16, 0x90
.LBB2_31:
movl $32, %edi
callq putchar
incl -324(%rbp)
.LBB2_30:
movl -324(%rbp), %eax
cmpl -312(%rbp), %eax
jl .LBB2_31
movl -28(%rbp), %esi
leaq .L.str.2(%rip), %rdi
xorl %eax, %eax
callq printf
leaq -24(%rbp), %rsp
popq %rbx
popq %r14
popq %r15
popq %rbp
retq
.Lfunc_end2:
.size b_show_tape, .Lfunc_end2-b_show_tape
.cfi_endproc
.globl b_getchar
.align 16, 0x90
.type b_getchar,@function
b_getchar:
.cfi_startproc
pushq %rbp
.Ltmp15:
.cfi_def_cfa_offset 16
.Ltmp16:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp17:
.cfi_def_cfa_register %rbp
subq $32, %rsp
movl %edi, -4(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
callq getchar
movslq -4(%rbp), %rcx
movq -16(%rbp), %rdx
movl %eax, (%rdx,%rcx,4)
addq $32, %rsp
popq %rbp
retq
.Lfunc_end3:
.size b_getchar, .Lfunc_end3-b_getchar
.cfi_endproc
.globl b_putchar
.align 16, 0x90
.type b_putchar,@function
b_putchar:
.cfi_startproc
pushq %rbp
.Ltmp18:
.cfi_def_cfa_offset 16
.Ltmp19:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp20:
.cfi_def_cfa_register %rbp
subq $32, %rsp
movl %edi, -4(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movslq -4(%rbp), %rax
movq -16(%rbp), %rcx
movl (%rcx,%rax,4), %edi
callq putchar
addq $32, %rsp
popq %rbp
retq
.Lfunc_end4:
.size b_putchar, .Lfunc_end4-b_putchar
.cfi_endproc
.section .rodata.cst8,"aM",@progbits,8
.align 8
.LCPI5_0:
.quad 4636737291354636288
.text
.globl b_float_print
.align 16, 0x90
.type b_float_print,@function
b_float_print:
.cfi_startproc
pushq %rbp
.Ltmp21:
.cfi_def_cfa_offset 16
.Ltmp22:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp23:
.cfi_def_cfa_register %rbp
subq $32, %rsp
movl %edi, -4(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movslq -4(%rbp), %rax
movq -16(%rbp), %rcx
cvtsi2sdl (%rcx,%rax,4), %xmm0
divsd .LCPI5_0(%rip), %xmm0
cvtsd2ss %xmm0, %xmm0
movss %xmm0, -24(%rbp)
movss -24(%rbp), %xmm0
cvtss2sd %xmm0, %xmm0
leaq .L.str.3(%rip), %rdi
movb $1, %al
callq printf
addq $32, %rsp
popq %rbp
retq
.Lfunc_end5:
.size b_float_print, .Lfunc_end5-b_float_print
.cfi_endproc
.globl b_debug
.align 16, 0x90
.type b_debug,@function
b_debug:
.cfi_startproc
pushq %rbp
.Ltmp24:
.cfi_def_cfa_offset 16
.Ltmp25:
.cfi_offset %rbp, -16
movq %rsp, %rbp
.Ltmp26:
.cfi_def_cfa_register %rbp
subq $32, %rsp
movl %edi, -4(%rbp)
movq %rsi, -16(%rbp)
movl %edx, -20(%rbp)
movl -4(%rbp), %edi
movq -16(%rbp), %rsi
callq b_show_tape
addq $32, %rsp
popq %rbp
retq
.Lfunc_end6:
.size b_debug, .Lfunc_end6-b_debug
.cfi_endproc
.type brain.index,@object
.bss
.weak brain.index
.align 4
brain.index:
.long 0
.size brain.index, 4
.type brain.cells.size,@object
.data
.weak brain.cells.size
.align 4
brain.cells.size:
.long 100
.size brain.cells.size, 4
.type brain.cells,@object
.bss
.weak brain.cells
.align 16
brain.cells:
.zero 400
.size brain.cells, 400
.type .L.str,@object
.section .rodata.str1.1,"aMS",@progbits,1
.L.str:
.asciz "%d"
.size .L.str, 3
.type .L.str.1,@object
.L.str.1:
.asciz "\n%s\n"
.size .L.str.1, 5
.type .L.str.2,@object
.L.str.2:
.asciz "*(%d)\n"
.size .L.str.2, 7
.type .L.str.3,@object
.L.str.3:
.asciz "%.2f"
.size .L.str.3, 5
.ident "clang version 3.8.0-2ubuntu3~trusty4 (tags/RELEASE_380/final)"
.section ".note.GNU-stack","",@progbits
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment