pcsx2/x86
zerofrog df521ae24f 0.9.4 release
git-svn-id: http://pcsx2.googlecode.com/svn/branches/pcsx2_0.9.4@186 96395faa-99c1-11dd-bbfe-3dabce05a288
2007-11-11 02:55:00 +00:00
..
ix86 0.9.4 release 2007-11-11 02:55:00 +00:00
ix86-32 0.9.4 release 2007-11-11 02:55:00 +00:00
ix86-64 0.9.4 release 2007-11-11 02:55:00 +00:00
aR3000A.S 0.9.4 release 2007-11-11 02:55:00 +00:00
aVif.asm 0.9.4 release 2007-11-11 02:55:00 +00:00
aVif.S 0.9.4 release 2007-11-11 02:55:00 +00:00
aVUzerorec.S 0.9.4 release 2007-11-11 02:55:00 +00:00
fast_routines.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
fast_routines.S 0.9.4 release 2007-11-11 02:55:00 +00:00
iCOP2.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iCore.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iCore.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iCP0.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iCP0.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iFPU.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iFPU.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iGS.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iHw.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iMMI.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iMMI.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iPsxHw.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iPsxMem.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iR3000A.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iR3000A.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR3000Atables.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900Arit.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900AritImm.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900Branch.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900Jump.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900LoadStore.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900Move.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900MultDiv.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iR5900Shift.h 0.9.4 release 2007-11-11 02:55:00 +00:00
ir5900tables.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iVif.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iVU0micro.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iVU0micro.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iVU1micro.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iVU1micro.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iVUmicro.c 0.9.4 release 2007-11-11 02:55:00 +00:00
iVUmicro.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iVUops.h 0.9.4 release 2007-11-11 02:55:00 +00:00
iVUzerorec.cpp 0.9.4 release 2007-11-11 02:55:00 +00:00
iVUzerorec.h 0.9.4 release 2007-11-11 02:55:00 +00:00
Makefile.am 0.9.4 release 2007-11-11 02:55:00 +00:00
README 0.9.4 release 2007-11-11 02:55:00 +00:00

PCSX2 x86 Recompilers - zerofrog(@gmail.com)
    
There are two types of x86 recompilers: x86-32 and x86-64. The code that both of them share is in the x86/ directory. Code for x86-32 is in the ix86-32/ and same goes for x86-64. The ix86/ dirctory contains the low level translation of x86 instructions to actual code, it is written to be used for both architectures. There are a lot of places where it was hard to separate 32bit from 64bit recompilers, so a lot of functions are surrounded by "#if(n)def __x86_64__" statements.

It would be simple if the story ended here, but hte x86 recompilers use a lot of low level assembly routines, meaning that assembly has to be compiled for both windows x32/x64 versions and linux x32/x64 versions.

For windows, the masm assembler is used (*.asm files)
For linux, gcc is used (*.S files)

Both assemblers use very different syntax, also some routines in x86-64 differ a lot from their 32bit counterparts. Therefore, you might see the same function implemented up to 4 times in assembly.

(no, it's not fun maintaining 4 versions of the same thing... and it might be easier to use nasm, but that probably has its own unforseeable problems)