Perché questa stampa è inutilizzabile anziché uscire dal mio programma con garbo? Uso le chiamate di sistema in questo modo su BSD e mi chiedo che cosa mi servirebbe per farlo funzionare su Linux.Syscall da in linea asm in x86_64 Linux?
int
main(int argc, char **argv)
{
__asm ("movq $1,%rax; movq $0,%rdi; syscall"); /* exit(0) ? */
return 0;
}
Grazie.
grazie! questo è. Non so perché hanno dovuto cambiarlo però. Quindi BSD usa i numeri tradizionali mentre Linux 64 li ha modificati. Ciò significa che non riesco a riutilizzare il mio codice però :( – jbcreix
@jbcreix, per curiosità * perché * lo faresti invece di usare le chiamate portatili 'exit()' e 'write()'? Non è solo per chiedere guai? ? – RBerteig
Le chiamate portatili devono collegarsi a lebc o ad altre librerie C. In questo modo posso implementare solo le funzioni di cui ho bisogno e indipendentemente dal sistema operativo. Ovviamente il collegamento statico otterrebbe un risultato simile, ma poi ci sono problemi di licenza con codice GPL – jbcreix