home *** CD-ROM | disk | FTP | other *** search
- DISASM(3E) Last changed: 2-2-99
-
-
- NNAAMMEE
- ddiiss__iinniitt, ddiiss__iinniitt3322, ddiiss__iinniitt6644, ddiiss__rreeggss, ddiiss__rreeggss3322, ddiiss__rreeggss6644,
- ddiissaassmm, ddiissaassmm3322, ddiissaassmm6644, ddiissaasssseemmbblleerr3322, ddiissaasssseemmbblleerr6644 -
- Disassembler functions
-
- SSYYNNOOPPSSIISS
- ##iinncclluuddee <<ddiissaasssseemmbblleerr..hh>>
-
- vvooiidd ddiiss__iinniitt ((cchhaarr **_a_d_d_r__f_o_r_m_a_t,,cchhaarr **_v_a_l_u_e__f_o_r_m_a_t,,
- cchhaarr *_r_e_g__n_a_m_e_s[[]],,iinntt _p_r_i_n_t__j_a_l__t_a_r_g_e_t_s));;
-
- vvooiidd ddiiss__iinniitt3322 ((cchhaarr **_a_d_d_r__f_o_r_m_a_t,,cchhaarr **_v_a_l_u_e__f_o_r_m_a_t,,
- cchhaarr *_r_e_g__n_a_m_e_s[[]],,iinntt _p_r_i_n_t__j_a_l__t_a_r_g_e_t_s));;
-
- vvooiidd ddiiss__iinniitt6644 ((cchhaarr **_a_d_d_r__f_o_r_m_a_t,,cchhaarr *_v_a_l_u_e__f_o_r_m_a_t,,
- cchhaarr *_r_e_g__n_a_m_e_s[[]],,iinntt _p_r_i_n_t__j_a_l__t_a_r_g_e_t_s));;
-
- vvooiidd ddiiss__rreeggss((cchhaarr *_b_u_f_f_e_r,,uunnssiiggnneedd _r_e_g_m_a_s_k,,
- uunnssiiggnneedd _r_e_g__v_a_l_u_e_s[[]]));;
-
- vvooiidd ddiiss__rreeggss3322((cchhaarr *_b_u_f_f_e_r,,uunnssiiggnneedd _r_e_g_m_a_s_k,,
- uunnssiiggnneedd _r_e_g__v_a_l_u_e_s[[]]));;
-
- vvooiidd ddiiss__rreeggss6644((cchhaarr *_b_u_f_f_e_r,,uunnssiiggnneedd _r_e_g_m_a_s_k,,
- ____uuiinntt6644__tt _r_e_g__v_a_l_u_e_s[[]]));;
-
- iinntt ddiissaassmm((cchhaarr *_b_u_f_f_e_r,,EEllff3322__AAddddrr _a_d_d_r_e_s_s,,EEllff3322__AAddddrr _i_w_o_r_d,,
- EEllff3322__AAddddrr *_r_e_g_m_a_s_k,,EEllff3322__AAddddrr *_s_y_m_b_o_l__v_a_l_u_e,,
- EEllff3322__AAddddrr *_l_s__r_e_g_i_s_t_e_r));;
-
- iinntt ddiissaassmm3322((cchhaarr *_b_u_f_f_e_r,,EEllff3322__AAddddrr _a_d_d_r_e_s_s,,EEllff3322__AAddddrr _i_w_o_r_d,
- EEllff3322__AAddddrr *_r_e_g_m_a_s_k,,EEllff3322__AAddddrr *_s_y_m_b_o_l__v_a_l_u_e,,
- EEllff3322__AAddddrr *_l_s__r_e_g_i_s_t_e_r));;
-
- iinntt ddiissaassmm6644((cchhaarr *_b_u_f_f_e_r,,EEllff6644__AAddddrr _a_d_d_r_e_s_s,, EEllff3322__AAddddrr _i_w_o_r_d,
- EEllff3322__AAddddrr *_r_e_g_m_a_s_k,,EEllff6644__AAddddrr *_s_y_m_b_o_l__v_a_l_u_e,,
- EEllff3322__AAddddrr *_l_s__r_e_g_i_s_t_e_r));;
-
- iinntt ddiissaasssseemmbblleerr((EEllff3322__AAddddrr _i_a_d_r,, iinntt _r_e_g_s_t_y_l_e,,
- cchhaarr **((**ggeett__ssyymmnnaammee))(()),,iinntt ((**ggeett__rreeggvvaalluuee))(()),,
- lloonngg ((**ggeett__bbyytteess))(()),, vvooiidd ((**pprriinntt__hheeaaddeerr))(())));;
-
- iinntt ddiissaasssseemmbblleerr3322((EEllff3322__AAddddrr iiaaddrr,, iinntt rreeggssttyyllee,,
- cchhaarr **((**ggeett__ssyymmnnaammee))(()),,iinntt ((**ggeett__rreeggvvaalluuee))(()),,
- lloonngg ((**ggeett__bbyytteess))(()),, vvooiidd ((**pprriinntt__hheeaaddeerr))(())));;
-
- iinntt ddiissaasssseemmbblleerr6644((____uuiinntt6644__tt iiaaddrr,, iinntt rreeggssttyyllee,,
- cchhaarr **((**ggeett__ssyymmnnaammee))(()),,iinntt ((**ggeett__rreeggvvaalluuee))(()),,
- lloonngg ((**ggeett__bbyytteess))(()),, vvooiidd ((**pprriinntt__hheeaaddeerr))(())));;
-
- IIMMPPLLEEMMEENNTTAATTIIOONN
- IRIX systems
-
- DDEESSCCRRIIPPTTIIOONN
- The following register names (__NNAAMMEESS macro) may be useful in using
- this command:
-
- ccoommppiilleerr:: zzeerroo,, aatt,, vv00,, ......
-
- hhaarrddwwaarree:: rr00,, rr11,, rr22,, ......
-
- aasssseemmbblleerr:: $$00,, $$aatt,, $$22,,......
-
- ddiiss__iinniitt, ddiiss__iinniitt3322, and ddiiss__iinniitt6644 functions initialize the
- disassembler and set options for disassembly.
-
- When given a null-terminated buffer (presumably from ddiissaassmm), the
- ddiiss__rreeggss, ddiiss__rreeggss3322, and ddiiss__rreeggss6644 functions append an ASCII
- representation of register values in the form <<$$55==00xx5500,,$$77==00xx4444,,......>>.
-
- The ddiissaassmm, ddiissaassmm3322, and ddiissaassmm6644 functions disassemble instructions,
- putting a null-terminated result into _b_u_f_f_e_r (no trailing newline).
- Details governed by ddiiss__iinniitt.
-
- The ddiissaasssseemmbblleerr, ddiissaasssseemmbblleerr3322, and ddiissaasssseemmbblleerr6644 functions are
- older interfaces, which always print on stdout.
-
- The following options are accepted by the disassembler:
-
- aaddddrr__ffoorrmmaatt, vvaalluuee__ffoorrmmaatt
- Specify (in the style of pprriinnttff) the null-terminated formats
- for printing the address and value of the instruction. If
- nil, they default to %%##001100xx; if they are the empty string,
- these items are not printed.
-
- _r_e_g__n_a_m_e_s Pointer to an array of 32 strings that represent the
- general-purpose registers. The preceding **__NNAAMMEESS macros
- give three common choices; if nil, compiler names are used.
-
- _p_r_i_n_t__j_a_l__t_a_r_g_e_t_s
- Specifies whether to print the targets of jal instructions
- numerically.
-
- _r_e_g_m_a_s_k Bitmask of registers as in ddiissaassmm, rreegg__vvaalluueess. An array
- (with empty slots for the registers not indicated in the
- mask) of their values.
-
- _b_u_f_f_e_r Array of characters allocated by the caller; 64 bytes should
- be adequate.
-
- _a_d_d_r_e_s_s Specifies byte address.
-
- _i_w_o_r_d Specifies the instruction.
-
- _r_e_g_m_a_s_k Returns a bitmask of the ggpp registers that the instruction
- uses, with the LSB indicating register 0 regardless of
- endianness.
-
- _s_y_m_b_o_l__v_a_l_u_e
- For a JAL instruction, the target value; for a load or
- store, the immediate value.
-
- _l_s__r_e_g_i_s_t_e_r
- For a load or store, the number of the base register.
-
- RREETTUURRNN VVAALLUUEESS
- The following values are returned:
-
- --11 for a load or store 11 for a JAL
-
- 22 for a J, JR, JALR, or branch
-
- 00 for other
-
- SSEEEE AALLSSOO
- ddiissaasssseemmbblleerr(3X)
-
- This man page is available only online.
-