Deleted Added
full compact
db_disasm.c (8876) db_disasm.c (11921)
1/*
2 * Mach Operating System
3 * Copyright (c) 1991,1990 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the

--- 9 unchanged lines hidden (view full) ---

18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie the
24 * rights to redistribute these changes.
25 *
1/*
2 * Mach Operating System
3 * Copyright (c) 1991,1990 Carnegie Mellon University
4 * All Rights Reserved.
5 *
6 * Permission to use, copy, modify and distribute this software and its
7 * documentation is hereby granted, provided that both the copyright
8 * notice and this permission notice appear in all copies of the

--- 9 unchanged lines hidden (view full) ---

18 * Software Distribution Coordinator or Software.Distribution@CS.CMU.EDU
19 * School of Computer Science
20 * Carnegie Mellon University
21 * Pittsburgh PA 15213-3890
22 *
23 * any improvements or extensions that they make and grant Carnegie the
24 * rights to redistribute these changes.
25 *
26 * $Id: db_disasm.c,v 1.8 1995/01/29 02:38:15 bde Exp $
26 * $Id: db_disasm.c,v 1.9 1995/05/30 07:59:20 rgrimes Exp $
27 */
28
29/*
30 * Instruction disassembler.
31 */
32#include <sys/param.h>
33#include <sys/systm.h>
34#include <sys/proc.h>

--- 48 unchanged lines hidden (view full) ---

83#define o1 28 /* constant 1 */
84#define o3 29 /* constant 3 */
85#define OS 30 /* immediate offset/segment */
86#define ST 31 /* FP stack top */
87#define STI 32 /* FP stack */
88#define X 33 /* extended FP op */
89#define XA 34 /* for 'fstcw %ax' */
90
27 */
28
29/*
30 * Instruction disassembler.
31 */
32#include <sys/param.h>
33#include <sys/systm.h>
34#include <sys/proc.h>

--- 48 unchanged lines hidden (view full) ---

