mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-10-21 01:21:35 +02:00
210 lines
4.0 KiB
ArmAsm
210 lines
4.0 KiB
ArmAsm
.file "crt0.c"
|
|
.globl __progname
|
|
.section .rodata
|
|
.LC0:
|
|
.string ""
|
|
.section .data.rel.local,"aw",@progbits
|
|
.align 8
|
|
.type __progname, @object
|
|
.size __progname, 8
|
|
__progname:
|
|
.quad .LC0
|
|
#APP
|
|
.text ; .align 8 ; .globl __start ; .globl _start ;_start: ;__start: ; movq %rbx,%r9 ; movq %rcx,%r8 ; movq %rdx,%rcx ; movq (%rsp),%rdi ; leaq 16(%rsp,%rdi,8),%rdx ; leaq 8(%rsp),%rsi ; subq $8,%rsp ; andq $~15,%rsp ; addq $8,%rsp ; jmp ___start ;
|
|
#NO_APP
|
|
.text
|
|
.globl ___start
|
|
.type ___start, @function
|
|
___start:
|
|
.LFB9:
|
|
pushq %rbp
|
|
.LCFI0:
|
|
movq %rsp, %rbp
|
|
.LCFI1:
|
|
subq $64, %rsp
|
|
.LCFI2:
|
|
movl %edi, -20(%rbp)
|
|
movq %rsi, -32(%rbp)
|
|
movq %rdx, -40(%rbp)
|
|
movq %rcx, -48(%rbp)
|
|
movq %r8, -56(%rbp)
|
|
movq %r9, -64(%rbp)
|
|
movq environ@GOTPCREL(%rip), %rdx
|
|
movq -40(%rbp), %rax
|
|
movq %rax, (%rdx)
|
|
movq operatingsystem_parameter_envp@GOTPCREL(%rip), %rdx
|
|
movq -40(%rbp), %rax
|
|
movq %rax, (%rdx)
|
|
movl -20(%rbp), %eax
|
|
movslq %eax,%rdx
|
|
movq operatingsystem_parameter_argc@GOTPCREL(%rip), %rax
|
|
movq %rdx, (%rax)
|
|
movq operatingsystem_parameter_argv@GOTPCREL(%rip), %rdx
|
|
movq -32(%rbp), %rax
|
|
movq %rax, (%rdx)
|
|
movq -32(%rbp), %rax
|
|
movq (%rax), %rax
|
|
movq %rax, -8(%rbp)
|
|
cmpq $0, -8(%rbp)
|
|
je .L2
|
|
movq -8(%rbp), %rdi
|
|
movl $47, %esi
|
|
call _strrchr
|
|
movq %rax, %rdx
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq %rdx, (%rax)
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq (%rax), %rax
|
|
testq %rax, %rax
|
|
jne .L4
|
|
movq __progname@GOTPCREL(%rip), %rdx
|
|
movq -8(%rbp), %rax
|
|
movq %rax, (%rdx)
|
|
jmp .L6
|
|
.L4:
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq (%rax), %rax
|
|
leaq 1(%rax), %rdx
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq %rdx, (%rax)
|
|
.L6:
|
|
movq __progname_storage@GOTPCREL(%rip), %rax
|
|
movq %rax, -16(%rbp)
|
|
jmp .L7
|
|
.L8:
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq (%rax), %rcx
|
|
movzbl (%rcx), %edx
|
|
movq -16(%rbp), %rax
|
|
movb %dl, (%rax)
|
|
addq $1, -16(%rbp)
|
|
leaq 1(%rcx), %rdx
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq %rdx, (%rax)
|
|
.L7:
|
|
movq __progname@GOTPCREL(%rip), %rax
|
|
movq (%rax), %rax
|
|
movzbl (%rax), %eax
|
|
testb %al, %al
|
|
je .L9
|
|
movq __progname_storage@GOTPCREL(%rip), %rax
|
|
leaq 255(%rax), %rax
|
|
cmpq %rax, -16(%rbp)
|
|
jb .L8
|
|
.L9:
|
|
movq -16(%rbp), %rax
|
|
movb $0, (%rax)
|
|
movq __progname@GOTPCREL(%rip), %rdx
|
|
movq __progname_storage@GOTPCREL(%rip), %rax
|
|
movq %rax, (%rdx)
|
|
.L2:
|
|
movl $0, %eax
|
|
call __init@PLT
|
|
movq environ@GOTPCREL(%rip), %rax
|
|
movq (%rax), %rdx
|
|
movq -32(%rbp), %rsi
|
|
movl -20(%rbp), %edi
|
|
movl $0, %eax
|
|
call main@PLT
|
|
movl %eax, %edi
|
|
call exit@PLT
|
|
.LFE9:
|
|
.size ___start, .-___start
|
|
.type _strrchr, @function
|
|
_strrchr:
|
|
.LFB10:
|
|
pushq %rbp
|
|
.LCFI3:
|
|
movq %rsp, %rbp
|
|
.LCFI4:
|
|
movq %rdi, -24(%rbp)
|
|
movb %sil, -25(%rbp)
|
|
movq $0, -8(%rbp)
|
|
.L13:
|
|
movq -24(%rbp), %rdx
|
|
movzbl (%rdx), %eax
|
|
cmpb -25(%rbp), %al
|
|
jne .L14
|
|
movq -24(%rbp), %rax
|
|
movq %rax, -8(%rbp)
|
|
.L14:
|
|
movq -24(%rbp), %rdx
|
|
movzbl (%rdx), %eax
|
|
testb %al, %al
|
|
jne .L16
|
|
movq -8(%rbp), %rax
|
|
movq %rax, -16(%rbp)
|
|
jmp .L12
|
|
.L16:
|
|
addq $1, -24(%rbp)
|
|
jmp .L13
|
|
.L12:
|
|
movq -16(%rbp), %rax
|
|
leave
|
|
ret
|
|
.LFE10:
|
|
.size _strrchr, .-_strrchr
|
|
.comm environ,8,8
|
|
.comm operatingsystem_parameter_envp,8,8
|
|
.comm operatingsystem_parameter_argc,8,8
|
|
.comm operatingsystem_parameter_argv,8,8
|
|
.comm __progname_storage,256,32
|
|
.section .eh_frame,"a",@progbits
|
|
.Lframe1:
|
|
.long .LECIE1-.LSCIE1
|
|
.LSCIE1:
|
|
.long 0x0
|
|
.byte 0x1
|
|
.string "zR"
|
|
.uleb128 0x1
|
|
.sleb128 -8
|
|
.byte 0x10
|
|
.uleb128 0x1
|
|
.byte 0x1b
|
|
.byte 0xc
|
|
.uleb128 0x7
|
|
.uleb128 0x8
|
|
.byte 0x90
|
|
.uleb128 0x1
|
|
.align 8
|
|
.LECIE1:
|
|
.LSFDE1:
|
|
.long .LEFDE1-.LASFDE1
|
|
.LASFDE1:
|
|
.long .LASFDE1-.Lframe1
|
|
.long .LFB9-.
|
|
.long .LFE9-.LFB9
|
|
.uleb128 0x0
|
|
.byte 0x4
|
|
.long .LCFI0-.LFB9
|
|
.byte 0xe
|
|
.uleb128 0x10
|
|
.byte 0x86
|
|
.uleb128 0x2
|
|
.byte 0x4
|
|
.long .LCFI1-.LCFI0
|
|
.byte 0xd
|
|
.uleb128 0x6
|
|
.align 8
|
|
.LEFDE1:
|
|
.LSFDE3:
|
|
.long .LEFDE3-.LASFDE3
|
|
.LASFDE3:
|
|
.long .LASFDE3-.Lframe1
|
|
.long .LFB10-.
|
|
.long .LFE10-.LFB10
|
|
.uleb128 0x0
|
|
.byte 0x4
|
|
.long .LCFI3-.LFB10
|
|
.byte 0xe
|
|
.uleb128 0x10
|
|
.byte 0x86
|
|
.uleb128 0x2
|
|
.byte 0x4
|
|
.long .LCFI4-.LCFI3
|
|
.byte 0xd
|
|
.uleb128 0x6
|
|
.align 8
|
|
.LEFDE3:
|
|
.ident "GCC: (GNU) 4.2.1 20070719 "
|