История изменений
Исправление EXL, (текущая версия) :
что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.
Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf()
на какой-нибудь быстрый puts()
:
$ cat hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
.file "hello.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello, World!"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
leaq .LC0(%rip), %rdi
subq $8, %rsp
.cfi_def_cfa_offset 16
call puts@PLT /* <================ */
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20171224"
.section .note.GNU-stack,"",@progbits
:D
Исправление EXL, :
что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.
Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf()
на какой-нибудь быстрый puts()
:
$ cat hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
.file "hello.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello, World!"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
leaq .LC0(%rip), %rdi
subq $8, %rsp
.cfi_def_cfa_offset 16
call puts@PLT
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20171224"
.section .note.GNU-stack,"",@progbits
:D
Исходная версия EXL, :
что в любом проекте сложнее «hello world» компилятор тебя уделяет и по скорости написания, как и по скорости исполнения.
Кстати, на Hello World'е тоже может уделать, заменив вызов более медленной функции printf()
на какой-нибудь puts()
$ cat hello.c
#include <stdio.h>
int main(void) {
printf("Hello, World!\n");
return 0;
}
$ gcc -O3 -S hello.c
$ cat hello.s
.file "hello.c"
.section .rodata.str1.1,"aMS",@progbits,1
.LC0:
.string "Hello, World!"
.section .text.startup,"ax",@progbits
.p2align 4,,15
.globl main
.type main, @function
main:
.LFB11:
.cfi_startproc
leaq .LC0(%rip), %rdi
subq $8, %rsp
.cfi_def_cfa_offset 16
call puts@PLT
xorl %eax, %eax
addq $8, %rsp
.cfi_def_cfa_offset 8
ret
.cfi_endproc
.LFE11:
.size main, .-main
.ident "GCC: (GNU) 7.2.1 20171224"
.section .note.GNU-stack,"",@progbits
:D