83#define o1 28 /* constant 1 */
84#define o3 29 /* constant 3 */
85#define OS 30 /* immediate offset/segment */
86#define ST 31 /* FP stack top */
87#define STI 32 /* FP stack */
88#define X 33 /* extended FP op */
89#define XA 34 /* for 'fstcw %ax' */
90
91struct inst {
91static struct inst {
92 char * i_name; /* name */
93 short i_has_modrm; /* has regmodrm byte */
94 short i_size; /* operand size */
95 int i_mode; /* addressing modes */
96 char * i_extra; /* pointer to extra opcode table */
97};
98
99#define op1(x) (x)
100#define op2(x,y) ((x)|((y)<<8))
101#define op3(x,y,z) ((x)|((y)<<8)|((z)<<16))
102
92 char * i_name; /* name */
93 short i_has_modrm; /* has regmodrm byte */
94 short i_size; /* operand size */
95 int i_mode; /* addressing modes */
96 char * i_extra; /* pointer to extra opcode table */
97};
98
99#define op1(x) (x)
100#define op2(x,y) ((x)|((y)<<8))
101#define op3(x,y,z) ((x)|((y)<<8)|((z)<<16))
102
103struct finst {
103static struct finst {
104 char * f_name; /* name for memory instruction */
105 int f_size; /* size for memory instruction */
106 int f_rrmode; /* mode for rr instruction */
107 char * f_rrname; /* name for rr instruction
108 (or pointer to table) */
109};
110
104 char * f_name; /* name for memory instruction */
105 int f_size; /* size for memory instruction */
106 int f_rrmode; /* mode for rr instruction */
107 char * f_rrname; /* name for rr instruction
108 (or pointer to table) */
109};
110
111char * db_Grp6[] = {
111static char * db_Grp6[] = {
112 "sldt",
113 "str",
114 "lldt",
115 "ltr",
116 "verr",
117 "verw",
118 "",
119 ""
120};
121
112 "sldt",
113 "str",
114 "lldt",
115 "ltr",
116 "verr",
117 "verw",
118 "",
119 ""
120};
121
122char * db_Grp7[] = {
122static char * db_Grp7[] = {
123 "sgdt",
124 "sidt",
125 "lgdt",
126 "lidt",
127 "smsw",
128 "",
129 "lmsw",
130 "invlpg"
131};
132
123 "sgdt",
124 "sidt",
125 "lgdt",
126 "lidt",
127 "smsw",
128 "",
129 "lmsw",
130 "invlpg"
131};
132
133char * db_Grp8[] = {
133static char * db_Grp8[] = {
134 "",
135 "",
136 "",
137 "",
138 "bt",
139 "bts",
140 "btr",
141 "btc"
142};
143
134 "",
135 "",
136 "",
137 "",
138 "bt",
139 "bts",
140 "btr",
141 "btc"
142};
143
144struct inst db_inst_0f0x[] = {
144static struct inst db_inst_0f0x[] = {
145/*00*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp6 },
146/*01*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp7 },
147/*02*/ { "lar", TRUE, LONG, op2(E,R), 0 },
148/*03*/ { "lsl", TRUE, LONG, op2(E,R), 0 },
149/*04*/ { "", FALSE, NONE, 0, 0 },
150/*05*/ { "", FALSE, NONE, 0, 0 },
151/*06*/ { "clts", FALSE, NONE, 0, 0 },
152/*07*/ { "", FALSE, NONE, 0, 0 },
153
154/*08*/ { "invd", FALSE, NONE, 0, 0 },
155/*09*/ { "wbinvd",FALSE, NONE, 0, 0 },
156/*0a*/ { "", FALSE, NONE, 0, 0 },
157/*0b*/ { "", FALSE, NONE, 0, 0 },
158/*0c*/ { "", FALSE, NONE, 0, 0 },
159/*0d*/ { "", FALSE, NONE, 0, 0 },
160/*0e*/ { "", FALSE, NONE, 0, 0 },
161/*0f*/ { "", FALSE, NONE, 0, 0 },
162};
163
145/*00*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp6 },
146/*01*/ { "", TRUE, NONE, op1(Ew), (char *)db_Grp7 },
147/*02*/ { "lar", TRUE, LONG, op2(E,R), 0 },
148/*03*/ { "lsl", TRUE, LONG, op2(E,R), 0 },
149/*04*/ { "", FALSE, NONE, 0, 0 },
150/*05*/ { "", FALSE, NONE, 0, 0 },
151/*06*/ { "clts", FALSE, NONE, 0, 0 },
152/*07*/ { "", FALSE, NONE, 0, 0 },
153
154/*08*/ { "invd", FALSE, NONE, 0, 0 },
155/*09*/ { "wbinvd",FALSE, NONE, 0, 0 },
156/*0a*/ { "", FALSE, NONE, 0, 0 },
157/*0b*/ { "", FALSE, NONE, 0, 0 },
158/*0c*/ { "", FALSE, NONE, 0, 0 },
159/*0d*/ { "", FALSE, NONE, 0, 0 },
160/*0e*/ { "", FALSE, NONE, 0, 0 },
161/*0f*/ { "", FALSE, NONE, 0, 0 },
162};
163
164struct inst db_inst_0f2x[] = {
164static struct inst db_inst_0f2x[] = {
165/*20*/ { "mov", TRUE, LONG, op2(CR,E), 0 }, /* use E for reg */
166/*21*/ { "mov", TRUE, LONG, op2(DR,E), 0 }, /* since mod == 11 */
167/*22*/ { "mov", TRUE, LONG, op2(E,CR), 0 },
168/*23*/ { "mov", TRUE, LONG, op2(E,DR), 0 },
169/*24*/ { "mov", TRUE, LONG, op2(TR,E), 0 },
170/*25*/ { "", FALSE, NONE, 0, 0 },
171/*26*/ { "mov", TRUE, LONG, op2(E,TR), 0 },
172/*27*/ { "", FALSE, NONE, 0, 0 },
173
174/*28*/ { "", FALSE, NONE, 0, 0 },
175/*29*/ { "", FALSE, NONE, 0, 0 },
176/*2a*/ { "", FALSE, NONE, 0, 0 },
177/*2b*/ { "", FALSE, NONE, 0, 0 },
178/*2c*/ { "", FALSE, NONE, 0, 0 },
179/*2d*/ { "", FALSE, NONE, 0, 0 },
180/*2e*/ { "", FALSE, NONE, 0, 0 },
181/*2f*/ { "", FALSE, NONE, 0, 0 },
182};
183
165/*20*/ { "mov", TRUE, LONG, op2(CR,E), 0 }, /* use E for reg */
166/*21*/ { "mov", TRUE, LONG, op2(DR,E), 0 }, /* since mod == 11 */
167/*22*/ { "mov", TRUE, LONG, op2(E,CR), 0 },
168/*23*/ { "mov", TRUE, LONG, op2(E,DR), 0 },
169/*24*/ { "mov", TRUE, LONG, op2(TR,E), 0 },
170/*25*/ { "", FALSE, NONE, 0, 0 },
171/*26*/ { "mov", TRUE, LONG, op2(E,TR), 0 },
172/*27*/ { "", FALSE, NONE, 0, 0 },
173
174/*28*/ { "", FALSE, NONE, 0, 0 },
175/*29*/ { "", FALSE, NONE, 0, 0 },
176/*2a*/ { "", FALSE, NONE, 0, 0 },
177/*2b*/ { "", FALSE, NONE, 0, 0 },
178/*2c*/ { "", FALSE, NONE, 0, 0 },
179/*2d*/ { "", FALSE, NONE, 0, 0 },
180/*2e*/ { "", FALSE, NONE, 0, 0 },
181/*2f*/ { "", FALSE, NONE, 0, 0 },
182};
183
184struct inst db_inst_0f8x[] = {
184static struct inst db_inst_0f8x[] = {
185/*80*/ { "jo", FALSE, NONE, op1(Dl), 0 },
186/*81*/ { "jno", FALSE, NONE, op1(Dl), 0 },
187/*82*/ { "jb", FALSE, NONE, op1(Dl), 0 },
188/*83*/ { "jnb", FALSE, NONE, op1(Dl), 0 },
189/*84*/ { "jz", FALSE, NONE, op1(Dl), 0 },
190/*85*/ { "jnz", FALSE, NONE, op1(Dl), 0 },
191/*86*/ { "jbe", FALSE, NONE, op1(Dl), 0 },
192/*87*/ { "jnbe", FALSE, NONE, op1(Dl), 0 },
193
194/*88*/ { "js", FALSE, NONE, op1(Dl), 0 },
195/*89*/ { "jns", FALSE, NONE, op1(Dl), 0 },
196/*8a*/ { "jp", FALSE, NONE, op1(Dl), 0 },
197/*8b*/ { "jnp", FALSE, NONE, op1(Dl), 0 },
198/*8c*/ { "jl", FALSE, NONE, op1(Dl), 0 },
199/*8d*/ { "jnl", FALSE, NONE, op1(Dl), 0 },
200/*8e*/ { "jle", FALSE, NONE, op1(Dl), 0 },
201/*8f*/ { "jnle", FALSE, NONE, op1(Dl), 0 },
202};
203
185/*80*/ { "jo", FALSE, NONE, op1(Dl), 0 },
186/*81*/ { "jno", FALSE, NONE, op1(Dl), 0 },
187/*82*/ { "jb", FALSE, NONE, op1(Dl), 0 },
188/*83*/ { "jnb", FALSE, NONE, op1(Dl), 0 },
189/*84*/ { "jz", FALSE, NONE, op1(Dl), 0 },
190/*85*/ { "jnz", FALSE, NONE, op1(Dl), 0 },
191/*86*/ { "jbe", FALSE, NONE, op1(Dl), 0 },
192/*87*/ { "jnbe", FALSE, NONE, op1(Dl), 0 },
193
194/*88*/ { "js", FALSE, NONE, op1(Dl), 0 },
195/*89*/ { "jns", FALSE, NONE, op1(Dl), 0 },
196/*8a*/ { "jp", FALSE, NONE, op1(Dl), 0 },
197/*8b*/ { "jnp", FALSE, NONE, op1(Dl), 0 },
198/*8c*/ { "jl", FALSE, NONE, op1(Dl), 0 },
199/*8d*/ { "jnl", FALSE, NONE, op1(Dl), 0 },
200/*8e*/ { "jle", FALSE, NONE, op1(Dl), 0 },
201/*8f*/ { "jnle", FALSE, NONE, op1(Dl), 0 },
202};
203
204struct inst db_inst_0f9x[] = {
204static struct inst db_inst_0f9x[] = {
205/*90*/ { "seto", TRUE, NONE, op1(Eb), 0 },
206/*91*/ { "setno", TRUE, NONE, op1(Eb), 0 },
207/*92*/ { "setb", TRUE, NONE, op1(Eb), 0 },
208/*93*/ { "setnb", TRUE, NONE, op1(Eb), 0 },
209/*94*/ { "setz", TRUE, NONE, op1(Eb), 0 },
210/*95*/ { "setnz", TRUE, NONE, op1(Eb), 0 },
211/*96*/ { "setbe", TRUE, NONE, op1(Eb), 0 },
212/*97*/ { "setnbe",TRUE, NONE, op1(Eb), 0 },
213
214/*98*/ { "sets", TRUE, NONE, op1(Eb), 0 },
215/*99*/ { "setns", TRUE, NONE, op1(Eb), 0 },
216/*9a*/ { "setp", TRUE, NONE, op1(Eb), 0 },
217/*9b*/ { "setnp", TRUE, NONE, op1(Eb), 0 },
218/*9c*/ { "setl", TRUE, NONE, op1(Eb), 0 },
219/*9d*/ { "setnl", TRUE, NONE, op1(Eb), 0 },
220/*9e*/ { "setle", TRUE, NONE, op1(Eb), 0 },
221/*9f*/ { "setnle",TRUE, NONE, op1(Eb), 0 },
222};
223
205/*90*/ { "seto", TRUE, NONE, op1(Eb), 0 },
206/*91*/ { "setno", TRUE, NONE, op1(Eb), 0 },
207/*92*/ { "setb", TRUE, NONE, op1(Eb), 0 },
208/*93*/ { "setnb", TRUE, NONE, op1(Eb), 0 },
209/*94*/ { "setz", TRUE, NONE, op1(Eb), 0 },
210/*95*/ { "setnz", TRUE, NONE, op1(Eb), 0 },
211/*96*/ { "setbe", TRUE, NONE, op1(Eb), 0 },
212/*97*/ { "setnbe",TRUE, NONE, op1(Eb), 0 },
213
214/*98*/ { "sets", TRUE, NONE, op1(Eb), 0 },
215/*99*/ { "setns", TRUE, NONE, op1(Eb), 0 },
216/*9a*/ { "setp", TRUE, NONE, op1(Eb), 0 },
217/*9b*/ { "setnp", TRUE, NONE, op1(Eb), 0 },
218/*9c*/ { "setl", TRUE, NONE, op1(Eb), 0 },
219/*9d*/ { "setnl", TRUE, NONE, op1(Eb), 0 },
220/*9e*/ { "setle", TRUE, NONE, op1(Eb), 0 },
221/*9f*/ { "setnle",TRUE, NONE, op1(Eb), 0 },
222};
223
224struct inst db_inst_0fax[] = {
224static struct inst db_inst_0fax[] = {
225/*a0*/ { "push", FALSE, NONE, op1(Si), 0 },
226/*a1*/ { "pop", FALSE, NONE, op1(Si), 0 },
227/*a2*/ { "", FALSE, NONE, 0, 0 },
228/*a3*/ { "bt", TRUE, LONG, op2(E,R), 0 },
229/*a4*/ { "shld", TRUE, LONG, op3(Ib,E,R), 0 },
230/*a5*/ { "shld", TRUE, LONG, op3(CL,E,R), 0 },
231/*a6*/ { "", FALSE, NONE, 0, 0 },
232/*a7*/ { "", FALSE, NONE, 0, 0 },
233
234/*a8*/ { "push", FALSE, NONE, op1(Si), 0 },
235/*a9*/ { "pop", FALSE, NONE, op1(Si), 0 },
236/*aa*/ { "", FALSE, NONE, 0, 0 },
237/*ab*/ { "bts", TRUE, LONG, op2(E,R), 0 },
238/*ac*/ { "shrd", TRUE, LONG, op3(Ib,E,R), 0 },
239/*ad*/ { "shrd", TRUE, LONG, op3(CL,E,R), 0 },
240/*a6*/ { "", FALSE, NONE, 0, 0 },
241/*a7*/ { "imul", TRUE, LONG, op2(E,R), 0 },
242};
243
225/*a0*/ { "push", FALSE, NONE, op1(Si), 0 },
226/*a1*/ { "pop", FALSE, NONE, op1(Si), 0 },
227/*a2*/ { "", FALSE, NONE, 0, 0 },
228/*a3*/ { "bt", TRUE, LONG, op2(E,R), 0 },
229/*a4*/ { "shld", TRUE, LONG, op3(Ib,E,R), 0 },
230/*a5*/ { "shld", TRUE, LONG, op3(CL,E,R), 0 },
231/*a6*/ { "", FALSE, NONE, 0, 0 },
232/*a7*/ { "", FALSE, NONE, 0, 0 },
233
234/*a8*/ { "push", FALSE, NONE, op1(Si), 0 },
235/*a9*/ { "pop", FALSE, NONE, op1(Si), 0 },
236/*aa*/ { "", FALSE, NONE, 0, 0 },
237/*ab*/ { "bts", TRUE, LONG, op2(E,R), 0 },
238/*ac*/ { "shrd", TRUE, LONG, op3(Ib,E,R), 0 },
239/*ad*/ { "shrd", TRUE, LONG, op3(CL,E,R), 0 },
240/*a6*/ { "", FALSE, NONE, 0, 0 },
241/*a7*/ { "imul", TRUE, LONG, op2(E,R), 0 },
242};
243
244struct inst db_inst_0fbx[] = {
244static struct inst db_inst_0fbx[] = {
245/*b0*/ { "", FALSE, NONE, 0, 0 },
246/*b1*/ { "", FALSE, NONE, 0, 0 },
247/*b2*/ { "lss", TRUE, LONG, op2(E, R), 0 },
248/*b3*/ { "bts", TRUE, LONG, op2(R, E), 0 },
249/*b4*/ { "lfs", TRUE, LONG, op2(E, R), 0 },
250/*b5*/ { "lgs", TRUE, LONG, op2(E, R), 0 },
251/*b6*/ { "movzb", TRUE, LONG, op2(E, R), 0 },
252/*b7*/ { "movzw", TRUE, LONG, op2(E, R), 0 },
253
254/*b8*/ { "", FALSE, NONE, 0, 0 },
255/*b9*/ { "", FALSE, NONE, 0, 0 },
256/*ba*/ { "", TRUE, LONG, op2(Ib, E), (char *)db_Grp8 },
257/*bb*/ { "btc", TRUE, LONG, op2(R, E), 0 },
258/*bc*/ { "bsf", TRUE, LONG, op2(E, R), 0 },
259/*bd*/ { "bsr", TRUE, LONG, op2(E, R), 0 },
260/*be*/ { "movsb", TRUE, LONG, op2(E, R), 0 },
261/*bf*/ { "movsw", TRUE, LONG, op2(E, R), 0 },
262};
263
245/*b0*/ { "", FALSE, NONE, 0, 0 },
246/*b1*/ { "", FALSE, NONE, 0, 0 },
247/*b2*/ { "lss", TRUE, LONG, op2(E, R), 0 },
248/*b3*/ { "bts", TRUE, LONG, op2(R, E), 0 },
249/*b4*/ { "lfs", TRUE, LONG, op2(E, R), 0 },
250/*b5*/ { "lgs", TRUE, LONG, op2(E, R), 0 },
251/*b6*/ { "movzb", TRUE, LONG, op2(E, R), 0 },
252/*b7*/ { "movzw", TRUE, LONG, op2(E, R), 0 },
253
254/*b8*/ { "", FALSE, NONE, 0, 0 },
255/*b9*/ { "", FALSE, NONE, 0, 0 },
256/*ba*/ { "", TRUE, LONG, op2(Ib, E), (char *)db_Grp8 },
257/*bb*/ { "btc", TRUE, LONG, op2(R, E), 0 },
258/*bc*/ { "bsf", TRUE, LONG, op2(E, R), 0 },
259/*bd*/ { "bsr", TRUE, LONG, op2(E, R), 0 },
260/*be*/ { "movsb", TRUE, LONG, op2(E, R), 0 },
261/*bf*/ { "movsw", TRUE, LONG, op2(E, R), 0 },
262};
263
264struct inst db_inst_0fcx[] = {
264static struct inst db_inst_0fcx[] = {
265/*c0*/ { "xadd", TRUE, BYTE, op2(R, E), 0 },
266/*c1*/ { "xadd", TRUE, LONG, op2(R, E), 0 },
267/*c2*/ { "", FALSE, NONE, 0, 0 },
268/*c3*/ { "", FALSE, NONE, 0, 0 },
269/*c4*/ { "", FALSE, NONE, 0, 0 },
270/*c5*/ { "", FALSE, NONE, 0, 0 },
271/*c6*/ { "", FALSE, NONE, 0, 0 },
272/*c7*/ { "", FALSE, NONE, 0, 0 },
273/*c8*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
274/*c9*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
275/*ca*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
276/*cb*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
277/*cc*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
278/*cd*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
279/*ce*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
280/*cf*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
281};
282
265/*c0*/ { "xadd", TRUE, BYTE, op2(R, E), 0 },
266/*c1*/ { "xadd", TRUE, LONG, op2(R, E), 0 },
267/*c2*/ { "", FALSE, NONE, 0, 0 },
268/*c3*/ { "", FALSE, NONE, 0, 0 },
269/*c4*/ { "", FALSE, NONE, 0, 0 },
270/*c5*/ { "", FALSE, NONE, 0, 0 },
271/*c6*/ { "", FALSE, NONE, 0, 0 },
272/*c7*/ { "", FALSE, NONE, 0, 0 },
273/*c8*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
274/*c9*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
275/*ca*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
276/*cb*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
277/*cc*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
278/*cd*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
279/*ce*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
280/*cf*/ { "bswap", FALSE, LONG, op1(Ri), 0 },
281};
282
283struct inst db_inst_0fdx[] = {
283static struct inst db_inst_0fdx[] = {
284/*c0*/ { "cmpxchg",TRUE, BYTE, op2(R, E), 0 },
285/*c1*/ { "cmpxchg",TRUE, LONG, op2(R, E), 0 },
286/*c2*/ { "", FALSE, NONE, 0, 0 },
287/*c3*/ { "", FALSE, NONE, 0, 0 },
288/*c4*/ { "", FALSE, NONE, 0, 0 },
289/*c5*/ { "", FALSE, NONE, 0, 0 },
290/*c6*/ { "", FALSE, NONE, 0, 0 },
291/*c7*/ { "", FALSE, NONE, 0, 0 },
292/*c8*/ { "", FALSE, NONE, 0, 0 },
293/*c9*/ { "", FALSE, NONE, 0, 0 },
294/*ca*/ { "", FALSE, NONE, 0, 0 },
295/*cb*/ { "", FALSE, NONE, 0, 0 },
296/*cc*/ { "", FALSE, NONE, 0, 0 },
297/*cd*/ { "", FALSE, NONE, 0, 0 },
298/*ce*/ { "", FALSE, NONE, 0, 0 },
299/*cf*/ { "", FALSE, NONE, 0, 0 },
300};
301
284/*c0*/ { "cmpxchg",TRUE, BYTE, op2(R, E), 0 },
285/*c1*/ { "cmpxchg",TRUE, LONG, op2(R, E), 0 },
286/*c2*/ { "", FALSE, NONE, 0, 0 },
287/*c3*/ { "", FALSE, NONE, 0, 0 },
288/*c4*/ { "", FALSE, NONE, 0, 0 },
289/*c5*/ { "", FALSE, NONE, 0, 0 },
290/*c6*/ { "", FALSE, NONE, 0, 0 },
291/*c7*/ { "", FALSE, NONE, 0, 0 },
292/*c8*/ { "", FALSE, NONE, 0, 0 },
293/*c9*/ { "", FALSE, NONE, 0, 0 },
294/*ca*/ { "", FALSE, NONE, 0, 0 },
295/*cb*/ { "", FALSE, NONE, 0, 0 },
296/*cc*/ { "", FALSE, NONE, 0, 0 },
297/*cd*/ { "", FALSE, NONE, 0, 0 },
298/*ce*/ { "", FALSE, NONE, 0, 0 },
299/*cf*/ { "", FALSE, NONE, 0, 0 },
300};
301
302struct inst *db_inst_0f[] = {
302static struct inst *db_inst_0f[] = {
303 db_inst_0f0x,
304 0,
305 db_inst_0f2x,
306 0,
307 0,
308 0,
309 0,
310 0,
311 db_inst_0f8x,
312 db_inst_0f9x,
313 db_inst_0fax,
314 db_inst_0fbx,
315 db_inst_0fcx,
316 db_inst_0fdx,
317 0,
318 0
319};
320
303 db_inst_0f0x,
304 0,
305 db_inst_0f2x,
306 0,
307 0,
308 0,
309 0,
310 0,
311 db_inst_0f8x,
312 db_inst_0f9x,
313 db_inst_0fax,
314 db_inst_0fbx,
315 db_inst_0fcx,
316 db_inst_0fdx,
317 0,
318 0
319};
320
321char * db_Esc92[] = {
321static char * db_Esc92[] = {
322 "fnop", "", "", "", "", "", "", ""
323};
322 "fnop", "", "", "", "", "", "", ""
323};
324char * db_Esc93[] = {
324static char * db_Esc93[] = {
325 "", "", "", "", "", "", "", ""
326};
325 "", "", "", "", "", "", "", ""
326};
327char * db_Esc94[] = {
327static char * db_Esc94[] = {
328 "fchs", "fabs", "", "", "ftst", "fxam", "", ""
329};
328 "fchs", "fabs", "", "", "ftst", "fxam", "", ""
329};
330char * db_Esc95[] = {
330static char * db_Esc95[] = {
331 "fld1", "fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz",""
332};
331 "fld1", "fldl2t","fldl2e","fldpi","fldlg2","fldln2","fldz",""
332};
333char * db_Esc96[] = {
333static char * db_Esc96[] = {
334 "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp",
335 "fincstp"
336};
334 "f2xm1","fyl2x","fptan","fpatan","fxtract","fprem1","fdecstp",
335 "fincstp"
336};
337char * db_Esc97[] = {
337static char * db_Esc97[] = {
338 "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos"
339};
340
338 "fprem","fyl2xp1","fsqrt","fsincos","frndint","fscale","fsin","fcos"
339};
340
341char * db_Esca4[] = {
341static char * db_Esca4[] = {
342 "", "fucompp","", "", "", "", "", ""
343};
344
342 "", "fucompp","", "", "", "", "", ""
343};
344
345char * db_Escb4[] = {
345static char * db_Escb4[] = {
346 "", "", "fnclex","fninit","", "", "", ""
347};
348
346 "", "", "fnclex","fninit","", "", "", ""
347};
348
349char * db_Esce3[] = {
349static char * db_Esce3[] = {
350 "", "fcompp","", "", "", "", "", ""
351};
352
350 "", "fcompp","", "", "", "", "", ""
351};
352
353char * db_Escf4[] = {
353static char * db_Escf4[] = {
354 "fnstsw","", "", "", "", "", "", ""
355};
356
354 "fnstsw","", "", "", "", "", "", ""
355};
356
357struct finst db_Esc8[] = {
357static struct finst db_Esc8[] = {
358/*0*/ { "fadd", SNGL, op2(STI,ST), 0 },
359/*1*/ { "fmul", SNGL, op2(STI,ST), 0 },
360/*2*/ { "fcom", SNGL, op2(STI,ST), 0 },
361/*3*/ { "fcomp", SNGL, op2(STI,ST), 0 },
362/*4*/ { "fsub", SNGL, op2(STI,ST), 0 },
363/*5*/ { "fsubr", SNGL, op2(STI,ST), 0 },
364/*6*/ { "fdiv", SNGL, op2(STI,ST), 0 },
365/*7*/ { "fdivr", SNGL, op2(STI,ST), 0 },
366};
367
358/*0*/ { "fadd", SNGL, op2(STI,ST), 0 },
359/*1*/ { "fmul", SNGL, op2(STI,ST), 0 },
360/*2*/ { "fcom", SNGL, op2(STI,ST), 0 },
361/*3*/ { "fcomp", SNGL, op2(STI,ST), 0 },
362/*4*/ { "fsub", SNGL, op2(STI,ST), 0 },
363/*5*/ { "fsubr", SNGL, op2(STI,ST), 0 },
364/*6*/ { "fdiv", SNGL, op2(STI,ST), 0 },
365/*7*/ { "fdivr", SNGL, op2(STI,ST), 0 },
366};
367
368struct finst db_Esc9[] = {
368static struct finst db_Esc9[] = {
369/*0*/ { "fld", SNGL, op1(STI), 0 },
370/*1*/ { "", NONE, op1(STI), "fxch" },
371/*2*/ { "fst", SNGL, op1(X), (char *)db_Esc92 },
372/*3*/ { "fstp", SNGL, op1(X), (char *)db_Esc93 },
373/*4*/ { "fldenv", NONE, op1(X), (char *)db_Esc94 },
374/*5*/ { "fldcw", NONE, op1(X), (char *)db_Esc95 },
375/*6*/ { "fnstenv",NONE, op1(X), (char *)db_Esc96 },
376/*7*/ { "fnstcw", NONE, op1(X), (char *)db_Esc97 },
377};
378
369/*0*/ { "fld", SNGL, op1(STI), 0 },
370/*1*/ { "", NONE, op1(STI), "fxch" },
371/*2*/ { "fst", SNGL, op1(X), (char *)db_Esc92 },
372/*3*/ { "fstp", SNGL, op1(X), (char *)db_Esc93 },
373/*4*/ { "fldenv", NONE, op1(X), (char *)db_Esc94 },
374/*5*/ { "fldcw", NONE, op1(X), (char *)db_Esc95 },
375/*6*/ { "fnstenv",NONE, op1(X), (char *)db_Esc96 },
376/*7*/ { "fnstcw", NONE, op1(X), (char *)db_Esc97 },
377};
378
379struct finst db_Esca[] = {
379static struct finst db_Esca[] = {
380/*0*/ { "fiadd", WORD, 0, 0 },
381/*1*/ { "fimul", WORD, 0, 0 },
382/*2*/ { "ficom", WORD, 0, 0 },
383/*3*/ { "ficomp", WORD, 0, 0 },
384/*4*/ { "fisub", WORD, op1(X), (char *)db_Esca4 },
385/*5*/ { "fisubr", WORD, 0, 0 },
386/*6*/ { "fidiv", WORD, 0, 0 },
387/*7*/ { "fidivr", WORD, 0, 0 }
388};
389
380/*0*/ { "fiadd", WORD, 0, 0 },
381/*1*/ { "fimul", WORD, 0, 0 },
382/*2*/ { "ficom", WORD, 0, 0 },
383/*3*/ { "ficomp", WORD, 0, 0 },
384/*4*/ { "fisub", WORD, op1(X), (char *)db_Esca4 },
385/*5*/ { "fisubr", WORD, 0, 0 },
386/*6*/ { "fidiv", WORD, 0, 0 },
387/*7*/ { "fidivr", WORD, 0, 0 }
388};
389
390struct finst db_Escb[] = {
390static struct finst db_Escb[] = {
391/*0*/ { "fild", WORD, 0, 0 },
392/*1*/ { "", NONE, 0, 0 },
393/*2*/ { "fist", WORD, 0, 0 },
394/*3*/ { "fistp", WORD, 0, 0 },
395/*4*/ { "", WORD, op1(X), (char *)db_Escb4 },
396/*5*/ { "fld", EXTR, 0, 0 },
397/*6*/ { "", WORD, 0, 0 },
398/*7*/ { "fstp", EXTR, 0, 0 },
399};
400
391/*0*/ { "fild", WORD, 0, 0 },
392/*1*/ { "", NONE, 0, 0 },
393/*2*/ { "fist", WORD, 0, 0 },
394/*3*/ { "fistp", WORD, 0, 0 },
395/*4*/ { "", WORD, op1(X), (char *)db_Escb4 },
396/*5*/ { "fld", EXTR, 0, 0 },
397/*6*/ { "", WORD, 0, 0 },
398/*7*/ { "fstp", EXTR, 0, 0 },
399};
400
401struct finst db_Escc[] = {
401static struct finst db_Escc[] = {
402/*0*/ { "fadd", DBLR, op2(ST,STI), 0 },
403/*1*/ { "fmul", DBLR, op2(ST,STI), 0 },
404/*2*/ { "fcom", DBLR, op2(ST,STI), 0 },
405/*3*/ { "fcomp", DBLR, op2(ST,STI), 0 },
406/*4*/ { "fsub", DBLR, op2(ST,STI), "fsubr" },
407/*5*/ { "fsubr", DBLR, op2(ST,STI), "fsub" },
408/*6*/ { "fdiv", DBLR, op2(ST,STI), "fdivr" },
409/*7*/ { "fdivr", DBLR, op2(ST,STI), "fdiv" },
410};
411
402/*0*/ { "fadd", DBLR, op2(ST,STI), 0 },
403/*1*/ { "fmul", DBLR, op2(ST,STI), 0 },
404/*2*/ { "fcom", DBLR, op2(ST,STI), 0 },
405/*3*/ { "fcomp", DBLR, op2(ST,STI), 0 },
406/*4*/ { "fsub", DBLR, op2(ST,STI), "fsubr" },
407/*5*/ { "fsubr", DBLR, op2(ST,STI), "fsub" },
408/*6*/ { "fdiv", DBLR, op2(ST,STI), "fdivr" },
409/*7*/ { "fdivr", DBLR, op2(ST,STI), "fdiv" },
410};
411
412struct finst db_Escd[] = {
412static struct finst db_Escd[] = {
413/*0*/ { "fld", DBLR, op1(STI), "ffree" },
414/*1*/ { "", NONE, 0, 0 },
415/*2*/ { "fst", DBLR, op1(STI), 0 },
416/*3*/ { "fstp", DBLR, op1(STI), 0 },
417/*4*/ { "frstor", NONE, op1(STI), "fucom" },
418/*5*/ { "", NONE, op1(STI), "fucomp" },
419/*6*/ { "fnsave", NONE, 0, 0 },
420/*7*/ { "fnstsw", NONE, 0, 0 },
421};
422
413/*0*/ { "fld", DBLR, op1(STI), "ffree" },
414/*1*/ { "", NONE, 0, 0 },
415/*2*/ { "fst", DBLR, op1(STI), 0 },
416/*3*/ { "fstp", DBLR, op1(STI), 0 },
417/*4*/ { "frstor", NONE, op1(STI), "fucom" },
418/*5*/ { "", NONE, op1(STI), "fucomp" },
419/*6*/ { "fnsave", NONE, 0, 0 },
420/*7*/ { "fnstsw", NONE, 0, 0 },
421};
422
423struct finst db_Esce[] = {
423static struct finst db_Esce[] = {
424/*0*/ { "fiadd", LONG, op2(ST,STI), "faddp" },
425/*1*/ { "fimul", LONG, op2(ST,STI), "fmulp" },
426/*2*/ { "ficom", LONG, 0, 0 },
427/*3*/ { "ficomp", LONG, op1(X), (char *)db_Esce3 },
428/*4*/ { "fisub", LONG, op2(ST,STI), "fsubrp" },
429/*5*/ { "fisubr", LONG, op2(ST,STI), "fsubp" },
430/*6*/ { "fidiv", LONG, op2(ST,STI), "fdivrp" },
431/*7*/ { "fidivr", LONG, op2(ST,STI), "fdivp" },
432};
433
424/*0*/ { "fiadd", LONG, op2(ST,STI), "faddp" },
425/*1*/ { "fimul", LONG, op2(ST,STI), "fmulp" },
426/*2*/ { "ficom", LONG, 0, 0 },
427/*3*/ { "ficomp", LONG, op1(X), (char *)db_Esce3 },
428/*4*/ { "fisub", LONG, op2(ST,STI), "fsubrp" },
429/*5*/ { "fisubr", LONG, op2(ST,STI), "fsubp" },
430/*6*/ { "fidiv", LONG, op2(ST,STI), "fdivrp" },
431/*7*/ { "fidivr", LONG, op2(ST,STI), "fdivp" },
432};
433
434struct finst db_Escf[] = {
434static struct finst db_Escf[] = {
435/*0*/ { "fild", LONG, 0, 0 },
436/*1*/ { "", LONG, 0, 0 },
437/*2*/ { "fist", LONG, 0, 0 },
438/*3*/ { "fistp", LONG, 0, 0 },
439/*4*/ { "fbld", NONE, op1(XA), (char *)db_Escf4 },
440/*5*/ { "fld", QUAD, 0, 0 },
441/*6*/ { "fbstp", NONE, 0, 0 },
442/*7*/ { "fstp", QUAD, 0, 0 },
443};
444
435/*0*/ { "fild", LONG, 0, 0 },
436/*1*/ { "", LONG, 0, 0 },
437/*2*/ { "fist", LONG, 0, 0 },
438/*3*/ { "fistp", LONG, 0, 0 },
439/*4*/ { "fbld", NONE, op1(XA), (char *)db_Escf4 },
440/*5*/ { "fld", QUAD, 0, 0 },
441/*6*/ { "fbstp", NONE, 0, 0 },
442/*7*/ { "fstp", QUAD, 0, 0 },
443};
444
445struct finst *db_Esc_inst[] = {
445static struct finst *db_Esc_inst[] = {
446 db_Esc8, db_Esc9, db_Esca, db_Escb,
447 db_Escc, db_Escd, db_Esce, db_Escf
448};
449
446 db_Esc8, db_Esc9, db_Esca, db_Escb,
447 db_Escc, db_Escd, db_Esce, db_Escf
448};
449
450char * db_Grp1[] = {
450static char * db_Grp1[] = {
451 "add",
452 "or",
453 "adc",
454 "sbb",
455 "and",
456 "sub",
457 "xor",
458 "cmp"
459};
460
451 "add",
452 "or",
453 "adc",
454 "sbb",
455 "and",
456 "sub",
457 "xor",
458 "cmp"
459};
460
461char * db_Grp2[] = {
461static char * db_Grp2[] = {
462 "rol",
463 "ror",
464 "rcl",
465 "rcr",
466 "shl",
467 "shr",
468 "shl",
469 "sar"
470};
471
462 "rol",
463 "ror",
464 "rcl",
465 "rcr",
466 "shl",
467 "shr",
468 "shl",
469 "sar"
470};
471
472struct inst db_Grp3[] = {
472static struct inst db_Grp3[] = {
473 { "test", TRUE, NONE, op2(I,E), 0 },
474 { "test", TRUE, NONE, op2(I,E), 0 },
475 { "not", TRUE, NONE, op1(E), 0 },
476 { "neg", TRUE, NONE, op1(E), 0 },
477 { "mul", TRUE, NONE, op2(E,A), 0 },
478 { "imul", TRUE, NONE, op2(E,A), 0 },
479 { "div", TRUE, NONE, op2(E,A), 0 },
480 { "idiv", TRUE, NONE, op2(E,A), 0 },
481};
482
473 { "test", TRUE, NONE, op2(I,E), 0 },
474 { "test", TRUE, NONE, op2(I,E), 0 },
475 { "not", TRUE, NONE, op1(E), 0 },
476 { "neg", TRUE, NONE, op1(E), 0 },
477 { "mul", TRUE, NONE, op2(E,A), 0 },
478 { "imul", TRUE, NONE, op2(E,A), 0 },
479 { "div", TRUE, NONE, op2(E,A), 0 },
480 { "idiv", TRUE, NONE, op2(E,A), 0 },
481};
482
483struct inst db_Grp4[] = {
483static struct inst db_Grp4[] = {
484 { "inc", TRUE, BYTE, op1(E), 0 },
485 { "dec", TRUE, BYTE, op1(E), 0 },
486 { "", TRUE, NONE, 0, 0 },
487 { "", TRUE, NONE, 0, 0 },
488 { "", TRUE, NONE, 0, 0 },
489 { "", TRUE, NONE, 0, 0 },
490 { "", TRUE, NONE, 0, 0 },
491 { "", TRUE, NONE, 0, 0 }
492};
493
484 { "inc", TRUE, BYTE, op1(E), 0 },
485 { "dec", TRUE, BYTE, op1(E), 0 },
486 { "", TRUE, NONE, 0, 0 },
487 { "", TRUE, NONE, 0, 0 },
488 { "", TRUE, NONE, 0, 0 },
489 { "", TRUE, NONE, 0, 0 },
490 { "", TRUE, NONE, 0, 0 },
491 { "", TRUE, NONE, 0, 0 }
492};
493
494struct inst db_Grp5[] = {
494static struct inst db_Grp5[] = {
495 { "inc", TRUE, LONG, op1(E), 0 },
496 { "dec", TRUE, LONG, op1(E), 0 },
497 { "call", TRUE, NONE, op1(Eind),0 },
498 { "lcall", TRUE, NONE, op1(Eind),0 },
499 { "jmp", TRUE, NONE, op1(Eind),0 },
500 { "ljmp", TRUE, NONE, op1(Eind),0 },
501 { "push", TRUE, LONG, op1(E), 0 },
502 { "", TRUE, NONE, 0, 0 }
503};
504
495 { "inc", TRUE, LONG, op1(E), 0 },
496 { "dec", TRUE, LONG, op1(E), 0 },
497 { "call", TRUE, NONE, op1(Eind),0 },
498 { "lcall", TRUE, NONE, op1(Eind),0 },
499 { "jmp", TRUE, NONE, op1(Eind),0 },
500 { "ljmp", TRUE, NONE, op1(Eind),0 },
501 { "push", TRUE, LONG, op1(E), 0 },
502 { "", TRUE, NONE, 0, 0 }
503};
504
505struct inst db_inst_table[256] = {
505static struct inst db_inst_table[256] = {
506/*00*/ { "add", TRUE, BYTE, op2(R, E), 0 },
507/*01*/ { "add", TRUE, LONG, op2(R, E), 0 },
508/*02*/ { "add", TRUE, BYTE, op2(E, R), 0 },
509/*03*/ { "add", TRUE, LONG, op2(E, R), 0 },
510/*04*/ { "add", FALSE, BYTE, op2(Is, A), 0 },
511/*05*/ { "add", FALSE, LONG, op2(Is, A), 0 },
512/*06*/ { "push", FALSE, NONE, op1(Si), 0 },
513/*07*/ { "pop", FALSE, NONE, op1(Si), 0 },

--- 274 unchanged lines hidden (view full) ---

788/*fa*/ { "cli", FALSE, NONE, 0, 0 },
789/*fb*/ { "sti", FALSE, NONE, 0, 0 },
790/*fc*/ { "cld", FALSE, NONE, 0, 0 },
791/*fd*/ { "std", FALSE, NONE, 0, 0 },
792/*fe*/ { "", TRUE, NONE, 0, (char *)db_Grp4 },
793/*ff*/ { "", TRUE, NONE, 0, (char *)db_Grp5 },
794};
795
506/*00*/ { "add", TRUE, BYTE, op2(R, E), 0 },
507/*01*/ { "add", TRUE, LONG, op2(R, E), 0 },
508/*02*/ { "add", TRUE, BYTE, op2(E, R), 0 },
509/*03*/ { "add", TRUE, LONG, op2(E, R), 0 },
510/*04*/ { "add", FALSE, BYTE, op2(Is, A), 0 },
511/*05*/ { "add", FALSE, LONG, op2(Is, A), 0 },
512/*06*/ { "push", FALSE, NONE, op1(Si), 0 },
513/*07*/ { "pop", FALSE, NONE, op1(Si), 0 },

--- 274 unchanged lines hidden (view full) ---

788/*fa*/ { "cli", FALSE, NONE, 0, 0 },
789/*fb*/ { "sti", FALSE, NONE, 0, 0 },
790/*fc*/ { "cld", FALSE, NONE, 0, 0 },
791/*fd*/ { "std", FALSE, NONE, 0, 0 },
792/*fe*/ { "", TRUE, NONE, 0, (char *)db_Grp4 },
793/*ff*/ { "", TRUE, NONE, 0, (char *)db_Grp5 },
794};
795
796struct inst db_bad_inst =
796static struct inst db_bad_inst =
797 { "???", FALSE, NONE, 0, 0 }
798;
799
800#define f_mod(byte) ((byte)>>6)
801#define f_reg(byte) (((byte)>>3)&0x7)
802#define f_rm(byte) ((byte)&0x7)
803
804#define sib_ss(byte) ((byte)>>6)
805#define sib_index(byte) (((byte)>>3)&0x7)
806#define sib_base(byte) ((byte)&0x7)
807
797 { "???", FALSE, NONE, 0, 0 }
798;
799
800#define f_mod(byte) ((byte)>>6)
801#define f_reg(byte) (((byte)>>3)&0x7)
802#define f_rm(byte) ((byte)&0x7)
803
804#define sib_ss(byte) ((byte)>>6)
805#define sib_index(byte) (((byte)>>3)&0x7)
806#define sib_base(byte) ((byte)&0x7)
807
808struct i_addr {
808static struct i_addr {
809 int is_reg; /* if reg, reg number is in 'disp' */
810 int disp;
811 char * base;
812 char * index;
813 int ss;
814};
815
809 int is_reg; /* if reg, reg number is in 'disp' */
810 int disp;
811 char * base;
812 char * index;
813 int ss;
814};
815
816char * db_index_reg_16[8] = {
816static char * db_index_reg_16[8] = {
817 "%bx,%si",
818 "%bx,%di",
819 "%bp,%si",
820 "%bp,%di",
821 "%si",
822 "%di",
823 "%bp",
824 "%bx"
825};
826
817 "%bx,%si",
818 "%bx,%di",
819 "%bp,%si",
820 "%bp,%di",
821 "%si",
822 "%di",
823 "%bp",
824 "%bx"
825};
826
827char * db_reg[3][8] = {
827static char * db_reg[3][8] = {
828 "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh",
829 "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
830 "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi"
831};
832
828 "%al", "%cl", "%dl", "%bl", "%ah", "%ch", "%dh", "%bh",
829 "%ax", "%cx", "%dx", "%bx", "%sp", "%bp", "%si", "%di",
830 "%eax", "%ecx", "%edx", "%ebx", "%esp", "%ebp", "%esi", "%edi"
831};
832
833char * db_seg_reg[8] = {
833static char * db_seg_reg[8] = {
834 "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "", ""
835};
836
837/*
838 * lengths for size attributes
839 */
834 "%es", "%cs", "%ss", "%ds", "%fs", "%gs", "", ""
835};
836
837/*
838 * lengths for size attributes
839 */
840int db_lengths[] = {
840static int db_lengths[] = {
841 1, /* BYTE */
842 2, /* WORD */
843 4, /* LONG */
844 8, /* QUAD */
845 4, /* SNGL */
846 8, /* DBLR */
847 10, /* EXTR */
848};
849
850#define get_value_inc(result, loc, size, is_signed) \
851 result = db_get_value((loc), (size), (is_signed)); \
852 (loc) += (size);
853
854/*
855 * Read address at location and return updated location.
856 */
841 1, /* BYTE */
842 2, /* WORD */
843 4, /* LONG */
844 8, /* QUAD */
845 4, /* SNGL */
846 8, /* DBLR */
847 10, /* EXTR */
848};
849
850#define get_value_inc(result, loc, size, is_signed) \
851 result = db_get_value((loc), (size), (is_signed)); \
852 (loc) += (size);
853
854/*
855 * Read address at location and return updated location.
856 */
857db_addr_t
857static db_addr_t
858db_read_address(loc, short_addr, regmodrm, addrp)
859 db_addr_t loc;
860 int short_addr;
861 int regmodrm;
862 struct i_addr *addrp; /* out */
863{
864 int mod, rm, sib, index, disp;
865

--- 68 unchanged lines hidden (view full) ---

934 addrp->disp = disp;
935 addrp->base = db_reg[LONG][rm];
936 break;
937 }
938 }
939 return (loc);
940}
941
858db_read_address(loc, short_addr, regmodrm, addrp)
859 db_addr_t loc;
860 int short_addr;
861 int regmodrm;
862 struct i_addr *addrp; /* out */
863{
864 int mod, rm, sib, index, disp;
865

--- 68 unchanged lines hidden (view full) ---

934 addrp->disp = disp;
935 addrp->base = db_reg[LONG][rm];
936 break;
937 }
938 }
939 return (loc);
940}
941
942void
942static void
943db_print_address(seg, size, addrp)
944 char * seg;
945 int size;
946 struct i_addr *addrp;
947{
948 if (addrp->is_reg) {
949 db_printf("%s", db_reg[size][addrp->disp]);
950 return;

--- 13 unchanged lines hidden (view full) ---

964 db_printf(")");
965 }
966}
967
968/*
969 * Disassemble floating-point ("escape") instruction
970 * and return updated location.
971 */
943db_print_address(seg, size, addrp)
944 char * seg;
945 int size;
946 struct i_addr *addrp;
947{
948 if (addrp->is_reg) {
949 db_printf("%s", db_reg[size][addrp->disp]);
950 return;

--- 13 unchanged lines hidden (view full) ---

964 db_printf(")");
965 }
966}
967
968/*
969 * Disassemble floating-point ("escape") instruction
970 * and return updated location.
971 */
972db_addr_t
972static db_addr_t
973db_disasm_esc(loc, inst, short_addr, size, seg)
974 db_addr_t loc;
975 int inst;
976 int short_addr;
977 int size;
978 char * seg;
979{
980 int regmodrm;

--- 395 unchanged lines hidden ---
973db_disasm_esc(loc, inst, short_addr, size, seg)
974 db_addr_t loc;
975 int inst;
976 int short_addr;
977 int size;
978 char * seg;
979{
980 int regmodrm;

--- 395 unchanged lines hidden ---