Commit graph

62 commits

Author SHA1 Message Date
Bill Currie
6d63d1d55b implement comparisons and not for pointers 2002-01-30 21:20:12 +00:00
Bill Currie
e1abe4c44b finalize the crc of the progs file 2002-01-30 21:13:57 +00:00
Bill Currie
c76f7d88ce fix an API snafu (oops:) 2002-01-30 08:09:53 +00:00
Bill Currie
8561dfa93a basic resource management system for the VM 2002-01-30 06:21:20 +00:00
Bill Currie
0ea713eda4 redo the progs loader to allocate all the memory needed for progs in one
shot, allowing for caller specified alloc and edicts and zone memory sizes.
(progs + edicts + zone).
2002-01-29 20:53:44 +00:00
Bill Currie
21b6e68a8c break out the non-edict code into sensible locations 2002-01-28 17:15:36 +00:00
Bill Currie
08210bc93f fix an accidental double byteswap that broke progs for big-endian machines 2002-01-24 04:43:47 +00:00
Bill Currie
68637eea9e start implementing dynamic memory for progs 2002-01-23 22:35:48 +00:00
Bill Currie
16cc0c22c9 forgot to implement store.p 2002-01-23 22:33:22 +00:00
Bill Currie
6af9a5d8e6 make the builtins an array of pointers so the hash table doesn't get royally
screwed up
2002-01-19 03:31:51 +00:00
Bill Currie
7def88668a fix a goof with the progs loader for the server interface 2002-01-18 23:53:51 +00:00
Bill Currie
ac71d101d2 menu code now gets initialized (menu_init in the progs). 2002-01-18 22:02:59 +00:00
Bill Currie
bb96a5b736 first use of client side QuakeC :) (and having more than one progs instance
seems to work, too). The menu code gets loaded, but is currently otherwise
unused as of yet.
2002-01-18 19:19:33 +00:00
Bill Currie
d69762facd integer() and float() casts seem to work 2002-01-17 19:32:04 +00:00
Bill Currie
3dafbebf10 fix up #0 builtin functions at runtime. not done automaticly (need to call
PR_RelocateBuiltins) and fix a bug with profiling and unlimited execution
counts
2001-12-14 08:15:04 +00:00
Bill Currie
8ddce20949 pr_*: add storep.p so pointers can be stored into entities
emit.c: convert & (address) to . in unary .
        rewrite emit_assign_expr
expr.c: remove debug code and make unary . less agressive on address calcs
        also convert & (address) to . for lvals
2001-12-12 20:35:58 +00:00
Bill Currie
f9149a0d6c finally get around to renaming type_name to pr_type_name 2001-12-12 17:15:09 +00:00
Bill Currie
cc34e5954f lots of work on better array/pointer/struct handline. doesn't quite work yet 2001-12-12 08:39:47 +00:00
Bill Currie
d344aea51f store.p so pointers can be moved around 2001-12-08 21:43:44 +00:00
Bill Currie
00b2a45ecd change the operator for "address" from "." to "&" so load.p can be implement.
this makes it so pointers in entities work.
2001-12-08 20:17:20 +00:00
Bill Currie
b03a1bee42 ok, structures seem to generate correct code now 2001-12-08 08:19:48 +00:00
Bill Currie
028f8a116d immidiate indexed pointer access and some whitespace + reorg 2001-12-07 20:07:38 +00:00
Bill Currie
12a0a10d33 more alpha portability fixes 2001-11-29 19:35:25 +00:00
Bill Currie
67fde0c492 remove some debug code I accidently committed 2001-11-26 17:25:16 +00:00
Bill Currie
712aecb1a2 use the Hash_*Element functions for opcodes to avoid the silliness of trying
to use strings for numeric keys
2001-11-20 18:54:15 +00:00
Bill Currie
8d208ac3aa make float != 0 tests work on alpha for when the value is actually an integer
(works fine on intel, but on alpha the denormals either produce an exception
or true zero: not quite desirable:)
2001-11-19 17:51:31 +00:00
Bill Currie
9d0320cc89 various portability improvements 2001-11-18 23:40:01 +00:00
Bill Currie
cda6923ffa this seems to be all that's needed to make progs 64 bit clean (minus issues
with sizeof (int) != 4, but that's not the case on alpha)
2001-11-17 04:32:00 +00:00
Bill Currie
cc66577f1c fixes for building on alpha (linux) 2001-11-16 01:09:17 +00:00
Bill Currie
598c82352f fix printing of op_c for storeb 2001-11-15 19:36:40 +00:00
Bill Currie
7888f1cb93 fix a couple of branch offset bugs 2001-11-13 19:52:03 +00:00
Bill Currie
4af2b18703 support printing uinteger values 2001-11-13 18:04:55 +00:00
Bill Currie
07b59d2f07 pr_comp.h:
o	add OP_JUMPB
	o	OP_JUMPB renumberd some opcodes, so up PROG_VERSION
pr_edict.c:
	o	make the version error reporting more informative
pr_exec.c:
	o	implement OP_JUMPB (goto *(ptr + index))
