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 + -
显示快捷键?