LINUX.ORG.RU

История изменений

Исправление LINUX-ORG-RU, (текущая версия) :

/* коперигхт Ц ЛИНУКС-ORG-РУ, всюе прова резервед */
#include <stdio.h>
int main(int argc, char *argv[])
{
    char out[256]={0}; 
    char*ptr=out;
    while(*argv[1]++ && *ptr ){ switch(*argv[1])
    {
        case ' ' : break;
        default  : *ptr=*argv[1];ptr++;break;
    }}
    puts(out);
    return 0;
}

gcc fast.c -03 -msse -S

	.file	"fast.c"
	.text
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB11:
	.cfi_startproc
	subq	$264, %rsp
	.cfi_def_cfa_offset 272
	pxor	%xmm0, %xmm0
	movq	8(%rsi), %rcx
	movq	%rsp, %r8
	movups	%xmm0, (%rsp)
	movups	%xmm0, 16(%rsp)
	movq	%r8, %rdi
	movups	%xmm0, 32(%rsp)
	movups	%xmm0, 48(%rsp)
	movups	%xmm0, 64(%rsp)
	movups	%xmm0, 80(%rsp)
	movups	%xmm0, 96(%rsp)
	movups	%xmm0, 112(%rsp)
	movups	%xmm0, 128(%rsp)
	movups	%xmm0, 144(%rsp)
	movups	%xmm0, 160(%rsp)
	movups	%xmm0, 176(%rsp)
	movups	%xmm0, 192(%rsp)
	movups	%xmm0, 208(%rsp)
	movups	%xmm0, 224(%rsp)
	movups	%xmm0, 240(%rsp)
.L2:
	leaq	1(%rcx), %rax
	.p2align 4,,10
	.p2align 3
.L3:
	movq	%rax, 8(%rsi)
	cmpb	$0, -1(%rax)
	movq	%rax, %rcx
	jne	.L4
	cmpb	$0, (%rdi)
	je	.L9
.L4:
	movzbl	(%rax), %edx
	addq	$1, %rax
	cmpb	$32, %dl
	je	.L3
	movb	%dl, (%rdi)
	addq	$1, %rdi
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movq	%r8, %rdi
	call	puts@PLT
	xorl	%eax, %eax
	addq	$264, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE11:
	.size	main, .-main
	.ident	"GCC: (Debian 10.2.1-3) 10.2.1 20201224"
	.section	.note.GNU-stack,"",@progbits

Исправление LINUX-ORG-RU, :

/* коперигхт Ц ЛИНУКС-ORG-РУ, всюе прова резервед */
#include <stdio.h>
int main(int argc, char *argv[])
{
    char out[256]={0}; 
    char*ptr=out;
    while(*argv[1]++ || *ptr ){ switch(*argv[1])
    {
        case ' ' : break;
        default  : *ptr=*argv[1];ptr++;break;
    }}
    puts(out);
    return 0;
}

gcc fast.c -03 -msse -S

	.file	"fast.c"
	.text
	.section	.text.startup,"ax",@progbits
	.p2align 4
	.globl	main
	.type	main, @function
main:
.LFB11:
	.cfi_startproc
	subq	$264, %rsp
	.cfi_def_cfa_offset 272
	pxor	%xmm0, %xmm0
	movq	8(%rsi), %rcx
	movq	%rsp, %r8
	movups	%xmm0, (%rsp)
	movups	%xmm0, 16(%rsp)
	movq	%r8, %rdi
	movups	%xmm0, 32(%rsp)
	movups	%xmm0, 48(%rsp)
	movups	%xmm0, 64(%rsp)
	movups	%xmm0, 80(%rsp)
	movups	%xmm0, 96(%rsp)
	movups	%xmm0, 112(%rsp)
	movups	%xmm0, 128(%rsp)
	movups	%xmm0, 144(%rsp)
	movups	%xmm0, 160(%rsp)
	movups	%xmm0, 176(%rsp)
	movups	%xmm0, 192(%rsp)
	movups	%xmm0, 208(%rsp)
	movups	%xmm0, 224(%rsp)
	movups	%xmm0, 240(%rsp)
.L2:
	leaq	1(%rcx), %rax
	.p2align 4,,10
	.p2align 3
.L3:
	movq	%rax, 8(%rsi)
	cmpb	$0, -1(%rax)
	movq	%rax, %rcx
	jne	.L4
	cmpb	$0, (%rdi)
	je	.L9
.L4:
	movzbl	(%rax), %edx
	addq	$1, %rax
	cmpb	$32, %dl
	je	.L3
	movb	%dl, (%rdi)
	addq	$1, %rdi
	jmp	.L2
	.p2align 4,,10
	.p2align 3
.L9:
	movq	%r8, %rdi
	call	puts@PLT
	xorl	%eax, %eax
	addq	$264, %rsp
	.cfi_def_cfa_offset 8
	ret
	.cfi_endproc
.LFE11:
	.size	main, .-main
	.ident	"GCC: (Debian 10.2.1-3) 10.2.1 20201224"
	.section	.note.GNU-stack,"",@progbits

Исходная версия LINUX-ORG-RU, :

/* коперигхт Ц ЛИНУКС-ORG-РУ, всюе прова резервед */
#include <stdio.h>
int main(int argc, char *argv[])
{
    char out[256]={0}; 
    char*ptr=out;
    while(*argv[1]++ || *ptr ){ switch(*argv[1])
    {
        case ' ' : break;
        default  : *ptr=*argv[1];ptr++;break;
    }}
    puts(out);
    return 0;
}