/* This file is composed of several different files from the upstream
sourceware.org CVS. Original file boundaries marked with **** */
#include <string.h>
#include <math.h>
#include <stdio.h>
#include "dis-asm.h"
/* **** foatformat.h from sourceware.org CVS 2005-08-14. */
/* IEEE floating point support declarations, for GDB, the GNU Debugger.
Copyright 1991, 1994, 1995, 1997, 2000, 2003 Free Software Foundation, Inc.
This file is part of GDB.
This program is free software; you can redistribute it and/or modify
it under the terms of the GNU General Public License as published by
the Free Software Foundation; either version 2 of the License, or
(at your option) any later version.
This program is distributed in the hope that it will be useful,
but WITHOUT ANY WARRANTY; without even the implied warranty of
MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this program; if not, write to the Free Software
Foundation, Inc., 51 Franklin Street - Fifth Floor, Boston, MA 02110-1301, USA. */
#if !defined (FLOATFORMAT_H)
#define FLOATFORMAT_H 1
/*#include "ansidecl.h" */
/* A floatformat consists of a sign bit, an exponent and a mantissa. Once the
bytes are concatenated according to the byteorder flag, then each of those
fields is contiguous. We number the bits with 0 being the most significant
(i.e. BITS_BIG_ENDIAN type numbering), and specify which bits each field
contains with the *_start and *_len fields. */
/* What is the order of the bytes. */
enum floatformat_byteorders {
/* Standard little endian byte order.
EX: 1.2345678e10 => 00 00 80 c5 e0 fe 06 42 */
floatformat_little,
/* Standard big endian byte order.
EX: 1.2345678e10 => 42 06 fe e0 c5 80 00 00 */
floatformat_big,
/* Little endian byte order but big endian word order.
EX: 1.2345678e10 => e0 fe 06 42 00 00 80 c5 */
floatformat_littlebyte_bigword
};
enum floatformat_intbit { floatformat_intbit_yes, floatformat_intbit_no };
struct floatformat
{
enum floatformat_byteorders byteorder;
unsigned int totalsize; /* Total size of number in bits */
/* Sign bit is always one bit long. 1 means negative, 0 means positive. */
unsigned int sign_start;
unsigned int exp_start;
unsigned int exp_len;
/* Bias added to a "true" exponent to form the biased exponent. It
is intentionally signed as, otherwize, -exp_bias can turn into a
very large number (e.g., given the exp_bias of 0x3fff and a 64
bit long, the equation (long)(1 - exp_bias) evaluates to
4294950914) instead of -16382). */
int exp_bias;
/* Exponent value which indicates NaN. This is the actual value stored in
the float, not adjusted by the exp_bias. This usually consists of all
one bits. */
unsigned int exp_nan;
unsigned int man_start;
unsigned int man_len;
/* Is the integer bit explicit or implicit? */
enum floatformat_intbit intbit;
/* Internal name for debugging. */
const char *name;
/* Validator method. */
int (*is_valid) (const struct floatformat *fmt, const char *from);
};
/* floatformats for IEEE single and double, big and little endian. */
extern const struct floatformat floatformat_ieee_single_big;
extern const struct floatformat floatformat_ieee_single_little;
extern const struct floatformat floatformat_ieee_double_big;
extern const struct floatformat floatformat_ieee_double_little;
/* floatformat for ARM IEEE double, little endian bytes and big endian words */
extern const struct floatformat floatformat_ieee_double_littlebyte_bigword;
/* floatformats for various extendeds. */
extern const struct floatformat floatformat_i387_ext;
extern const struct floatformat floatformat_m68881_ext;
extern const struct floatformat floatformat_i960_ext;
extern const struct floatformat floatformat_m88110_ext;
extern const struct floatformat floatformat_m88110_harris_ext;
extern const struct floatformat floatformat_arm_ext_big;
extern const struct floatformat floatformat_arm_ext_littlebyte_bigword;
/* IA-64 Floating Point register spilt into memory. */
extern const struct floatformat floatformat_ia64_spill_big;
extern const struct floatformat floatformat_ia64_spill_little;
extern const struct floatformat floatformat_ia64_quad_big;
extern const struct floatformat floatformat_ia64_quad_little;
/* Convert from FMT to a double.
FROM is the address of the extended float.
Store the double in *TO. */
extern void
floatformat_to_double (const struct floatformat *, const char *, double *);
/* The converse: convert the double *FROM to FMT
and store where TO points. */
extern void
floatformat_from_double (const struct floatformat *, const double *, char *);
/* Return non-zero iff the data at FROM is a valid number in format FMT. */
extern int
floatformat_is_valid (const struct floatformat *fmt, const char *from);
#endif /* defined (FLOATFORMAT_H) */
/* **** End of floatformat.h */
/* **** m68k-dis.h from sourceware.org CVS 2005-08-14. */
/* Opcode table header for m680[01234]0/m6888[12]/m68851.
Copyright 1989, 1991, 1992, 1993, 1994, 1995, 1996, 1997, 1999, 2001,
2003, 2004 Free Software Foundation, Inc.
This file is part of GDB, GAS, and the GNU binutils.
GDB, GAS, and the GNU binutils are free software; you can redistribute
them and/or modify them under the terms of the GNU General Public
License as published by the Free Software Foundation; either version
1, or (at your option) any later version.
GDB, GAS, and the GNU binutils are distributed in the hope that they
will be useful, but WITHOUT ANY WARRANTY; without even the implied
warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See
the GNU General Public License for more details.
You should have received a copy of the GNU General Public License
along with this file; see the file COPYING. If not, write to the Free
Software Foundation, 51 Franklin Street - Fifth Floor, Boston, MA
02110-1301, USA. */
/* These are used as bit flags for the arch field in the m68k_opcode
structure. */
#define _m68k_undef 0
#define m68000 0x001
#define m68008 m68000 /* Synonym for -m68000. otherwise unused. */
#define m68010 0x002
#define m68020 0x004
#define m68030 0x008
#define m68ec030 m68030 /* Similar enough to -m68030 to ignore differences;
gas will deal with the few differences. */
#define m68040 0x010
/* There is no 68050. */
#define m68060 0x020
#define m68881 0x040
#define m68882 m68881 /* Synonym for -m68881. otherwise unused. */
#define m68851 0x080
#define cpu32 0x100 /* e.g., 68332 */
#define mcfmac 0x200 /* ColdFire MAC. */
#define mcfemac 0x400 /* ColdFire EMAC. */
#define cfloat 0x800 /* ColdFire FPU. */
#define mcfhwdiv 0x1000 /* ColdFire hardware divide. */
#define mcfisa_a 0x2000 /* ColdFire ISA_A. */
#define mcfisa_aa 0x4000 /* ColdFire ISA_A+. */
#define mcfisa_b 0x8000 /* ColdFire ISA_B. */
#define mcfusp 0x10000 /* ColdFire USP instructions. */
#define mcf5200 0x20000
#define mcf5206e 0x40000
#define mcf521x 0x80000
#define mcf5249 0x100000
#define mcf528x 0x200000
#define mcf5307 0x400000
#define mcf5407 0x800000
#define mcf5470 0x1000000
#define mcf5480 0x2000000
/* Handy aliases. */
#define m68040up (m68040 | m68060)
#define m68030up (m68030 | m68040up)
#define m68020up (m68020 | m68030up)
#define m68010up (m68010 | cpu32 | m68020up)
#define m68000up (m68000 | m68010up)
#define mfloat (m68881 | m68882 | m68040 | m68060)
#define mmmu (m68851 | m68030 | m68040 | m68060)
/* The structure used to hold information for an opcode. */
struct m68k_opcode
{
/* The opcode name. */
const char *name;
/* The pseudo-size of the instruction(in bytes). Used to determine
number of bytes necessary to disassemble the instruction. */
unsigned int size;
/* Th
没有合适的资源?快使用搜索试试~ 我知道了~
QEMU源代码,二进制翻译工具
2星 需积分: 28 18 下载量 196 浏览量
2008-10-24
22:12:52
上传
评论 1
收藏 1.81MB GZ 举报
温馨提示
共464个文件
c:228个
h:145个
ld:11个
qemu的源码,主要应用在二进制翻译中,希望对大家有帮助
资源推荐
资源详情
资源评论
收起资源包目录
QEMU源代码,二进制翻译工具 (464个子文件)
.#Makefile.1.111 5KB
ar 2KB
ppc_rom.bin 512KB
bios.bin 128KB
vgabios.bin 37KB
vgabios-cirrus.bin 35KB
pxe-pcnet.bin 32KB
pxe-rtl8139.bin 32KB
pxe-ne2k_pci.bin 32KB
linux_boot.bin 512B
m68k-dis.c 212KB
translate.c 197KB
softfloat.c 188KB
vl.c 184KB
mips-dis.c 158KB
sparc-dis.c 151KB
translate.c 139KB
ppc-dis.c 129KB
syscall.c 121KB
helper.c 108KB
rtl8139.c 100KB
translate.c 98KB
i386-dis.c 97KB
cirrus_vga.c 93KB
dyngen.c 88KB
sh4-dis.c 83KB
ide.c 83KB
alpha-dis.c 80KB
block-vvfat.c 78KB
translate.c 77KB
translate.c 75KB
block-qcow2.c 71KB
exec.c 71KB
test-i386.c 68KB
translate.c 66KB
monitor.c 64KB
aes.c 60KB
pcnet.c 59KB
translate_init.c 59KB
signal.c 57KB
main.c 57KB
vga.c 56KB
fdc.c 56KB
arm-dis.c 55KB
lsi53c895a.c 52KB
cpu-exec.c 48KB
tcp_input.c 48KB
syscall.c 47KB
audio.c 46KB
helper.c 43KB
op.c 42KB
op.c 40KB
elfload.c 36KB
sb16.c 36KB
fmopl.c 35KB
tcp_subr.c 35KB
block.c 34KB
usb-ohci.c 34KB
translate-copy.c 34KB
console.c 33KB
block-raw.c 33KB
helper2.c 33KB
translate.c 32KB
vnc.c 31KB
gdbstub.c 30KB
main.c 29KB
es1370.c 29KB
op.c 28KB
block-qcow.c 28KB
apic.c 27KB
dsoundaudio.c 26KB
machload.c 26KB
openpic.c 26KB
alsaaudio.c 26KB
kqemu.c 25KB
flatload.c 25KB
ne2000.c 24KB
usb-uhci.c 24KB
block-vmdk.c 23KB
op_helper.c 22KB
pc.c 22KB
op.c 21KB
sh7750.c 21KB
tap-win32.c 20KB
ossaudio.c 20KB
ppc_prep.c 20KB
misc.c 19KB
smc91c111.c 19KB
gt64xxx.c 19KB
pflash_cfi02.c 18KB
qemu-img.c 18KB
cuda.c 18KB
ppc_chrp.c 18KB
pci.c 18KB
helper.c 17KB
tcp_output.c 17KB
udp.c 17KB
ip_input.c 17KB
ps2.c 17KB
scsi-disk.c 17KB
共 464 条
- 1
- 2
- 3
- 4
- 5
资源评论
- csdnwr2016-12-02什么东西,没有可执行文件,也不是可运行程序,一堆文件夹和文件,要怎么用???!!!!!
hongyanghust
- 粉丝: 11
- 资源: 1
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功