808~ Object Module Formats | Version 4.0 |
CONCEPTUAL FRAMEWORK for FIXUP's
A "Fixup" is some modification to object code, requested by a translator, performed by the R&L system, achievinq address bindinq. (see Appendix 4 for Examples)
(Note) This definition of "fixup- accurately represents the viewpoint maintained by the R&L system. Nevertheless. the R&L system can be used to achieve modifications of object code (i . e . , dfixups") that do
not conform to this definition. For example. the bindinq of code to either of hardware floatinq point
or software floatinq point subroutines, is a modification to an operation code, where the operation
code is treated as if it were an address. The above definition of "fixup" is not intended to disallow or disparaqe object code modifications in the wider
sense. ,End of Note)
8086 and/or 8089 translators specify a fixup by qivinq four
data: (l) the place and type of a LOCATION to be fixed up, (2) one
of two possible fixup MODE'S. (3) a TARGET, which is a mem(cy
address to which LOCATION must be made to refer, and (4) a FRAME defining a context within which the reference takes place.
LOCATION There are 5 types of LOCATION: a POINTER, a BASE, an OFFSET, a HIBYTE, and a LOBYTE:
Pointer: | + | + | + | ||
| |||||
|
|
| + | ||
Base: |
|
| I |
| , |
|
|
| + | ||
| + | + |
|
| |
Offset: | I |
| I |
|
|
| + | + |
|
| |
|
| + |
|
| |
Hibyte: |
| I | I |
|
|
|
| + |
|
| |
Lobyte: | + |
|
|
| |
I | I |
|
|
| |
| + |
|
|
|
The vertical alignment of this diaqram illustrates 4 points (remember that the hiqh orner byte of a word in q~8~ me~ory is the
byte "Nith the hiqher address): (1) a B.~SE is merely the hi1h ':)rder word of a pointer (and R~L ~oesn't care if the low order word of the
13