mirror of
https://github.com/ProgramSnail/Lama.git
synced 2025-12-07 23:38:47 +00:00
2974 lines
51 KiB
ArmAsm
2974 lines
51 KiB
ArmAsm
.file "runtime.c"
|
|
.text
|
|
.local from_space
|
|
.comm from_space,16,4
|
|
.local to_space
|
|
.comm to_space,16,4
|
|
.comm current,4,4
|
|
.globl Blength
|
|
.type Blength, @function
|
|
Blength:
|
|
.LFB5:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $16, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -4(%ebp)
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -4(%ebp)
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE5:
|
|
.size Blength, .-Blength
|
|
.section .rodata
|
|
.align 4
|
|
.LC0:
|
|
.string "_abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ"
|
|
.text
|
|
.globl de_hash
|
|
.type de_hash, @function
|
|
de_hash:
|
|
.LFB6:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $16, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -8(%ebp)
|
|
leal .LC0@GOTOFF(%eax), %edx
|
|
movl %edx, chars.2648@GOTOFF(%eax)
|
|
leal 5+buf.2649@GOTOFF(%eax), %edx
|
|
movl %edx, -8(%ebp)
|
|
movl -8(%ebp), %edx
|
|
leal -1(%edx), %ecx
|
|
movl %ecx, -8(%ebp)
|
|
movb $0, (%edx)
|
|
jmp .L4
|
|
.L5:
|
|
movl chars.2648@GOTOFF(%eax), %edx
|
|
movl 8(%ebp), %ecx
|
|
andl $63, %ecx
|
|
leal (%edx,%ecx), %ebx
|
|
movl -8(%ebp), %edx
|
|
leal -1(%edx), %ecx
|
|
movl %ecx, -8(%ebp)
|
|
movzbl (%ebx), %ecx
|
|
movb %cl, (%edx)
|
|
sarl $6, 8(%ebp)
|
|
.L4:
|
|
cmpl $0, 8(%ebp)
|
|
jne .L5
|
|
addl $1, -8(%ebp)
|
|
movl -8(%ebp), %eax
|
|
addl $16, %esp
|
|
popl %ebx
|
|
.cfi_restore 3
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE6:
|
|
.size de_hash, .-de_hash
|
|
.local stringBuf
|
|
.comm stringBuf,12,4
|
|
.type createStringBuf, @function
|
|
createStringBuf:
|
|
.LFB7:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
subl $12, %esp
|
|
pushl $128
|
|
call malloc@PLT
|
|
addl $16, %esp
|
|
movl %eax, stringBuf@GOTOFF(%ebx)
|
|
movl $0, 4+stringBuf@GOTOFF(%ebx)
|
|
movl $128, 8+stringBuf@GOTOFF(%ebx)
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE7:
|
|
.size createStringBuf, .-createStringBuf
|
|
.type deleteStringBuf, @function
|
|
deleteStringBuf:
|
|
.LFB8:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl stringBuf@GOTOFF(%eax), %edx
|
|
subl $12, %esp
|
|
pushl %edx
|
|
movl %eax, %ebx
|
|
call free@PLT
|
|
addl $16, %esp
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE8:
|
|
.size deleteStringBuf, .-deleteStringBuf
|
|
.type extendStringBuf, @function
|
|
extendStringBuf:
|
|
.LFB9:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8+stringBuf@GOTOFF(%ebx), %eax
|
|
addl %eax, %eax
|
|
movl %eax, -12(%ebp)
|
|
movl -12(%ebp), %edx
|
|
movl stringBuf@GOTOFF(%ebx), %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call realloc@PLT
|
|
addl $16, %esp
|
|
movl %eax, stringBuf@GOTOFF(%ebx)
|
|
movl -12(%ebp), %eax
|
|
movl %eax, 8+stringBuf@GOTOFF(%ebx)
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE9:
|
|
.size extendStringBuf, .-extendStringBuf
|
|
.type printStringBuf, @function
|
|
printStringBuf:
|
|
.LFB10:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $52, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8(%ebp), %eax
|
|
movl %eax, -44(%ebp)
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -28(%ebp)
|
|
movl $0, -24(%ebp)
|
|
movl $0, -20(%ebp)
|
|
movl $1, -16(%ebp)
|
|
.L11:
|
|
leal 12(%ebp), %eax
|
|
movl %eax, -28(%ebp)
|
|
movl stringBuf@GOTOFF(%ebx), %eax
|
|
movl 4+stringBuf@GOTOFF(%ebx), %edx
|
|
addl %edx, %eax
|
|
movl %eax, -16(%ebp)
|
|
movl 8+stringBuf@GOTOFF(%ebx), %edx
|
|
movl 4+stringBuf@GOTOFF(%ebx), %eax
|
|
subl %eax, %edx
|
|
movl %edx, %eax
|
|
movl %eax, -20(%ebp)
|
|
movl -28(%ebp), %edx
|
|
movl -20(%ebp), %eax
|
|
pushl %edx
|
|
pushl -44(%ebp)
|
|
pushl %eax
|
|
pushl -16(%ebp)
|
|
call vsnprintf@PLT
|
|
addl $16, %esp
|
|
movl %eax, -24(%ebp)
|
|
movl -24(%ebp), %eax
|
|
cmpl -20(%ebp), %eax
|
|
jl .L12
|
|
call extendStringBuf
|
|
jmp .L11
|
|
.L12:
|
|
movl 4+stringBuf@GOTOFF(%ebx), %edx
|
|
movl -24(%ebp), %eax
|
|
addl %edx, %eax
|
|
movl %eax, 4+stringBuf@GOTOFF(%ebx)
|
|
nop
|
|
movl -12(%ebp), %eax
|
|
xorl %gs:20, %eax
|
|
je .L13
|
|
call __stack_chk_fail_local
|
|
.L13:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE10:
|
|
.size printStringBuf, .-printStringBuf
|
|
.section .rodata
|
|
.LC1:
|
|
.string "%d"
|
|
.LC2:
|
|
.string "\"%s\""
|
|
.LC3:
|
|
.string "<closure "
|
|
.LC4:
|
|
.string "%x"
|
|
.LC5:
|
|
.string ", "
|
|
.LC6:
|
|
.string ">"
|
|
.LC7:
|
|
.string "["
|
|
.LC8:
|
|
.string "]"
|
|
.LC9:
|
|
.string "cons"
|
|
.LC10:
|
|
.string "{"
|
|
.LC11:
|
|
.string "}"
|
|
.LC12:
|
|
.string "%s"
|
|
.LC13:
|
|
.string " ("
|
|
.LC14:
|
|
.string ")"
|
|
.LC15:
|
|
.string "*** invalid tag: %x ***"
|
|
.text
|
|
.type printValue, @function
|
|
printValue:
|
|
.LFB11:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $1, -16(%ebp)
|
|
movl $1, -24(%ebp)
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L15
|
|
movl 8(%ebp), %eax
|
|
sarl %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC1@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L42
|
|
.L15:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -16(%ebp)
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $3, %eax
|
|
je .L18
|
|
cmpl $3, %eax
|
|
jg .L19
|
|
cmpl $1, %eax
|
|
je .L20
|
|
jmp .L17
|
|
.L19:
|
|
cmpl $5, %eax
|
|
je .L21
|
|
cmpl $7, %eax
|
|
je .L22
|
|
jmp .L17
|
|
.L20:
|
|
movl -16(%ebp), %eax
|
|
addl $4, %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC2@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L16
|
|
.L22:
|
|
subl $12, %esp
|
|
leal .LC3@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
movl $0, -24(%ebp)
|
|
jmp .L23
|
|
.L27:
|
|
cmpl $0, -24(%ebp)
|
|
je .L24
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call printValue
|
|
addl $16, %esp
|
|
jmp .L25
|
|
.L24:
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC4@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
.L25:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
leal -1(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
je .L26
|
|
subl $12, %esp
|
|
leal .LC5@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
.L26:
|
|
addl $1, -24(%ebp)
|
|
.L23:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
ja .L27
|
|
subl $12, %esp
|
|
leal .LC6@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L16
|
|
.L18:
|
|
subl $12, %esp
|
|
leal .LC7@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
movl $0, -24(%ebp)
|
|
jmp .L28
|
|
.L30:
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call printValue
|
|
addl $16, %esp
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
leal -1(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
je .L29
|
|
subl $12, %esp
|
|
leal .LC5@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
.L29:
|
|
addl $1, -24(%ebp)
|
|
.L28:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
ja .L30
|
|
subl $12, %esp
|
|
leal .LC8@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L16
|
|
.L21:
|
|
movl 8(%ebp), %eax
|
|
subl $8, %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call de_hash
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
subl $8, %esp
|
|
leal .LC9@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
pushl -12(%ebp)
|
|
call strcmp@PLT
|
|
addl $16, %esp
|
|
testl %eax, %eax
|
|
jne .L31
|
|
movl -16(%ebp), %eax
|
|
movl %eax, -20(%ebp)
|
|
subl $12, %esp
|
|
leal .LC10@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L32
|
|
.L35:
|
|
movl -20(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call printValue
|
|
addl $16, %esp
|
|
movl -20(%ebp), %eax
|
|
addl $4, %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -20(%ebp)
|
|
movl -20(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
jne .L40
|
|
subl $12, %esp
|
|
leal .LC5@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
subl $4, -20(%ebp)
|
|
.L32:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
testl %eax, %eax
|
|
jne .L35
|
|
jmp .L34
|
|
.L40:
|
|
nop
|
|
.L34:
|
|
subl $12, %esp
|
|
leal .LC11@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L41
|
|
.L31:
|
|
subl $8, %esp
|
|
pushl -12(%ebp)
|
|
leal .LC12@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
testl %eax, %eax
|
|
je .L41
|
|
subl $12, %esp
|
|
leal .LC13@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
movl $0, -24(%ebp)
|
|
jmp .L37
|
|
.L39:
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call printValue
|
|
addl $16, %esp
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
leal -1(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
je .L38
|
|
subl $12, %esp
|
|
leal .LC5@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
.L38:
|
|
addl $1, -24(%ebp)
|
|
.L37:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
ja .L39
|
|
subl $12, %esp
|
|
leal .LC14@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L41
|
|
.L17:
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC15@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printStringBuf
|
|
addl $16, %esp
|
|
jmp .L42
|
|
.L41:
|
|
nop
|
|
.L16:
|
|
.L42:
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE11:
|
|
.size printValue, .-printValue
|
|
.section .rodata
|
|
.align 4
|
|
.LC16:
|
|
.string "***** INTERNAL ERROR: invalid tag %d in compare *****\n"
|
|
.text
|
|
.globl Lcompare
|
|
.type Lcompare, @function
|
|
Lcompare:
|
|
.LFB12:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $52, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L44
|
|
movl 12(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L45
|
|
movl 8(%ebp), %eax
|
|
sarl %eax
|
|
movl %eax, %edx
|
|
movl 12(%ebp), %eax
|
|
sarl %eax
|
|
subl %eax, %edx
|
|
movl %edx, %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L45:
|
|
movl $-1, %eax
|
|
jmp .L46
|
|
.L44:
|
|
movl 12(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L47
|
|
movl $3, %eax
|
|
jmp .L46
|
|
.L47:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -44(%ebp)
|
|
movl 12(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -40(%ebp)
|
|
movl -44(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
movl %eax, -36(%ebp)
|
|
movl -40(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
movl %eax, -32(%ebp)
|
|
movl -44(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, -28(%ebp)
|
|
movl -40(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, -24(%ebp)
|
|
movl -36(%ebp), %eax
|
|
cmpl -32(%ebp), %eax
|
|
je .L48
|
|
movl -36(%ebp), %eax
|
|
subl -32(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L48:
|
|
movl -36(%ebp), %eax
|
|
cmpl $3, %eax
|
|
je .L50
|
|
cmpl $3, %eax
|
|
jg .L51
|
|
cmpl $1, %eax
|
|
je .L52
|
|
jmp .L49
|
|
.L51:
|
|
cmpl $5, %eax
|
|
je .L53
|
|
cmpl $7, %eax
|
|
je .L54
|
|
jmp .L49
|
|
.L52:
|
|
movl -40(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -44(%ebp), %eax
|
|
addl $4, %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call strcmp@PLT
|
|
addl $16, %esp
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L54:
|
|
movl -44(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %edx
|
|
movl -40(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
je .L55
|
|
movl -44(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
movl %eax, %edx
|
|
movl -40(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
subl %eax, %edx
|
|
movl %edx, %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L55:
|
|
movl -28(%ebp), %eax
|
|
cmpl -24(%ebp), %eax
|
|
je .L56
|
|
movl -28(%ebp), %eax
|
|
subl -24(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L56:
|
|
movl $1, -48(%ebp)
|
|
jmp .L57
|
|
.L50:
|
|
movl -28(%ebp), %eax
|
|
cmpl -24(%ebp), %eax
|
|
je .L58
|
|
movl -28(%ebp), %eax
|
|
subl -24(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L58:
|
|
movl $0, -48(%ebp)
|
|
jmp .L57
|
|
.L53:
|
|
movl 8(%ebp), %eax
|
|
subl $8, %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -20(%ebp)
|
|
movl 12(%ebp), %eax
|
|
subl $8, %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -16(%ebp)
|
|
movl -20(%ebp), %eax
|
|
cmpl -16(%ebp), %eax
|
|
je .L59
|
|
movl -20(%ebp), %eax
|
|
subl -16(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L59:
|
|
movl -28(%ebp), %eax
|
|
cmpl -24(%ebp), %eax
|
|
je .L60
|
|
movl -28(%ebp), %eax
|
|
subl -24(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L60:
|
|
movl $0, -48(%ebp)
|
|
jmp .L57
|
|
.L49:
|
|
movl stderr@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
subl $4, %esp
|
|
pushl -36(%ebp)
|
|
leal .LC16@GOTOFF(%ebx), %edx
|
|
pushl %edx
|
|
pushl %eax
|
|
call fprintf@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $255
|
|
call exit@PLT
|
|
.L57:
|
|
jmp .L61
|
|
.L63:
|
|
movl -40(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -48(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %edx
|
|
movl -44(%ebp), %eax
|
|
leal 4(%eax), %ecx
|
|
movl -48(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %ecx, %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call Lcompare
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
cmpl $1, -12(%ebp)
|
|
je .L62
|
|
movl -12(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L46
|
|
.L62:
|
|
addl $1, -48(%ebp)
|
|
.L61:
|
|
movl -48(%ebp), %eax
|
|
cmpl -28(%ebp), %eax
|
|
jl .L63
|
|
movl $1, %eax
|
|
.L46:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE12:
|
|
.size Lcompare, .-Lcompare
|
|
.globl Belem
|
|
.type Belem, @function
|
|
Belem:
|
|
.LFB13:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $16, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -4(%ebp)
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -4(%ebp)
|
|
sarl 12(%ebp)
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $1, %eax
|
|
jne .L65
|
|
movl -4(%ebp), %edx
|
|
movl 12(%ebp), %eax
|
|
addl %edx, %eax
|
|
addl $4, %eax
|
|
movzbl (%eax), %eax
|
|
movsbl %al, %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
jmp .L66
|
|
.L65:
|
|
movl -4(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl 12(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
.L66:
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE13:
|
|
.size Belem, .-Belem
|
|
.globl Bstring
|
|
.type Bstring, @function
|
|
Bstring:
|
|
.LFB14:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $1, -16(%ebp)
|
|
movl $0, -12(%ebp)
|
|
call __pre_gc@PLT
|
|
subl $12, %esp
|
|
pushl 8(%ebp)
|
|
call strlen@PLT
|
|
addl $16, %esp
|
|
movl %eax, -16(%ebp)
|
|
movl -16(%ebp), %eax
|
|
addl $5, %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call alloc
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
movl -16(%ebp), %eax
|
|
sall $3, %eax
|
|
orl $1, %eax
|
|
movl %eax, %edx
|
|
movl -12(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl -16(%ebp), %eax
|
|
addl $1, %eax
|
|
movl %eax, %edx
|
|
movl -12(%ebp), %eax
|
|
addl $4, %eax
|
|
subl $4, %esp
|
|
pushl %edx
|
|
pushl 8(%ebp)
|
|
pushl %eax
|
|
call strncpy@PLT
|
|
addl $16, %esp
|
|
call __post_gc@PLT
|
|
movl -12(%ebp), %eax
|
|
addl $4, %eax
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE14:
|
|
.size Bstring, .-Bstring
|
|
.globl Bstringval
|
|
.type Bstringval, @function
|
|
Bstringval:
|
|
.LFB15:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $1, -12(%ebp)
|
|
call __pre_gc@PLT
|
|
call createStringBuf
|
|
subl $12, %esp
|
|
pushl 8(%ebp)
|
|
call printValue
|
|
addl $16, %esp
|
|
movl stringBuf@GOTOFF(%ebx), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call Bstring
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
call deleteStringBuf
|
|
call __post_gc@PLT
|
|
movl -12(%ebp), %eax
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE15:
|
|
.size Bstringval, .-Bstringval
|
|
.globl Bclosure
|
|
.type Bclosure, @function
|
|
Bclosure:
|
|
.LFB16:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $52, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 12(%ebp), %eax
|
|
movl %eax, -44(%ebp)
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -28(%ebp)
|
|
movl $1, -24(%ebp)
|
|
movl $1, -20(%ebp)
|
|
movl $1, -16(%ebp)
|
|
call __pre_gc@PLT
|
|
movl 8(%ebp), %eax
|
|
addl $2, %eax
|
|
sall $2, %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call alloc
|
|
addl $16, %esp
|
|
movl %eax, -16(%ebp)
|
|
movl 8(%ebp), %eax
|
|
addl $1, %eax
|
|
sall $3, %eax
|
|
orl $7, %eax
|
|
movl %eax, %edx
|
|
movl -16(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -44(%ebp), %eax
|
|
movl %eax, (%edx)
|
|
leal 16(%ebp), %eax
|
|
movl %eax, -28(%ebp)
|
|
movl $0, -24(%ebp)
|
|
jmp .L72
|
|
.L73:
|
|
movl -28(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl %edx, -28(%ebp)
|
|
movl (%eax), %eax
|
|
movl %eax, -20(%ebp)
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
addl $1, %eax
|
|
sall $2, %eax
|
|
addl %eax, %edx
|
|
movl -20(%ebp), %eax
|
|
movl %eax, (%edx)
|
|
addl $1, -24(%ebp)
|
|
.L72:
|
|
movl -24(%ebp), %eax
|
|
cmpl 8(%ebp), %eax
|
|
jl .L73
|
|
call __post_gc@PLT
|
|
movl -16(%ebp), %eax
|
|
addl $4, %eax
|
|
movl -12(%ebp), %ecx
|
|
xorl %gs:20, %ecx
|
|
je .L75
|
|
call __stack_chk_fail_local
|
|
.L75:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE16:
|
|
.size Bclosure, .-Bclosure
|
|
.globl Barray
|
|
.type Barray, @function
|
|
Barray:
|
|
.LFB17:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $36, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -28(%ebp)
|
|
movl $1, -24(%ebp)
|
|
movl $1, -20(%ebp)
|
|
movl $1, -16(%ebp)
|
|
call __pre_gc@PLT
|
|
movl 8(%ebp), %eax
|
|
addl $1, %eax
|
|
sall $2, %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call alloc
|
|
addl $16, %esp
|
|
movl %eax, -16(%ebp)
|
|
movl 8(%ebp), %eax
|
|
sall $3, %eax
|
|
orl $3, %eax
|
|
movl %eax, %edx
|
|
movl -16(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
leal 12(%ebp), %eax
|
|
movl %eax, -28(%ebp)
|
|
movl $0, -24(%ebp)
|
|
jmp .L77
|
|
.L78:
|
|
movl -28(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl %edx, -28(%ebp)
|
|
movl (%eax), %eax
|
|
movl %eax, -20(%ebp)
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %eax, %edx
|
|
movl -20(%ebp), %eax
|
|
movl %eax, (%edx)
|
|
addl $1, -24(%ebp)
|
|
.L77:
|
|
movl -24(%ebp), %eax
|
|
cmpl 8(%ebp), %eax
|
|
jl .L78
|
|
call __post_gc@PLT
|
|
movl -16(%ebp), %eax
|
|
addl $4, %eax
|
|
movl -12(%ebp), %ecx
|
|
xorl %gs:20, %ecx
|
|
je .L80
|
|
call __stack_chk_fail_local
|
|
.L80:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE17:
|
|
.size Barray, .-Barray
|
|
.globl Bsexp
|
|
.type Bsexp, @function
|
|
Bsexp:
|
|
.LFB18:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $36, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -36(%ebp)
|
|
movl $1, -32(%ebp)
|
|
movl $1, -28(%ebp)
|
|
movl $0, -24(%ebp)
|
|
movl $1, -20(%ebp)
|
|
movl $1, -16(%ebp)
|
|
call __pre_gc@PLT
|
|
movl 8(%ebp), %eax
|
|
addl $1, %eax
|
|
sall $2, %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call alloc
|
|
addl $16, %esp
|
|
movl %eax, -20(%ebp)
|
|
movl -20(%ebp), %eax
|
|
addl $4, %eax
|
|
movl %eax, -16(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl $0, (%eax)
|
|
movl 8(%ebp), %eax
|
|
subl $1, %eax
|
|
sall $3, %eax
|
|
orl $5, %eax
|
|
movl %eax, %edx
|
|
movl -16(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
leal 12(%ebp), %eax
|
|
movl %eax, -36(%ebp)
|
|
movl $0, -32(%ebp)
|
|
jmp .L82
|
|
.L83:
|
|
movl -36(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl %edx, -36(%ebp)
|
|
movl (%eax), %eax
|
|
movl %eax, -28(%ebp)
|
|
movl -28(%ebp), %eax
|
|
movl %eax, -24(%ebp)
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -32(%ebp), %eax
|
|
sall $2, %eax
|
|
addl %eax, %edx
|
|
movl -28(%ebp), %eax
|
|
movl %eax, (%edx)
|
|
addl $1, -32(%ebp)
|
|
.L82:
|
|
movl 8(%ebp), %eax
|
|
subl $1, %eax
|
|
cmpl %eax, -32(%ebp)
|
|
jl .L83
|
|
movl -36(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl %edx, -36(%ebp)
|
|
movl (%eax), %edx
|
|
movl -20(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
call __post_gc@PLT
|
|
movl -16(%ebp), %eax
|
|
addl $4, %eax
|
|
movl -12(%ebp), %ecx
|
|
xorl %gs:20, %ecx
|
|
je .L85
|
|
call __stack_chk_fail_local
|
|
.L85:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE18:
|
|
.size Bsexp, .-Bsexp
|
|
.globl Btag
|
|
.type Btag, @function
|
|
Btag:
|
|
.LFB19:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $16, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -4(%ebp)
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L87
|
|
movl $1, %eax
|
|
jmp .L88
|
|
.L87:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -4(%ebp)
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $5, %eax
|
|
jne .L89
|
|
movl 8(%ebp), %eax
|
|
subl $8, %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, 12(%ebp)
|
|
jne .L89
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl 16(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
jne .L89
|
|
movl $1, %eax
|
|
jmp .L90
|
|
.L89:
|
|
movl $0, %eax
|
|
.L90:
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
.L88:
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE19:
|
|
.size Btag, .-Btag
|
|
.globl Barray_patt
|
|
.type Barray_patt, @function
|
|
Barray_patt:
|
|
.LFB20:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $16, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -4(%ebp)
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L92
|
|
movl $1, %eax
|
|
jmp .L93
|
|
.L92:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -4(%ebp)
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $3, %eax
|
|
jne .L94
|
|
movl -4(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl 12(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
jne .L94
|
|
movl $1, %eax
|
|
jmp .L95
|
|
.L94:
|
|
movl $0, %eax
|
|
.L95:
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
.L93:
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE20:
|
|
.size Barray_patt, .-Barray_patt
|
|
.globl Bstring_patt
|
|
.type Bstring_patt, @function
|
|
Bstring_patt:
|
|
.LFB21:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -16(%ebp)
|
|
movl $1, -12(%ebp)
|
|
movl 8(%ebp), %edx
|
|
andl $1, %edx
|
|
testl %edx, %edx
|
|
je .L97
|
|
movl $1, %eax
|
|
jmp .L98
|
|
.L97:
|
|
movl 8(%ebp), %edx
|
|
subl $4, %edx
|
|
movl %edx, -16(%ebp)
|
|
movl 12(%ebp), %edx
|
|
subl $4, %edx
|
|
movl %edx, -12(%ebp)
|
|
movl -16(%ebp), %edx
|
|
movl (%edx), %edx
|
|
andl $7, %edx
|
|
cmpl $1, %edx
|
|
je .L99
|
|
movl $1, %eax
|
|
jmp .L98
|
|
.L99:
|
|
movl -12(%ebp), %edx
|
|
leal 4(%edx), %ecx
|
|
movl -16(%ebp), %edx
|
|
addl $4, %edx
|
|
subl $8, %esp
|
|
pushl %ecx
|
|
pushl %edx
|
|
movl %eax, %ebx
|
|
call strcmp@PLT
|
|
addl $16, %esp
|
|
testl %eax, %eax
|
|
jne .L100
|
|
movl $3, %eax
|
|
jmp .L98
|
|
.L100:
|
|
movl $1, %eax
|
|
.L98:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE21:
|
|
.size Bstring_patt, .-Bstring_patt
|
|
.globl Bclosure_tag_patt
|
|
.type Bclosure_tag_patt, @function
|
|
Bclosure_tag_patt:
|
|
.LFB22:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L103
|
|
movl $1, %eax
|
|
jmp .L104
|
|
.L103:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $7, %eax
|
|
jne .L105
|
|
movl $3, %eax
|
|
jmp .L104
|
|
.L105:
|
|
movl $1, %eax
|
|
.L104:
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE22:
|
|
.size Bclosure_tag_patt, .-Bclosure_tag_patt
|
|
.globl Bboxed_patt
|
|
.type Bboxed_patt, @function
|
|
Bboxed_patt:
|
|
.LFB23:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
jne .L108
|
|
movl $3, %eax
|
|
jmp .L110
|
|
.L108:
|
|
movl $1, %eax
|
|
.L110:
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE23:
|
|
.size Bboxed_patt, .-Bboxed_patt
|
|
.globl Bunboxed_patt
|
|
.type Bunboxed_patt, @function
|
|
Bunboxed_patt:
|
|
.LFB24:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
addl %eax, %eax
|
|
andl $2, %eax
|
|
orl $1, %eax
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE24:
|
|
.size Bunboxed_patt, .-Bunboxed_patt
|
|
.globl Barray_tag_patt
|
|
.type Barray_tag_patt, @function
|
|
Barray_tag_patt:
|
|
.LFB25:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L114
|
|
movl $1, %eax
|
|
jmp .L115
|
|
.L114:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $3, %eax
|
|
jne .L116
|
|
movl $3, %eax
|
|
jmp .L115
|
|
.L116:
|
|
movl $1, %eax
|
|
.L115:
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE25:
|
|
.size Barray_tag_patt, .-Barray_tag_patt
|
|
.globl Bstring_tag_patt
|
|
.type Bstring_tag_patt, @function
|
|
Bstring_tag_patt:
|
|
.LFB26:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L119
|
|
movl $1, %eax
|
|
jmp .L120
|
|
.L119:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $1, %eax
|
|
jne .L121
|
|
movl $3, %eax
|
|
jmp .L120
|
|
.L121:
|
|
movl $1, %eax
|
|
.L120:
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE26:
|
|
.size Bstring_tag_patt, .-Bstring_tag_patt
|
|
.globl Bsexp_tag_patt
|
|
.type Bsexp_tag_patt, @function
|
|
Bsexp_tag_patt:
|
|
.LFB27:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
je .L124
|
|
movl $1, %eax
|
|
jmp .L125
|
|
.L124:
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $5, %eax
|
|
jne .L126
|
|
movl $3, %eax
|
|
jmp .L125
|
|
.L126:
|
|
movl $1, %eax
|
|
.L125:
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE27:
|
|
.size Bsexp_tag_patt, .-Bsexp_tag_patt
|
|
.globl Bsta
|
|
.type Bsta, @function
|
|
Bsta:
|
|
.LFB28:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 16(%ebp), %eax
|
|
subl $4, %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $1, %eax
|
|
jne .L129
|
|
movl 8(%ebp), %eax
|
|
sarl %eax
|
|
movl %eax, %edx
|
|
movl 12(%ebp), %eax
|
|
sarl %eax
|
|
movl %eax, %ecx
|
|
movl 16(%ebp), %eax
|
|
addl %ecx, %eax
|
|
movb %dl, (%eax)
|
|
jmp .L130
|
|
.L129:
|
|
movl 12(%ebp), %eax
|
|
sarl %eax
|
|
leal 0(,%eax,4), %edx
|
|
movl 16(%ebp), %eax
|
|
addl %eax, %edx
|
|
movl 8(%ebp), %eax
|
|
movl %eax, (%edx)
|
|
.L130:
|
|
movl 8(%ebp), %eax
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE28:
|
|
.size Bsta, .-Bsta
|
|
.globl Lraw
|
|
.type Lraw, @function
|
|
Lraw:
|
|
.LFB29:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
sarl %eax
|
|
popl %ebp
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE29:
|
|
.size Lraw, .-Lraw
|
|
.section .rodata
|
|
.LC17:
|
|
.string "Format string: %s\n"
|
|
.LC18:
|
|
.string "First arg: %d\n"
|
|
.LC19:
|
|
.string "Second arg: %d\n"
|
|
.LC20:
|
|
.string "arg: %d\n"
|
|
.text
|
|
.globl Lprintf
|
|
.type Lprintf, @function
|
|
Lprintf:
|
|
.LFB30:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $36, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8(%ebp), %eax
|
|
movl %eax, -28(%ebp)
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -24(%ebp)
|
|
leal -28(%ebp), %eax
|
|
movl %eax, -20(%ebp)
|
|
movl -28(%ebp), %eax
|
|
movl %eax, -16(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC17@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
movl -20(%ebp), %eax
|
|
addl $4, %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC18@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
movl -20(%ebp), %eax
|
|
addl $8, %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC19@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
jmp .L135
|
|
.L137:
|
|
movl -16(%ebp), %eax
|
|
movzbl (%eax), %eax
|
|
cmpb $37, %al
|
|
jne .L136
|
|
addl $4, -20(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC20@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
.L136:
|
|
addl $1, -16(%ebp)
|
|
.L135:
|
|
movl -16(%ebp), %eax
|
|
movzbl (%eax), %eax
|
|
testb %al, %al
|
|
jne .L137
|
|
leal 12(%ebp), %eax
|
|
movl %eax, -24(%ebp)
|
|
movl -24(%ebp), %edx
|
|
movl -28(%ebp), %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call vprintf@PLT
|
|
addl $16, %esp
|
|
nop
|
|
movl -12(%ebp), %eax
|
|
xorl %gs:20, %eax
|
|
je .L138
|
|
call __stack_chk_fail_local
|
|
.L138:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE30:
|
|
.size Lprintf, .-Lprintf
|
|
.globl i__Infix_4343
|
|
.type i__Infix_4343, @function
|
|
i__Infix_4343:
|
|
.LFB31:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $1, -20(%ebp)
|
|
movl $1, -16(%ebp)
|
|
movl $1, -12(%ebp)
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -20(%ebp)
|
|
movl 12(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -16(%ebp)
|
|
call __pre_gc@PLT
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl %edx, %eax
|
|
addl $5, %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call alloc
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, %edx
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl %edx, %eax
|
|
movl %eax, %edx
|
|
movl -12(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl -20(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -12(%ebp), %eax
|
|
addl $4, %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call strcpy@PLT
|
|
addl $16, %esp
|
|
movl -16(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl -12(%ebp), %eax
|
|
addl $4, %eax
|
|
subl $8, %esp
|
|
pushl %edx
|
|
pushl %eax
|
|
call strcat@PLT
|
|
addl $16, %esp
|
|
call __post_gc@PLT
|
|
movl -12(%ebp), %eax
|
|
addl $4, %eax
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE31:
|
|
.size i__Infix_4343, .-i__Infix_4343
|
|
.globl Lfprintf
|
|
.type Lfprintf, @function
|
|
Lfprintf:
|
|
.LFB32:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $36, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %edx
|
|
movl %edx, -28(%ebp)
|
|
movl 12(%ebp), %edx
|
|
movl %edx, -32(%ebp)
|
|
movl %gs:20, %ecx
|
|
movl %ecx, -12(%ebp)
|
|
xorl %ecx, %ecx
|
|
movl $1, -16(%ebp)
|
|
leal 16(%ebp), %edx
|
|
movl %edx, -16(%ebp)
|
|
movl -16(%ebp), %edx
|
|
subl $4, %esp
|
|
pushl %edx
|
|
pushl -32(%ebp)
|
|
pushl -28(%ebp)
|
|
movl %eax, %ebx
|
|
call vfprintf@PLT
|
|
addl $16, %esp
|
|
nop
|
|
movl -12(%ebp), %eax
|
|
xorl %gs:20, %eax
|
|
je .L142
|
|
call __stack_chk_fail_local
|
|
.L142:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE32:
|
|
.size Lfprintf, .-Lfprintf
|
|
.globl Lfopen
|
|
.type Lfopen, @function
|
|
Lfopen:
|
|
.LFB33:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
subl $8, %esp
|
|
pushl 12(%ebp)
|
|
pushl 8(%ebp)
|
|
movl %eax, %ebx
|
|
call fopen@PLT
|
|
addl $16, %esp
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE33:
|
|
.size Lfopen, .-Lfopen
|
|
.globl Lfclose
|
|
.type Lfclose, @function
|
|
Lfclose:
|
|
.LFB34:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
subl $12, %esp
|
|
pushl 8(%ebp)
|
|
movl %eax, %ebx
|
|
call fclose@PLT
|
|
addl $16, %esp
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE34:
|
|
.size Lfclose, .-Lfclose
|
|
.section .rodata
|
|
.LC21:
|
|
.string "> "
|
|
.text
|
|
.globl Lread
|
|
.type Lread, @function
|
|
Lread:
|
|
.LFB35:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl %gs:20, %eax
|
|
movl %eax, -12(%ebp)
|
|
xorl %eax, %eax
|
|
movl $1, -16(%ebp)
|
|
subl $12, %esp
|
|
leal .LC21@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
movl stdout@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call fflush@PLT
|
|
addl $16, %esp
|
|
subl $8, %esp
|
|
leal -16(%ebp), %eax
|
|
pushl %eax
|
|
leal .LC1@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call __isoc99_scanf@PLT
|
|
addl $16, %esp
|
|
movl -16(%ebp), %eax
|
|
addl %eax, %eax
|
|
orl $1, %eax
|
|
movl -12(%ebp), %edx
|
|
xorl %gs:20, %edx
|
|
je .L148
|
|
call __stack_chk_fail_local
|
|
.L148:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE35:
|
|
.size Lread, .-Lread
|
|
.section .rodata
|
|
.LC22:
|
|
.string "%d\n"
|
|
.text
|
|
.globl Lwrite
|
|
.type Lwrite, @function
|
|
Lwrite:
|
|
.LFB36:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8(%ebp), %eax
|
|
sarl %eax
|
|
subl $8, %esp
|
|
pushl %eax
|
|
leal .LC22@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call printf@PLT
|
|
addl $16, %esp
|
|
movl stdout@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call fflush@PLT
|
|
addl $16, %esp
|
|
movl $0, %eax
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE36:
|
|
.size Lwrite, .-Lwrite
|
|
.data
|
|
.align 4
|
|
.type SPACE_SIZE, @object
|
|
.size SPACE_SIZE, 4
|
|
SPACE_SIZE:
|
|
.long 1280
|
|
.text
|
|
.type swap, @function
|
|
swap:
|
|
.LFB37:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $16, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -4(%ebp)
|
|
movl 12(%ebp), %eax
|
|
movl (%eax), %edx
|
|
movl 8(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl 12(%ebp), %eax
|
|
movl -4(%ebp), %edx
|
|
movl %edx, (%eax)
|
|
nop
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE37:
|
|
.size swap, .-swap
|
|
.type gc_swap_spaces, @function
|
|
gc_swap_spaces:
|
|
.LFB38:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
leal to_space@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
leal from_space@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call swap
|
|
addl $8, %esp
|
|
leal 4+to_space@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
leal 4+from_space@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call swap
|
|
addl $8, %esp
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, 8+from_space@GOTOFF(%ebx)
|
|
movl to_space@GOTOFF(%ebx), %eax
|
|
movl %eax, 8+to_space@GOTOFF(%ebx)
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE38:
|
|
.size gc_swap_spaces, .-gc_swap_spaces
|
|
.type copy_elements, @function
|
|
copy_elements:
|
|
.LFB39:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $0, -20(%ebp)
|
|
movl $0, -16(%ebp)
|
|
movl $0, -20(%ebp)
|
|
jmp .L154
|
|
.L158:
|
|
movl -20(%ebp), %eax
|
|
leal 0(,%eax,4), %edx
|
|
movl 12(%ebp), %eax
|
|
addl %edx, %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -12(%ebp)
|
|
movl -12(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
jne .L155
|
|
movl from_space@GOTOFF(%ebx), %edx
|
|
movl -12(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
ja .L155
|
|
movl 4+from_space@GOTOFF(%ebx), %edx
|
|
movl -12(%ebp), %eax
|
|
cmpl %eax, %edx
|
|
ja .L156
|
|
.L155:
|
|
movl 8(%ebp), %eax
|
|
movl -12(%ebp), %edx
|
|
movl %edx, (%eax)
|
|
addl $4, 8(%ebp)
|
|
jmp .L157
|
|
.L156:
|
|
movl -12(%ebp), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call gc_copy
|
|
addl $16, %esp
|
|
movl %eax, -16(%ebp)
|
|
movl -16(%ebp), %edx
|
|
movl 8(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, 8(%ebp)
|
|
.L157:
|
|
addl $1, -20(%ebp)
|
|
.L154:
|
|
movl -20(%ebp), %eax
|
|
cmpl 16(%ebp), %eax
|
|
jl .L158
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE39:
|
|
.size copy_elements, .-copy_elements
|
|
.section .rodata
|
|
.align 4
|
|
.LC23:
|
|
.string "EROOR: extend_spaces: mmap failed\n"
|
|
.text
|
|
.type extend_spaces, @function
|
|
extend_spaces:
|
|
.LFB40:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl $1, -24(%ebp)
|
|
movl $1, -20(%ebp)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
sall $2, %eax
|
|
movl %eax, -16(%ebp)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
sall $3, %eax
|
|
movl %eax, -12(%ebp)
|
|
movl from_space@GOTOFF(%ebx), %eax
|
|
pushl $0
|
|
pushl -12(%ebp)
|
|
pushl -16(%ebp)
|
|
pushl %eax
|
|
call mremap@PLT
|
|
addl $16, %esp
|
|
movl %eax, -24(%ebp)
|
|
movl to_space@GOTOFF(%ebx), %eax
|
|
pushl $0
|
|
pushl -12(%ebp)
|
|
pushl -16(%ebp)
|
|
pushl %eax
|
|
call mremap@PLT
|
|
addl $16, %esp
|
|
movl %eax, -20(%ebp)
|
|
cmpl $-1, -24(%ebp)
|
|
je .L160
|
|
cmpl $-1, -20(%ebp)
|
|
jne .L161
|
|
.L160:
|
|
subl $12, %esp
|
|
leal .LC23@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call perror@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $1
|
|
call exit@PLT
|
|
.L161:
|
|
movl 4+from_space@GOTOFF(%ebx), %eax
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %edx
|
|
sall $2, %edx
|
|
addl %edx, %eax
|
|
movl %eax, 4+from_space@GOTOFF(%ebx)
|
|
movl 4+to_space@GOTOFF(%ebx), %eax
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %edx
|
|
sall $2, %edx
|
|
addl %edx, %eax
|
|
movl %eax, 4+to_space@GOTOFF(%ebx)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
addl %eax, %eax
|
|
movl %eax, SPACE_SIZE@GOTOFF(%ebx)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
movl %eax, 12+from_space@GOTOFF(%ebx)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
movl %eax, 12+to_space@GOTOFF(%ebx)
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE40:
|
|
.size extend_spaces, .-extend_spaces
|
|
.section .rodata
|
|
.LC24:
|
|
.string "ERROR: gc_copy: out-of-space\n"
|
|
.LC25:
|
|
.string "ERROR: gc_copy: weird tag"
|
|
.text
|
|
.globl gc_copy
|
|
.type gc_copy, @function
|
|
gc_copy:
|
|
.LFB41:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl 8(%ebp), %eax
|
|
subl $4, %eax
|
|
movl %eax, -20(%ebp)
|
|
movl $0, -16(%ebp)
|
|
movl $0, -24(%ebp)
|
|
movl $0, -12(%ebp)
|
|
movl 8(%ebp), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
jne .L163
|
|
movl from_space@GOTOFF(%ebx), %eax
|
|
cmpl %eax, 8(%ebp)
|
|
jb .L163
|
|
movl 4+from_space@GOTOFF(%ebx), %eax
|
|
cmpl %eax, 8(%ebp)
|
|
jb .L164
|
|
.L163:
|
|
movl 8(%ebp), %eax
|
|
jmp .L165
|
|
.L164:
|
|
movl to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L166
|
|
movl 4+to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L167
|
|
.L166:
|
|
movl 4+to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
je .L167
|
|
subl $12, %esp
|
|
leal .LC24@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call perror@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $1
|
|
call exit@PLT
|
|
.L167:
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $1, %eax
|
|
testl %eax, %eax
|
|
jne .L168
|
|
movl to_space@GOTOFF(%ebx), %edx
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L168
|
|
movl 4+to_space@GOTOFF(%ebx), %edx
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
jbe .L168
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
jmp .L165
|
|
.L168:
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, -24(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
andl $7, %eax
|
|
cmpl $3, %eax
|
|
je .L170
|
|
cmpl $3, %eax
|
|
jg .L171
|
|
cmpl $1, %eax
|
|
je .L172
|
|
jmp .L169
|
|
.L171:
|
|
cmpl $5, %eax
|
|
je .L173
|
|
cmpl $7, %eax
|
|
jne .L169
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %edx
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl $1, %eax
|
|
sall $4, %eax
|
|
addl %eax, %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl %edx, (%eax)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, -24(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
subl $1, %eax
|
|
movl %eax, -12(%ebp)
|
|
movl -24(%ebp), %edx
|
|
movl -20(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl 8(%ebp), %eax
|
|
movl (%eax), %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
movl 8(%ebp), %eax
|
|
leal 4(%eax), %edx
|
|
movl %edx, 8(%ebp)
|
|
subl $4, %esp
|
|
pushl -12(%ebp)
|
|
pushl %eax
|
|
pushl -24(%ebp)
|
|
call copy_elements
|
|
addl $16, %esp
|
|
jmp .L175
|
|
.L170:
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %edx
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl $1, %eax
|
|
sall $4, %eax
|
|
addl %eax, %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl %edx, (%eax)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, -24(%ebp)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, -12(%ebp)
|
|
movl -24(%ebp), %edx
|
|
movl -20(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
subl $4, %esp
|
|
pushl -12(%ebp)
|
|
pushl 8(%ebp)
|
|
pushl -24(%ebp)
|
|
call copy_elements
|
|
addl $16, %esp
|
|
jmp .L175
|
|
.L172:
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %edx
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
shrl $3, %eax
|
|
addl $4, %eax
|
|
sall $2, %eax
|
|
addl %eax, %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl %edx, (%eax)
|
|
movl -20(%ebp), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, -24(%ebp)
|
|
movl -24(%ebp), %edx
|
|
movl -20(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
subl $8, %esp
|
|
pushl 8(%ebp)
|
|
pushl -24(%ebp)
|
|
call strcpy@PLT
|
|
addl $16, %esp
|
|
jmp .L175
|
|
.L173:
|
|
movl 8(%ebp), %eax
|
|
subl $8, %eax
|
|
movl %eax, -16(%ebp)
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %edx
|
|
movl -16(%ebp), %eax
|
|
movl 4(%eax), %eax
|
|
shrl $3, %eax
|
|
addl $2, %eax
|
|
sall $4, %eax
|
|
addl %eax, %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl %edx, (%eax)
|
|
movl -16(%ebp), %eax
|
|
movl (%eax), %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, -24(%ebp)
|
|
movl -16(%ebp), %eax
|
|
movl 4(%eax), %eax
|
|
movl %eax, %edx
|
|
movl -24(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
addl $4, -24(%ebp)
|
|
movl -16(%ebp), %eax
|
|
movl 4(%eax), %eax
|
|
shrl $3, %eax
|
|
movl %eax, -12(%ebp)
|
|
movl -24(%ebp), %edx
|
|
movl -20(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
subl $4, %esp
|
|
pushl -12(%ebp)
|
|
pushl 8(%ebp)
|
|
pushl -24(%ebp)
|
|
call copy_elements
|
|
addl $16, %esp
|
|
jmp .L175
|
|
.L169:
|
|
subl $12, %esp
|
|
leal .LC25@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call perror@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $1
|
|
call exit@PLT
|
|
.L175:
|
|
movl -24(%ebp), %eax
|
|
.L165:
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE41:
|
|
.size gc_copy, .-gc_copy
|
|
.globl gc_test_and_copy_root
|
|
.type gc_test_and_copy_root, @function
|
|
gc_test_and_copy_root:
|
|
.LFB42:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $8, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %edx
|
|
movl (%edx), %edx
|
|
andl $1, %edx
|
|
testl %edx, %edx
|
|
jne .L178
|
|
movl from_space@GOTOFF(%eax), %ecx
|
|
movl 8(%ebp), %edx
|
|
movl (%edx), %edx
|
|
cmpl %edx, %ecx
|
|
ja .L178
|
|
movl 4+from_space@GOTOFF(%eax), %edx
|
|
movl 8(%ebp), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
jbe .L178
|
|
movl 8(%ebp), %eax
|
|
movl (%eax), %eax
|
|
subl $12, %esp
|
|
pushl %eax
|
|
call gc_copy
|
|
addl $16, %esp
|
|
movl %eax, %edx
|
|
movl 8(%ebp), %eax
|
|
movl %edx, (%eax)
|
|
.L178:
|
|
nop
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE42:
|
|
.size gc_test_and_copy_root, .-gc_test_and_copy_root
|
|
.globl gc_root_scan_data
|
|
.type gc_root_scan_data, @function
|
|
gc_root_scan_data:
|
|
.LFB43:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl __gc_data_start@GOT(%ebx), %eax
|
|
movl %eax, -12(%ebp)
|
|
jmp .L180
|
|
.L181:
|
|
subl $12, %esp
|
|
pushl -12(%ebp)
|
|
call gc_test_and_copy_root
|
|
addl $16, %esp
|
|
addl $4, -12(%ebp)
|
|
.L180:
|
|
movl __gc_data_end@GOT(%ebx), %eax
|
|
cmpl %eax, -12(%ebp)
|
|
jne .L181
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE43:
|
|
.size gc_root_scan_data, .-gc_root_scan_data
|
|
.section .rodata
|
|
.align 4
|
|
.LC26:
|
|
.string "EROOR: init_pool: mmap failed\n"
|
|
.text
|
|
.globl init_pool
|
|
.type init_pool, @function
|
|
init_pool:
|
|
.LFB44:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $20, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
sall $2, %eax
|
|
movl %eax, -12(%ebp)
|
|
subl $8, %esp
|
|
pushl $0
|
|
pushl $-1
|
|
pushl $98
|
|
pushl $3
|
|
pushl -12(%ebp)
|
|
pushl $0
|
|
call mmap@PLT
|
|
addl $32, %esp
|
|
movl %eax, from_space@GOTOFF(%ebx)
|
|
subl $8, %esp
|
|
pushl $0
|
|
pushl $-1
|
|
pushl $98
|
|
pushl $3
|
|
pushl -12(%ebp)
|
|
pushl $0
|
|
call mmap@PLT
|
|
addl $32, %esp
|
|
movl %eax, to_space@GOTOFF(%ebx)
|
|
movl to_space@GOTOFF(%ebx), %eax
|
|
cmpl $-1, %eax
|
|
je .L183
|
|
movl from_space@GOTOFF(%ebx), %eax
|
|
cmpl $-1, %eax
|
|
jne .L184
|
|
.L183:
|
|
subl $12, %esp
|
|
leal .LC26@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call perror@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $1
|
|
call exit@PLT
|
|
.L184:
|
|
movl from_space@GOTOFF(%ebx), %eax
|
|
movl %eax, 8+from_space@GOTOFF(%ebx)
|
|
movl from_space@GOTOFF(%ebx), %eax
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %edx
|
|
sall $2, %edx
|
|
addl %edx, %eax
|
|
movl %eax, 4+from_space@GOTOFF(%ebx)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
movl %eax, 12+from_space@GOTOFF(%ebx)
|
|
movl to_space@GOTOFF(%ebx), %eax
|
|
movl %eax, 8+to_space@GOTOFF(%ebx)
|
|
movl to_space@GOTOFF(%ebx), %eax
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %edx
|
|
sall $2, %edx
|
|
addl %edx, %eax
|
|
movl %eax, 4+to_space@GOTOFF(%ebx)
|
|
movl SPACE_SIZE@GOTOFF(%ebx), %eax
|
|
movl %eax, 12+to_space@GOTOFF(%ebx)
|
|
nop
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE44:
|
|
.size init_pool, .-init_pool
|
|
.type free_pool, @function
|
|
free_pool:
|
|
.LFB45:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl 8(%ebp), %edx
|
|
movl 12(%edx), %ecx
|
|
movl 8(%ebp), %edx
|
|
movl (%edx), %edx
|
|
subl $8, %esp
|
|
pushl %ecx
|
|
pushl %edx
|
|
movl %eax, %ebx
|
|
call munmap@PLT
|
|
addl $16, %esp
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE45:
|
|
.size free_pool, .-free_pool
|
|
.section .rodata
|
|
.align 4
|
|
.LC27:
|
|
.string "ASSERT: !IN_PASSIVE_SPACE(current)\n"
|
|
.LC28:
|
|
.string "runtime.c"
|
|
.LC29:
|
|
.string "IN_PASSIVE_SPACE(current)"
|
|
.LC30:
|
|
.string "current + size < to_space.end"
|
|
.text
|
|
.type gc, @function
|
|
gc:
|
|
.LFB46:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
pushl %ebx
|
|
subl $4, %esp
|
|
.cfi_offset 3, -12
|
|
call __x86.get_pc_thunk.bx
|
|
addl $_GLOBAL_OFFSET_TABLE_, %ebx
|
|
movl to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl %edx, (%eax)
|
|
call gc_root_scan_data
|
|
call __gc_root_scan_stack@PLT
|
|
movl to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L188
|
|
movl 4+to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L190
|
|
.L188:
|
|
subl $12, %esp
|
|
leal .LC27@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call perror@PLT
|
|
addl $16, %esp
|
|
subl $12, %esp
|
|
pushl $1
|
|
call exit@PLT
|
|
.L191:
|
|
call extend_spaces
|
|
.L190:
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl 8(%ebp), %edx
|
|
sall $2, %edx
|
|
addl %eax, %edx
|
|
movl 4+to_space@GOTOFF(%ebx), %eax
|
|
cmpl %eax, %edx
|
|
jnb .L191
|
|
movl to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L192
|
|
movl 4+to_space@GOTOFF(%ebx), %edx
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
cmpl %eax, %edx
|
|
ja .L196
|
|
.L192:
|
|
leal __PRETTY_FUNCTION__.2918@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
pushl $865
|
|
leal .LC28@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
leal .LC29@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call __assert_fail@PLT
|
|
.L196:
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl 8(%ebp), %edx
|
|
sall $2, %edx
|
|
addl %eax, %edx
|
|
movl 4+to_space@GOTOFF(%ebx), %eax
|
|
cmpl %eax, %edx
|
|
jb .L194
|
|
leal __PRETTY_FUNCTION__.2918@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
pushl $866
|
|
leal .LC28@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
leal .LC30@GOTOFF(%ebx), %eax
|
|
pushl %eax
|
|
call __assert_fail@PLT
|
|
.L194:
|
|
call gc_swap_spaces
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl 8(%ebp), %edx
|
|
sall $2, %edx
|
|
addl %edx, %eax
|
|
movl %eax, 8+from_space@GOTOFF(%ebx)
|
|
movl current@GOT(%ebx), %eax
|
|
movl (%eax), %eax
|
|
movl -4(%ebp), %ebx
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_restore 3
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE46:
|
|
.size gc, .-gc
|
|
.globl alloc
|
|
.type alloc, @function
|
|
alloc:
|
|
.LFB47:
|
|
.cfi_startproc
|
|
pushl %ebp
|
|
.cfi_def_cfa_offset 8
|
|
.cfi_offset 5, -8
|
|
movl %esp, %ebp
|
|
.cfi_def_cfa_register 5
|
|
subl $24, %esp
|
|
call __x86.get_pc_thunk.ax
|
|
addl $_GLOBAL_OFFSET_TABLE_, %eax
|
|
movl $1, -12(%ebp)
|
|
movl 8+from_space@GOTOFF(%eax), %edx
|
|
movl 8(%ebp), %ecx
|
|
sall $2, %ecx
|
|
addl %edx, %ecx
|
|
movl 4+from_space@GOTOFF(%eax), %edx
|
|
cmpl %edx, %ecx
|
|
jnb .L198
|
|
movl 8+from_space@GOTOFF(%eax), %edx
|
|
movl %edx, -12(%ebp)
|
|
movl 8+from_space@GOTOFF(%eax), %edx
|
|
movl 8(%ebp), %ecx
|
|
sall $2, %ecx
|
|
addl %ecx, %edx
|
|
movl %edx, 8+from_space@GOTOFF(%eax)
|
|
movl -12(%ebp), %eax
|
|
jmp .L199
|
|
.L198:
|
|
subl $12, %esp
|
|
pushl 8(%ebp)
|
|
call gc
|
|
addl $16, %esp
|
|
movl %eax, -12(%ebp)
|
|
subl $12, %esp
|
|
pushl 8(%ebp)
|
|
call gc
|
|
addl $16, %esp
|
|
.L199:
|
|
leave
|
|
.cfi_restore 5
|
|
.cfi_def_cfa 4, 4
|
|
ret
|
|
.cfi_endproc
|
|
.LFE47:
|
|
.size alloc, .-alloc
|
|
.data
|
|
.align 4
|
|
.type chars.2648, @object
|
|
.size chars.2648, 4
|
|
chars.2648:
|
|
.long 1
|
|
.local buf.2649
|
|
.comm buf.2649,6,4
|
|
.section .rodata
|
|
.type __PRETTY_FUNCTION__.2918, @object
|
|
.size __PRETTY_FUNCTION__.2918, 3
|
|
__PRETTY_FUNCTION__.2918:
|
|
.string "gc"
|
|
.section .text.__x86.get_pc_thunk.ax,"axG",@progbits,__x86.get_pc_thunk.ax,comdat
|
|
.globl __x86.get_pc_thunk.ax
|
|
.hidden __x86.get_pc_thunk.ax
|
|
.type __x86.get_pc_thunk.ax, @function
|
|
__x86.get_pc_thunk.ax:
|
|
.LFB48:
|
|
.cfi_startproc
|
|
movl (%esp), %eax
|
|
ret
|
|
.cfi_endproc
|
|
.LFE48:
|
|
.section .text.__x86.get_pc_thunk.bx,"axG",@progbits,__x86.get_pc_thunk.bx,comdat
|
|
.globl __x86.get_pc_thunk.bx
|
|
.hidden __x86.get_pc_thunk.bx
|
|
.type __x86.get_pc_thunk.bx, @function
|
|
__x86.get_pc_thunk.bx:
|
|
.LFB49:
|
|
.cfi_startproc
|
|
movl (%esp), %ebx
|
|
ret
|
|
.cfi_endproc
|
|
.LFE49:
|
|
.hidden __stack_chk_fail_local
|
|
.ident "GCC: (Ubuntu 7.4.0-1ubuntu1~18.04.1) 7.4.0"
|
|
.section .note.GNU-stack,"",@progbits
|