git-svn-id: svn://svn.savannah.nongnu.org/qemu/trunk@66 c046a42c-6fe2-441c-8c8c-71466251a162
This commit is contained in:
bellard 2003-03-30 20:59:46 +00:00
parent fb3e5849bb
commit fd429f2f6c
3 changed files with 38 additions and 18 deletions

View file

@ -19,6 +19,10 @@ ifeq ($(ARCH),ppc)
OP_CFLAGS=$(CFLAGS) OP_CFLAGS=$(CFLAGS)
endif endif
ifeq ($(ARCH),s390)
OP_CFLAGS=$(CFLAGS)
endif
ifeq ($(GCC_MAJOR),3) ifeq ($(GCC_MAJOR),3)
# very important to generate a return at the end of every operation # very important to generate a return at the end of every operation
OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls OP_CFLAGS+=-fno-reorder-blocks -fno-optimize-sibling-calls
@ -94,19 +98,20 @@ qemu-doc.html: qemu-doc.texi
texi2html -monolithic -number $< texi2html -monolithic -number $<
FILES= \ FILES= \
README COPYING COPYING.LIB TODO Changelog VERSION \ README README.distrib COPYING COPYING.LIB TODO Changelog VERSION \
dyngen.c ioctls.h ops_template.h syscall_types.h\ dyngen.c ioctls.h ops_template.h op_string.h syscall_types.h\
Makefile elf.h linux_bin.h segment.h thunk.c\ Makefile elf.h linux_bin.h segment.h thunk.c\
elfload.c main.c signal.c thunk.h\ elfload.c main.c signal.c thunk.h\
cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\ cpu-i386.h qemu.h op-i386.c opc-i386.h syscall-i386.h translate-i386.c\
dis-asm.h gen-i386.h op-i386.h syscall.c\ dis-asm.h gen-i386.h op-i386.h syscall.c\
dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\ dis-buf.c i386-dis.c opreg_template.h syscall_defs.h\
i386.ld ppc.ld exec-i386.h exec-i386.c configure \ i386.ld ppc.ld s390.ld exec-i386.h exec-i386.c configure \
tests/Makefile\ tests/Makefile\
tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\ tests/test-i386.c tests/test-i386-shift.h tests/test-i386.h\
tests/test-i386-muldiv.h tests/test-i386-code16.S\ tests/test-i386-muldiv.h tests/test-i386-code16.S\
tests/hello.c tests/hello tests/sha1.c \ tests/hello.c tests/hello tests/sha1.c \
tests/testsig.c tests/testclone.c tests/testthread.c \ tests/testsig.c tests/testclone.c tests/testthread.c \
tests/runcom.c tests/pi_10.com \
qemu-doc.texi qemu-doc.html qemu-doc.texi qemu-doc.html
FILE=qemu-$(VERSION) FILE=qemu-$(VERSION)

View file

@ -1 +1 @@
0.1.3 0.1.4

View file

