LINUX.ORG.RU

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

Исправление vertexua, (текущая версия) :

Точнее я ошибся. Уже через эти хедеры вызывается libc. Раньше был таки 0x80h. Вот пример чистейшего syscall, которому нафиг не сдался libc

#include <unistd.h> 

int main(){
	write(1, "Hello world \n",13);
	return 0;
}

gcc -S main.c

	.file	"main.c"
	.section	.rodata
.LC0:
	.string	"Hello world \n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$13, %edx
	movl	$.LC0, %esi
	movl	$1, %edi
	call	write
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Gentoo 4.6.3 p1.11, pie-0.5.2) 4.6.3"
	.section	.note.GNU-stack,"",@progbits

Опа, call write. Погуглил, пишут что избавились от syscall напрямую (хотя все еще можно взять и написать), чтобы иметь возможность чуть похимичить в юзерспейсе ради производительности

Исходная версия vertexua, :

Точнее я ошибся. Уже через эти хедеры вызывается libc. Раньше был таки 0x80h

#include <unistd.h> 

int main(){
	write(1, "Hello world \n",13);
	return 0;
}

gcc -S main.c

	.file	"main.c"
	.section	.rodata
.LC0:
	.string	"Hello world \n"
	.text
	.globl	main
	.type	main, @function
main:
.LFB0:
	.cfi_startproc
	pushq	%rbp
	.cfi_def_cfa_offset 16
	.cfi_offset 6, -16
	movq	%rsp, %rbp
	.cfi_def_cfa_register 6
	movl	$13, %edx
	movl	$.LC0, %esi
	movl	$1, %edi
	call	write
	movl	$0, %eax
	popq	%rbp
	.cfi_def_cfa 7, 8
	ret
	.cfi_endproc
.LFE0:
	.size	main, .-main
	.ident	"GCC: (Gentoo 4.6.3 p1.11, pie-0.5.2) 4.6.3"
	.section	.note.GNU-stack,"",@progbits