aout.htm
来自「刚刚看到本站有Visual C++数字图象处理(人民邮电出版社)的电子书」· HTM 代码 · 共 1,084 行 · 第 1/5 页
HTM
1,084 行
by symbol s, and the parameter relocation bits are r.
r_abs_call copy one instruction word with relocation. the word is
assumed to be an absolute procedure call instruction
(for example, ble). the target procedure is identified
by symbol s, and the parameter relocation bits are r.
r_dp_relative copy one instruction word with relocation. the word is
assumed to be a dp-relative load or store instruction
(for example, addil, ldw, stw). the target symbol is
identified by symbol s. the linker forms the
difference between the value of the symbol s and the
value of the symbol $global$. by convention, the value
of $global$ is always contained in register 27.
instructions other than ldil and addil may have a small
constant in the displacement field of the instruction.
r_dlt_rel copy one instruction word with relocation. the word is
assumed to be a register-r18-relative load or store
instruction (for example, ldw, ldo, stw). the target
symbol is identified by symbol s. the linker computes
a linkage table offset relative to register 18
(reserved for a linkage table pointer in position-
independent code) for the symbol s.
r_code_one_symbol
copy one instruction word with relocation. the word is
assumed to be an instruction referring to symbol s (for
example, ldil, ldw, be). instructions other than ldil
and addil may have a small constant in the displacement
field of the instruction.
r_milli_rel copy one instruction word with relocation. the word is
assumed to be a short millicode call instruction (for
example, ble). the linker forms the difference between
the value of the target symbol s and the value of
symbol 1 in the module's symbol table. by convention,
the value of symbol 1 should have been previously
loaded into the base register used in the ble
instruction. the instruction may have a small constant
in the displacement field of the instruction.
r_code_plabel copy one instruction word with relocation. the word is
assumed to be part of a code sequence forming a
procedure label (for example, ldil, ldo), referring to
symbol s. the ldo instruction should contain the value
0 (no static link) or 2 (static link required) in its
displacement field.
r_breakpoint copy one instruction word conditionally. on hp-ux, the
linker always replaces the word with a nop instruction.
r_entry define a procedure entry point. the stack unwind bits,
u, and the frame size, f, are recorded in a stack
unwind descriptor.
r_alt_entry define an alternate procedure entry point.
r_exit define a procedure exit point.
r_begin_try define the beginning of a try/recover region.
r_end_try define the end of a try/recover region. the offset r
defines the distance in bytes from the end of the
region to the beginning of the recover block.
r_begin_brtab define the beginning of a branch table.
r_end_brtab define the end of a branch table.
r_aux_unwind define an auxiliary unwind table. cn is a symbol index
of the symbol that labels the beginning of the
compilation unit string table. sn is the offset,
relative to the cn symbol, of the scope name string.
sk is an integer specifying the scope kind.
r_statement define the beginning of statement number n.
r_sec_statement
define the beginning of a secondary statement number n.
r_data_expr pop one word from the expression stack and copy one
data word from the input subspace to the output
subspace, adding the popped value to it.
r_code_expr pop one word from the expression stack, and copy one
instruction word from the input subspace to the output
subspace, adding the popped value to the displacement
field of the instruction.
r_fsel use an f' field selector for the next fixup request
instead of the default appropriate for the instruction.
r_lsel use an l-class field selector for the next fixup
request instead of the default appropriate for the
instruction. depending on the current rounding mode,
l', ls', ld', or lr' may be used.
r_rsel use an r-class field selector for the next fixup
request instead of the default appropriate for the
instruction. depending on the current rounding mode,
r', rs', rd', or rr' may be used.
r_n_mode select round-down mode (l'/r'). this is the default
mode at the beginning of each subspace. this setting
remains in effect until explicitly changed or until the
end of the subspace.
r_s_mode select round-to-nearest-page mode (ls'/rs'). this
setting remains in effect until explicitly changed or
until the end of the subspace.
r_d_mode select round-up mode (ld'/rd'). this setting remains
in effect until explicitly changed or until the end of
the subspace.
r_r_mode select round-down-with-adjusted-constant mode
(lr'/rr'). this setting remains in effect until
explicitly changed or until the end of the subspace.
r_data_override
use the constant v for the next fixup request in place
of the constant from the data word or instruction in
the input subspace.
r_translated toggle ``translated'' mode. this fixup request is
generated only by the linker during a relocatable link
to indicate a subspace that was originally read from an
old-format relocatable object file.
r_comp1 stack operations. the second byte of this fixup
request contains a secondary opcode. in the
descriptions below, a refers to the top of the stack
and b refers to the next item on the stack. all items
on the stack are considered signed 32-bit integers.
r_push_pcon1 push the (positive) constant
v.
r_push_dot push the current virtual
address.
r_max pop a and b, then push max(a,
b).
r_min pop a and b, then push min(a,
b).
r_add pop a and b, then push a + b.
r_sub pop a and b, then push b - a.
r_mult pop a and b, then push a * b.
r_div pop a and b, then push b / a.
r_mod pop a and b, then push b % a.
r_and pop a and b, then push a & b.
r_or pop a and b, then push a | b.
r_xor pop a and b, then push a xor
b.
r_not replace a with its complement.
r_lshift if c = 0, pop a and b, then
push b << a. otherwise,
replace a with a << c.
r_arith_rshift if c = 0, pop a and b, then
push b >> a. otherwise,
replace a with a >> c. the
shifting is done with sign
extension.
r_logic_rshift if c = 0, pop a and b, then
push b >> a. otherwise,
replace a with a >> c. the
shifting is done with zero
fill.
r_push_ncon1 push the (negative) constant
v.
r_comp2 more stack operations.
r_push_pcon2 push the (positive) constant
v.
r_push_sym push the value of the symbol
s.
r_push_plabel push the value of a procedure
label for symbol s. the
static link bit is l.
r_push_ncon2 push the (negative) constant
v.
r_comp3 more stack operations.
r_push_proc push the value of the
procedure entry point s. the
parameter relocation bits are
r.
r_push_const push the constant v.
r_prev_fixup the linker keeps a queue of the last four unique
multi-byte fixup requests; this is an abbreviation for
a fixup request identical to one on the queue. the
queue index x references one of the four; x = 0 refers
to the most recent. as a side effect of this fixup
request, the referenced fixup is moved to the front of
the queue.
r_reserved fixups in this range are reserved for internal use by
the compilers and linker.
the following table shows the mnemonic fixup request type and length
and parameter information for each range of opcodes. in the
parameters column, the symbol d refers to the difference between the
opcode and the beginning of the range described by that table entry;
the symbols b1, b2, b3, and b4 refer to the value of the next one,
two, three, or four bytes of the fixup request, respectively.
mnemonic opcodes length parameters
____________________________________________________________________________
r_no_relocation 0-23 1 l = (d+1) * 4
24-27 2 l = (d<<8 + b1 + 1) * 4
28-30 3 l = (d<<16 + b2 + 1) * 4
31 4 l = b3 + 1
r_zeroes 32 2 l = (b1 + 1) * 4
33 4 l = b3 + 1
r_uninit 34 2 l = (b1 + 1) * 4
35 4 l = b3 + 1
r_relocation 36 1 none
r_data_one_symbol 37 2 s = b1
⌨️ 快捷键说明
复制代码Ctrl + C
搜索代码Ctrl + F
全屏模式F11
增大字号Ctrl + =
减小字号Ctrl + -
显示快捷键?