@ -12,8 +12,9 @@
QEMU is an x86 processor emulator. Its purpose is to run x86 Linux QEMU is an x86 processor emulator. Its purpose is to run x86 Linux
processes on non-x86 Linux architectures such as PowerPC or ARM. By processes on non-x86 Linux architectures such as PowerPC or ARM. By
using dynamic translation it achieves a reasonnable speed while being using dynamic translation it achieves a reasonnable speed while being
easy to port on new host CPUs. An obviously interesting x86 only process easy to port on new host CPUs. Its main goal is to be able to launch the
is 'wine' (Windows emulation). @code{Wine} Windows API emulator (@url{http://www.winehq.org}) on
non-x86 CPUs.
QEMU features: QEMU features:
@ -21,12 +22,13 @@ QEMU features:
@item User space only x86 emulator. @item User space only x86 emulator.
@item Currently ported on i386 and PowerPC. @item Currently ported on i386, PowerPC and S390.
@item Using dynamic translation for reasonnable speed. @item Using dynamic translation to native code for reasonnable speed.
@item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation. @item The virtual x86 CPU supports 16 bit and 32 bit addressing with segmentation.
User space LDT and GDT are emulated. User space LDT and GDT are emulated. VM86 mode is also supported
(experimental).
@item Generic Linux system call converter, including most ioctls. @item Generic Linux system call converter, including most ioctls.
@ -52,10 +54,6 @@ Current QEMU Limitations:
@item No support for self modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !]. @item No support for self modifying code (yet). [Very few programs need that, a notable exception is QEMU itself !].
@item No VM86 mode (yet), althought the virtual
CPU has support for most of it. [VM86 support is useful to launch old 16
bit DOS programs with dosemu or wine].
@item No SSE/MMX support (yet). @item No SSE/MMX support (yet).
@item No x86-64 support. @item No x86-64 support.
@ -123,10 +121,10 @@ able to do:
qemu /usr/local/qemu-i386/bin/ls-i386 qemu /usr/local/qemu-i386/bin/ls-i386
@end example @end example
@item Download the binary x86 wine install @item Download the binary x86 Wine install
(@file{qemu-i386-wine.tar.gz} on the QEMU web page). (@file{qemu-i386-wine.tar.gz} on the QEMU web page).
@item Configure wine on your account. Look at the provided script @item Configure Wine on your account. Look at the provided script
@file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous @file{/usr/local/qemu-i386/bin/wine-conf.sh}. Your previous
@code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}. @code{$@{HOME@}/.wine} directory is saved to @code{$@{HOME@}/.wine.org}.
@ -177,6 +175,13 @@ code, in particular the ELF file loader). EM86 was limited to an alpha
host and used a proprietary and slow interpreter (the interpreter part host and used a proprietary and slow interpreter (the interpreter part
of the FX!32 Digital Win32 code translator [5]). of the FX!32 Digital Win32 code translator [5]).
TWIN [6] is a Windows API emulator like Wine. It is less accurate than
Wine but includes a protected mode x86 interpreter to launch x86 Windows
executables. Such an approach as greater potential because most of the
Windows API is executed natively but it is far more difficult to develop
because all the data structures and function parameters exchanged
between the API and the x86 code must be converted.
@section Portable dynamic translation @section Portable dynamic translation
QEMU is a dynamic translator. When it first encounters a piece of code, QEMU is a dynamic translator. When it first encounters a piece of code,
@ -218,7 +223,7 @@ doing complicated register allocation.
Good CPU condition codes emulation (@code{EFLAGS} register on x86) is a Good CPU condition codes emulation (@code{EFLAGS} register on x86) is a
critical point to get good performances. QEMU uses lazy condition code critical point to get good performances. QEMU uses lazy condition code
evaluation: instead of computing the condition codes after each x86 evaluation: instead of computing the condition codes after each x86
instruction, it store justs one operand (called @code{CC_CRC}), the instruction, it just stores one operand (called @code{CC_SRC}), the
result (called @code{CC_DST}) and the type of operation (called result (called @code{CC_DST}) and the type of operation (called
@code{CC_OP}). @code{CC_OP}).
@ -231,7 +236,7 @@ generated simple instructions (see
the condition codes are not needed by the next instructions, no the condition codes are not needed by the next instructions, no
condition codes are computed at all. condition codes are computed at all.
@section Translation CPU state optimisations @section CPU state optimisations
The x86 CPU has many internal states which change the way it evaluates The x86 CPU has many internal states which change the way it evaluates
instructions. In order to achieve a good speed, the translation phase instructions. In order to achieve a good speed, the translation phase
@ -323,6 +328,10 @@ x86 emulator on Alpha-Linux.
DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton DIGITAL FX!32: Running 32-Bit x86 Applications on Alpha NT, by Anton
Chernoff and Ray Hookway. Chernoff and Ray Hookway.
@item [6]
@url{http://www.willows.com/}, Windows API library emulation from
Willows Software.
@end table @end table
@chapter Regression Tests @chapter Regression Tests
@ -365,3 +374,9 @@ It is a simple benchmark. Care must be taken to interpret the results
because it mostly tests the ability of the virtual CPU to optimize the because it mostly tests the ability of the virtual CPU to optimize the
@code{rol} x86 instruction and the condition code computations. @code{rol} x86 instruction and the condition code computations.
@section @file{runcom}
A very simple MSDOS emulator to test the Linux vm86() system call
emulation. The excellent 54 byte @file{pi_10.com} PI number calculator
can be launched with it. @file{pi_10.com} was written by Bertram
Felgenhauer (more information at @url{http://www.boo.net/~jasonp/pipage.html}).