A co testy, exit code atd. ? A taky pametova efektivita ;o) No nic, omlouvam se za lehce off-topic...
.section .text
msg:
.ascii "Hello world!\n"
msglen = .-msg
.globl _start
_start:
xorl %ebx, %ebx
incl %ebx
movl $msg, %ecx
movl $4, %eax
movl $msglen, %edx
int $0x80
xorl %ebx, %ebx
cmpl $msglen, %eax
sets %bl
xorl %eax, %eax
incl %eax
int $0x80
Tady slo o pamet, ne o rychlost ;)
... jinak jeste jedna pripominka k clanku - to, ze je cislo kladne, neznamena, ze syscall byl uspesny. Lepsi je testovat, zda ret >= (unsigned)-1024. Kernel vraci mj. i pointery, ktere zabiraji cely rozsah size_t a v takovem pripade k chybe doslo kdyz viz vyse. Mmch, presneji vraci defakto -errno, ktere se pak v libc uklada a konverti na -1/NULL/...
Jsou situace, kdy i ten pitomej bajt muze rozhodovat o Vasem byti i nebyti (coz je mimochodem otazka jednoho bitu:->)
Co se tyce techto uspor, mozna Vas to prekvapi, ale treba toto byl problem posledniho funkcne pristaleho vozitka na Marsu...
A rozdelovani zateze mezi pametovy radic (bomba! uz mame 2 kanaly po desetiletich:-()a ALU neni rozhodne k zahozeni...