pr_opcode.c: (libs/gamecode/engine)
	o	add OP_JUMPB to the table
expr.h:
	o	ex_uinteger support
	o	some const correctness
	o	prototype new_label_expr
qfcc.h:
	o	uinteger ussport
	o	add pointers for op_jump and op_jumpb
	o	prototype PR_GetArray
emit.c:
	o	general uinteger support
	o	new reference/reloc type 3: absolute statement address
	o	jumpb support (binary goto)
expr.c:
	o	uinteger support
	o	break the label name creation out of new_label_expr into
		new_label_name
	o	some const correctness
pr_def.c:
	o	add PR_GetArray to allocate an array in global space
	o	factor out some code common to PR_GetDef and PR_GetArray that would
		otherwise be duplicated
pr_imm.c:
	o	some const correctness
	o	uinteger support
pr_lex.c:
	o	uinteger support
pr_opcode.c: (tools/qfcc/source)
	o	support jump and jumpb
switch.c:
	o	rewrite the binary search code to support ranges.
2001-11-13 08:58:54 +00:00
Bill Currie
d27cd9cc21 s/type_size/pr_type_size/
remove the redundant type_size from qfcc
2001-11-12 23:56:46 +00:00
Bill Currie
d168a3daee this should remove the requirement for gmake on bsd systems 2001-11-12 16:23:41 +00:00
Bill Currie
4be5c86f36 forgot to add "uinteger" to the array of type name strings 2001-11-09 01:03:35 +00:00
Bill Currie
928d343295 pr_comp.h:
o	add ev_uniteger to the types enum
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
progs.h:
	o	add uinteger accessors
pr_exec.c:
	o	implement ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
pr_opcode.c:
	o	add opcodes for ifbe, ifb, ifae, ifa, jump, lt.ui, gt.ui, le.ui, ge.ui
expr.h:
	o	prototype inc_users
qfcc.h:
	o	add externs for op_ifbe, op_ifb, op_ifae and op_ifa
emit.c:
	o	don't bother emiting an assignment to a temp def that's only used once
		(ie, it's never read, only written to)
	o	support the new if* instructions
expr.c:
	o	support the new if* insructions
	o	dectect expression loops in append_expr
	o	support unsigned integers
	o	re-work temp def usage counting
pr_def.c
	o	debugging for temp def usage counts
pr_opcode.c:
	o	support the new if* instructions
qc-parse.y:
	o	provide defines for IFBE IFB IFAE IFA
switch.c:
	o	do binary searches for strings, floats and ints if there are more than
		8 cases in a switch. Strings need more testing.
2001-11-09 00:58:16 +00:00
Bill Currie
f3fcfea62a fully specify the type for the comparison opcodes 2001-11-06 21:29:53 +00:00
Bill Currie
469fd1b023 more mathlib usage 2001-11-06 20:36:20 +00:00
Bill Currie
9f4a565523 rename some get_key functions so they're all uniqely named (matters only for
profiling purposes thanks to static:)
2001-11-05 03:21:42 +00:00
Bill Currie
5bf5278c2b pr_comp.h:
- new opcodes for pointers
progs.h:
	- prototype PR_Check_Opcodes
pr_edict.c:
	- move the static bounds checking to PR_Check_Opcodes in pr_opcode.c
pr_exec.c:
	- vector instruction cleanup
	- temporarily nuke bounds checking from storep.*
	- move base of address results from pr->edicts to pr->pr_globals
	- implement new pointer related instructions
	- nuke proposed global pointer instructions (not flexible enough)
pr_opcode.c:
	- add new pointer instuctions
	- re-implement static bounds/invalid opcode checking. no more multiple
	  case statements to keep track of.
2001-11-02 22:41:11 +00:00
Bill Currie
166ce6d8ce redundant code removal 2001-11-02 03:04:01 +00:00
Bill Currie
ccfe82cda4 *taniwha mops up the last drops of blood from extern 2001-10-28 04:38:24 +00:00
Bill Currie
78a3e398d5 * taniwha gets medieval on extern 2001-10-28 04:23:37 +00:00
Bill Currie
f8a41cb1bc completely nuke the concept of "priority" from opcodes and use get_op_string
in emit_sub_expr instead of a redundant switch.
2001-10-25 17:48:35 +00:00
Bill Currie
b3914eeaaa elimination of bare printf (with some exceptions) from libs: Sys_Printf is
used instead
2001-10-18 16:42:14 +00:00
Bill Currie
3a366f4f7e break out the backtrace code from PR_RunError into PR_DumpState and use
PR_DumpState instead of PR_RunError in seg_fault_handler so we get both a
progs trace /and/ a core file (ulimit allowing)
2001-10-08 03:46:44 +00:00
Bill Currie
8c6e5456bb type b of not.i is void, not integer 2001-10-02 19:17:18 +00:00
Adam Olsen
e12f1dcf9e - boundscheck static progs strings, and give proper errors for that
and dynamic strings if it fails.
2001-09-28 23:34:49 +00:00
Jeff Teunissen
d63243380f Aaaaaaand, it's done!
Special note: I hope to never do this again. :)
2001-09-28 10:31:20 +00:00