Linux-Kernel-Entwicklung

9

Ich lese gerade 'Linux Kernel Development' von Robert Love und ich verstehe nicht, was dieses Stück Assembly tut.

Grundsätzlich gibt es in jedem Prozess-Kernel-Stack ein struct thread_info , das sich am Ende des Stacks befindet. Nun, auf der x86-Architektur, können wir dies offensichtlich annehmen (unter Annahme einer Stapelgröße von 8KB), indem wir die folgende Baugruppe verwenden

%Vor%

Also im Grunde ANDing den Stack-Zeiger von 0xffffe000. Ich bin verwirrt, was hier vorgeht? Ich verstehe nicht, warum uns die Maskierung der am wenigsten signifikanten 13 Bits von %esp in die Struktur bringt. Ich weiß, dass ich mich dumm fühlen werde, sobald es erklärt wird, aber es nervt mich.

Danke.

    
tbh 28.11.2010, 15:58
quelle

1 Antwort

5

Der Stapel wächst abwärts, also ist das Ende des Stapels die niedrigste Adresse im Stapel und die Startadresse der Struktur. Und Stapel werden bei Vielfachen von 8 KB gespeichert. Daher erhält das Löschen der 13 niedrigstwertigen Bits die niedrigste Adresse des Stapels und daher den Start der Struktur. Macht das Sinn?

    
lijie 28.11.2010, 16:05
quelle

Tags und Links