Mi sto insegnando come linguaggio assembly di Linux e ho trovato una differenza interessante tra BSD e Linux. In Unix, si spingono i parametri di syscall sullo stack prima di chiamare un interrupt di 80 h; al contrario, in Linux, si passano i parametri nei registri.Perché Linux non segue le convenzioni syscall di Unix?
Qualcuno sa quale sia stata la logica per gli sviluppatori Linux di utilizzare registri anziché stack?
Nota: questa è una buona pagina che dettaglia la differenza: FreeBSD Developer's Handbook:System Calls senza spiegare la logica.
nessuna idea chiara, ma forse è legata alla velocità di esecuzione e accessibilità del luogo? aspetterò qualcuno per chiarire. –
Perché chiami cosa BSD fa "Unix"? – unwind
@unwind - il collegamento ipertestuale che ho incluso nella mia domanda suggerisce che BSD segue le convenzioni Unix per le syscalls e Linux no. È altrimenti? – clay