mirror of
https://github.com/nzp-team/fteqw.git
synced 2024-11-24 21:02:26 +00:00
Single-pass version of q3asm which is about 50 times faster
git-svn-id: https://svn.code.sf.net/p/fteqw/code/trunk@2660 fc73d0e0-1445-4013-8a0c-d673dee63da5
This commit is contained in:
parent
9af1ba84cc
commit
babd9f0f20
3 changed files with 1335 additions and 0 deletions
16
q3asm2/Makefile
Normal file
16
q3asm2/Makefile
Normal file
|
@ -0,0 +1,16 @@
|
|||
# yeah, couldn't do more simple really
|
||||
|
||||
CC=gcc
|
||||
CFLAGS=-g -Wall
|
||||
|
||||
default: q3asm2
|
||||
|
||||
q3asm: q3asm.c cmdlib.c
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
q3asm2: q3asm2.c ../engine/qclib/hash.c
|
||||
$(CC) $(CFLAGS) -o $@ $^
|
||||
|
||||
clean:
|
||||
rm -f q3asm2 q3asm *~ *.o
|
||||
|
175
q3asm2/opstrings.h
Normal file
175
q3asm2/opstrings.h
Normal file
|
@ -0,0 +1,175 @@
|
|||
/*
|
||||
===========================================================================
|
||||
Copyright (C) 1999-2005 Id Software, Inc.
|
||||
|
||||
This file is part of Quake III Arena source code.
|
||||
|
||||
Quake III Arena source code 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.
|
||||
|
||||
Quake III Arena source code 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 Foobar; if not, write to the Free Software
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
|
||||
===========================================================================
|
||||
*/
|
||||
{ "BREAK", OP_BREAK },
|
||||
|
||||
{ "CNSTF4", OP_CONST },
|
||||
{ "CNSTI4", OP_CONST },
|
||||
{ "CNSTP4", OP_CONST },
|
||||
{ "CNSTU4", OP_CONST },
|
||||
|
||||
{ "CNSTI2", OP_CONST },
|
||||
{ "CNSTU2", OP_CONST },
|
||||
|
||||
{ "CNSTI1", OP_CONST },
|
||||
{ "CNSTU1", OP_CONST },
|
||||
|
||||
//{ "ARGB", OP_ARG },
|
||||
//{ "ARGF", OP_ARG },
|
||||
//{ "ARGI", OP_ARG },
|
||||
//{ "ARGP", OP_ARG },
|
||||
//{ "ARGU", OP_ARG },
|
||||
|
||||
{ "ASGNB", OP_BLOCK_COPY },
|
||||
{ "ASGNF4", OP_STORE4 },
|
||||
{ "ASGNI4", OP_STORE4 },
|
||||
{ "ASGNP4", OP_STORE4 },
|
||||
{ "ASGNU4", OP_STORE4 },
|
||||
|
||||
{ "ASGNI2", OP_STORE2 },
|
||||
{ "ASGNU2", OP_STORE2 },
|
||||
|
||||
{ "ASGNI1", OP_STORE1 },
|
||||
{ "ASGNU1", OP_STORE1 },
|
||||
|
||||
{ "INDIRB", OP_IGNORE }, // block copy deals with this
|
||||
{ "INDIRF4", OP_LOAD4 },
|
||||
{ "INDIRI4", OP_LOAD4 },
|
||||
{ "INDIRP4", OP_LOAD4 },
|
||||
{ "INDIRU4", OP_LOAD4 },
|
||||
|
||||
{ "INDIRI2", OP_LOAD2 },
|
||||
{ "INDIRU2", OP_LOAD2 },
|
||||
|
||||
{ "INDIRI1", OP_LOAD1 },
|
||||
{ "INDIRU1", OP_LOAD1 },
|
||||
|
||||
{ "CVFF4", OP_UNDEF },
|
||||
{ "CVFI4", OP_CVFI },
|
||||
|
||||
{ "CVIF4", OP_CVIF },
|
||||
{ "CVII4", OP_SEX8 }, // will be either SEX8 or SEX16
|
||||
{ "CVII1", OP_IGNORE },
|
||||
{ "CVII2", OP_IGNORE },
|
||||
{ "CVIU4", OP_IGNORE },
|
||||
|
||||
{ "CVPU4", OP_IGNORE },
|
||||
|
||||
{ "CVUI4", OP_IGNORE },
|
||||
{ "CVUP4", OP_IGNORE },
|
||||
{ "CVUU4", OP_IGNORE },
|
||||
|
||||
{ "CVUU1", OP_IGNORE },
|
||||
|
||||
{ "NEGF4", OP_NEGF },
|
||||
{ "NEGI4", OP_NEGI },
|
||||
|
||||
//{ "CALLB", OP_UNDEF },
|
||||
//{ "CALLF", OP_UNDEF },
|
||||
//{ "CALLI", OP_UNDEF },
|
||||
//{ "CALLP", OP_UNDEF },
|
||||
//{ "CALLU", OP_UNDEF },
|
||||
//{ "CALLV", OP_CALL },
|
||||
|
||||
//{ "RETF", OP_UNDEF },
|
||||
//{ "RETI", OP_UNDEF },
|
||||
//{ "RETP", OP_UNDEF },
|
||||
//{ "RETU", OP_UNDEF },
|
||||
//{ "RETV", OP_UNDEF },
|
||||
|
||||
{ "ADDRGP4", OP_CONST },
|
||||
|
||||
//{ "ADDRFP", OP_PARM },
|
||||
//{ "ADDRLP", OP_LOCAL },
|
||||
|
||||
{ "ADDF4", OP_ADDF },
|
||||
{ "ADDI4", OP_ADD },
|
||||
{ "ADDP4", OP_ADD },
|
||||
{ "ADDP", OP_ADD },
|
||||
{ "ADDU4", OP_ADD },
|
||||
|
||||
{ "SUBF4", OP_SUBF },
|
||||
{ "SUBI4", OP_SUB },
|
||||
{ "SUBP4", OP_SUB },
|
||||
{ "SUBU4", OP_SUB },
|
||||
|
||||
{ "LSHI4", OP_LSH },
|
||||
{ "LSHU4", OP_LSH },
|
||||
|
||||
{ "MODI4", OP_MODI },
|
||||
{ "MODU4", OP_MODU },
|
||||
|
||||
{ "RSHI4", OP_RSHI },
|
||||
{ "RSHU4", OP_RSHU },
|
||||
|
||||
{ "BANDI4", OP_BAND },
|
||||
{ "BANDU4", OP_BAND },
|
||||
|
||||
{ "BCOMI4", OP_BCOM },
|
||||
{ "BCOMU4", OP_BCOM },
|
||||
|
||||
{ "BORI4", OP_BOR },
|
||||
{ "BORU4", OP_BOR },
|
||||
|
||||
{ "BXORI4", OP_BXOR },
|
||||
{ "BXORU4", OP_BXOR },
|
||||
|
||||
{ "DIVF4", OP_DIVF },
|
||||
{ "DIVI4", OP_DIVI },
|
||||
{ "DIVU4", OP_DIVU },
|
||||
|
||||
{ "MULF4", OP_MULF },
|
||||
{ "MULI4", OP_MULI },
|
||||
{ "MULU4", OP_MULU },
|
||||
|
||||
{ "EQF4", OP_EQF },
|
||||
{ "EQI4", OP_EQ },
|
||||
{ "EQU4", OP_EQ },
|
||||
|
||||
{ "GEF4", OP_GEF },
|
||||
{ "GEI4", OP_GEI },
|
||||
{ "GEU4", OP_GEU },
|
||||
|
||||
{ "GTF4", OP_GTF },
|
||||
{ "GTI4", OP_GTI },
|
||||
{ "GTU4", OP_GTU },
|
||||
|
||||
{ "LEF4", OP_LEF },
|
||||
{ "LEI4", OP_LEI },
|
||||
{ "LEU4", OP_LEU },
|
||||
|
||||
{ "LTF4", OP_LTF },
|
||||
{ "LTI4", OP_LTI },
|
||||
{ "LTU4", OP_LTU },
|
||||
|
||||
{ "NEF4", OP_NEF },
|
||||
{ "NEI4", OP_NE },
|
||||
{ "NEU4", OP_NE },
|
||||
|
||||
{ "JUMPV", OP_JUMP },
|
||||
|
||||
{ "LOADB4", OP_UNDEF },
|
||||
{ "LOADF4", OP_UNDEF },
|
||||
{ "LOADI4", OP_UNDEF },
|
||||
{ "LOADP4", OP_UNDEF },
|
||||
{ "LOADU4", OP_UNDEF },
|
||||
|
||||
|
1144
q3asm2/q3asm2.c
Normal file
1144
q3asm2/q3asm2.c
Normal file
File diff suppressed because it is too large
Load diff
Loading…
Reference in a new issue