Ich lese gerade 'Linux Kernel Development' von Robert Love und ich verstehe nicht, was dieses Stück der Montage tut.Linux-Kernel-Entwicklung
Grundsätzlich befindet sich in jedem Prozess-Kernel-Stack ein struct thread_info
, der sich am Ende des Stacks befindet. Nun, auf der x86-Architektur, können wir offenbar greifen diese (unter der Annahme von 8 KB-Stack-Größe) durch die folgende Montag mit
movl $-8192, %eax
andl %esp, %eax
Also im Grunde ANDing der Stapelzeiger durch 0xffffe000. Ich bin verwirrt, was hier vorgeht? Ich verstehe nicht, warum die Maskierung der am wenigsten signifikanten 13 Bits von %esp
uns zur Struktur führt. Ich weiß, dass ich mich dumm fühlen werde, sobald es erklärt wird, aber es nervt mich.
Danke.
Ich lese gerade dieses Buch und ich habe noch grundlegendere Frage: Woher weißt du, dass '-8192'' 0xffffe000' ist? Wie werden negative Zahlen in den Registern der CPU gespeichert? –