Hardware
Literature references and annotations by Dick Grune, dick@dickgrune.com.
Last update: Tue Sep 15 10:33:30 2009.
These references and annotations were originally intended
for personal use and are presented here only in the hope
that they may be useful to others.
There is no claim to completeness or even correctness.
Each annotation represents my understanding of the text
at the moment I wrote the annotation.
No guarantees given; comments and content criticism welcome.
Hans-Peter Messmer,
The Indispensable Pentium Book,
Addison-Wesley,
Wokingham, England,
1996,
pp. 496.
The Pentium from the bit up.
Basic 80x86 architecture, micro-programming, pipelines, coprocessors,
caches, virtual 8086 mode, pins and signals, operating modes, busses, etc.
Also includes a comparison with DEC's Alpha, PowerPC, MIPS, and even the
Transputer.
David R. Ditzel,
H.R. McLellan,
Register allocation for free: the C machine stack cache,
in Symposium on Architectural Support for Programming Languages and Operating Systems,
ACM SIGPLAN Notices,
vol. 17,
#4,
April 1982,
pp. 48-56.
A hardware replacement for registers, part of the Bell Labs C machine
Project.
Neither the machine description nor the compiler knows registers; all
local variables are addressed through stack frame pointer offsets.
This stack frame pointer remains constant during the execution of a
procedure and changes only upon calling another procedure or upon return
from a procedure.
The hardware knows enough of the layout of the stack frame to know where
the local simple variables are, and it maps these at run time onto
free registers from a bank of registers.
References to locals on the stack are translated on the fly to reference
to reigisters.
Note that this scheme allows the address to be taken of any local
variable, regardless of whether it is actually in a register or not.
If there are no more free registers, registers from the oldest stack
frame are written to the corresponding memory locations on the stack
and their mappings are cancelled.
|