Actualmente estoy leyendo 'Linux Kernel Development' de Robert Love y no entiendo qué está haciendo este ensamblaje.desarrollo del kernel de Linux
Básicamente, en cada pila de kernel de proceso, hay un struct thread_info
que reside al final de la pila. Ahora, en la arquitectura x86, podemos parecer agarrar esta (suponiendo tamaño de la pila de 8 KB) utilizando el siguiente montaje
movl $-8192, %eax
andl %esp, %eax
Así que, básicamente ANDing el puntero de pila por 0xffffe000. Estoy confundido en cuanto a lo que está pasando aquí? No veo por qué enmascarar los 13 bits menos significativos de %esp
nos lleva a la estructura. Sé que me sentiré estúpido una vez que se lo explique, pero me está molestando.
Gracias.
Actualmente estoy leyendo este libro y tengo una pregunta aún más básica: ¿cómo sabes que '-8192' es' 0xffffe000'? ¿Cómo se almacenan los números negativos en los registros de la CPU? –