Durante la lectura a través de algún código fuente en un proyecto GNU, me encontré con este pedazo de ensamblado en línea:Ayuda instrucción comprensión DIV en x86 ensamblador en línea
__asm__ (
"divq %4"
: "=a" (q), "=d" (r)
: "0" (n0), "1" (n1), "rm" (d)
);
Aquí las variables q
, r
, n0
, n1
, y d
son enteros de 64 bits. Conozco lo suficiente para saber qué hace esto, pero hay algunos detalles de los que no estoy seguro.
lo que entiendo:
Estamos dividiendo el contenido del registro RAX por d
, colocando el cociente en q
, y colocando el resto en r
.
Lo que no entiendo
- ¿Por qué hay tres entradas aquí? Solo tenemos que ingresar un dividendo y un divisor, entonces, ¿qué uso podría haber para 3 entradas?
- No puedo decir cuál de las entradas es el dividendo. De manera más general, no veo nada realmente cargado en el registro RAX , entonces, ¿cómo sabe qué dividir por qué?
+1 pregunta bien formateada. Me gustan las secciones "lo que entiendo" y "lo que no entiendo". –