Bill Currie
3c9991364b
Add a "void return" instruction.
...
I got fed up with always having to explicty return something.
2011-01-13 00:29:56 +09:00
Bill Currie
75ec6bf244
Clean out some unnecessary types from the progs engine and clean up the mess.
...
This is a nasty commit, sorry, but 99% of the commit is interdependent.
2011-01-10 12:25:31 +09:00
Bill Currie
c1b12ed6ec
fix a couple of gcc 4.5 issues that Despair pointed out (I don't have it yet)
2010-05-27 12:21:50 +00:00
Bill Currie
00e590f5f5
Really nail down the args param in rua_obj_msg_sendv().
2010-01-13 06:36:16 +00:00
Bill Currie
5d6977288f
implement bounds checking on all opcodes
2010-01-13 06:19:50 +00:00
Bill Currie
ca0bbd909c
correctly save and restore the parameters when calling +initialize. fixes the segfault in the qwaq test.
2007-06-09 13:44:06 +00:00
Bill Currie
57bd43fc52
make the watchpoint (optionally) conditional
2007-05-08 02:25:01 +00:00
Bill Currie
fe4a4a9e55
"hardware" (haha) watch points (one!) in progs. only catches changes done by progs, and the expression parser is as flaky as anything, but it's better than nothing :)
2007-05-08 02:04:47 +00:00
Bill Currie
124506fda2
Fix the access alignment bug on 64 bit archs.
2007-04-07 01:41:23 +00:00
Bill Currie
5b761bac83
make progs related code a little more consistent with its int type usage
2007-04-06 00:47:41 +00:00
Bill Currie
99c0954b47
the big dso visibility patch :). Sure, we have to have unique names for static builds, but with controlled visibitly we should get faster program loads (although this isn't C++, so it's not as bad) and complex plugins are cleaner.
2007-03-10 12:00:59 +00:00
Bill Currie
3fb03fc2be
hah, should have been using __attribute__((used)) all that time (rather
...
than __attribute__((unused))). fixes the missing console in -x11
2005-08-04 15:27:09 +00:00
Bill Currie
4a21eb02c5
heh, slight oversight when implementing rcall using the param pointer
...
trick. ran into the exact same problem as passing addresses of locals to QC
functions. well, actually, that's exactly what it was, but done in the
engine. anyway, wound up potentially overwriting the params passed to the
function. fortunatly, due to how rcall works, only the first two params are
an issue.
2005-06-14 13:40:34 +00:00
Bill Currie
762aefc9b1
implement Raven's calling convention (rcall: first 2 params in opb and
...
opc). should give a general speedup to most progs.
2005-06-12 09:54:01 +00:00
Bill Currie
f65c25a7c2
oops, signage error
2005-05-01 08:30:30 +00:00
Bill Currie
780fb41858
make a common call function and fix pr_trace such that it autoclears only when the execution session it's set in is exited
...
This is an imperfect revision of history.
2004-11-07 03:00:00 +00:00
Bill Currie
33bc7858f7
avoid using the hunk in the progs engine (except for the override-able load and alloc functions) so tools (qfprogs and qwaq) don't need to create it.
...
register only the first instance of a progs provided string
This is an imperfect revision of history.
2004-11-02 04:59:00 +00:00
Bill Currie
633dada682
quaternion conjugate support (engine side)
2004-04-08 04:57:17 +00:00
Bill Currie
8d6f634f30
engine side quaternion support
2004-04-08 00:56:30 +00:00
Bill Currie
ac67a50a9a
handle x % 0 by giving a 0 result
2004-02-20 00:25:08 +00:00
Bill Currie
a821f048a0
change FNC to FN and fnc to fn for function based opcodes
2004-02-11 06:52:19 +00:00
Bill Currie
c3f41e3e69
new opcode: state.f. same as state, but takes a 3rd float operand to
...
specify the step for calculating nextthink. accessed using
[frame, think, step] (state is [frame, think])
2004-02-11 01:43:33 +00:00
Bill Currie
24294c8778
make printing of global contents in PR_PrintStatement optional so
...
disassembly output is cleaner
2004-01-31 04:26:01 +00:00
Bill Currie
595280decb
do the builtin function lookup at load time rather than runtime and store
...
the function address in the progs function descriptor. this will speed up
calls to builtin functions, especially when ranges get introduced.
2004-01-05 08:08:46 +00:00
Bill Currie
dfc83c1f5f
add PR_PushFrame and PR_PopFrame so temp strings are easy to use for
...
parameters to progs functions.
double the progs stack sizes (call depth of 32? eek)
allow one extra call on the progs stack :)
misc minor cleanups
2004-01-05 07:10:32 +00:00
Bill Currie
bd561fafc3
o all progs strings are now stored in progs memory
...
o temporary strings automaticly get freed when the function they're
created in (results of str + str and most strings returned from
builtins). a way to keep temp strings will be provided later
o fix up qwaq to test the temp strings
2004-01-03 08:43:57 +00:00
Bill Currie
cd8035319d
PR_GetString should have been returning const char *. now does
2003-11-21 21:34:53 +00:00
Bill Currie
fea382d1d9
fix an accounting error
2003-09-15 21:13:13 +00:00
Bill Currie
96202a5984
bah, forgot to -1 the instruction pointer for jumpb
2003-08-24 07:23:12 +00:00
Bill Currie
afb42f5ed0
fix the unsigned comparison opcodes
2003-08-24 05:53:15 +00:00
Bill Currie
98beb38540
implement jumpb correctly
2003-08-22 19:48:36 +00:00
Bill Currie
fe3b544528
handle "return 0" a bit better. assumes location is is always 0, but it
...
always has been (and always /should/ be anyway:)
2003-08-13 17:27:34 +00:00
Bill Currie
6f519c7e0f
don't bother doing the copy if the value to be returned is already in the
...
return slot
2003-08-13 17:07:05 +00:00
Bill Currie
dd9ab1e050
get unsigned mostly working
2003-08-01 21:20:04 +00:00
Jeff Teunissen
c9858f4f65
Preliminary "unsigned" support for qfcc and the gamecode engine. Should still
...
be compatible.
2003-07-26 21:07:51 +00:00
Bill Currie
f7d806e8d5
can now handle > vector sized parameters
2003-04-22 20:11:16 +00:00
Bill Currie
e732cf591d
remove all references to OFS_* from the C code. only the macros in progs.h
...
use them now
2003-04-22 18:20:15 +00:00
Bill Currie
eb099ae0d3
make qf gcc 3.3 clean
2003-04-17 00:01:48 +00:00
Bill Currie
761a7546dd
re-arrange things so __attribute__ and __builtin_expect are properly
...
autoconfiscated so rcsid will continue to work with gcc 3.3
2003-01-15 15:31:36 +00:00
Bill Currie
71196fedf6
make gcc more anal about prototypes, string constants and function
...
visibility (ie, global functions must have a prototype)
2003-01-06 18:28:13 +00:00
Bill Currie
836c469737
sys.[ch]:
...
handle SIGFPE and allow the registered signal handler to do recovery
rather than bail
progs.h, pr_exec.c, pr_load.c:
if pr_faultchecks is 1 (0 is default), handle division by 0 gracefully
by loading the maximum representable number into the answer
Closes : #58
the rest:
kill the SIGFPE stuff
2002-11-13 19:26:44 +00:00
Bill Currie
ec0273e3dc
do a pre and post pass for maps/mapname.cfg and use maps_default.cfg if
...
maps/mapname.cfg doesn't exist.
2002-11-08 02:43:04 +00:00
Bill Currie
012cc58eb4
move the debug related stuff from pr_exec.c to pr_debug.c
2002-10-23 20:42:02 +00:00
Bill Currie
80e85226b9
pr_xstatement now always reflects the currently executing statement making
...
debugging easier in the event of a segfault
2002-10-22 15:07:54 +00:00
Bill Currie
6203d450eb
resture pr_xstatement on return from PR_ExecuteProgram so recursive calls
...
don't mangle things with the new semantics of builtin calls
2002-10-22 02:51:57 +00:00
Bill Currie
aad04efe25
move the correct amount of bytes (I keep forgetting the * 4 :P)
2002-10-21 16:38:45 +00:00
Bill Currie
be4b8096d4
two new instructions: move and movep: basicly memmove. qfcc support coming
...
as soon as I get it working :)
2002-10-16 06:44:41 +00:00
Bill Currie
1f0b6e84a5
change pr_obj_msgSend and pr_obj_msgSend_super so they either call builtin
...
methods directly or setup the progs struct for a normal function call to
call a progs method rather than recursively calling PR_ExecuteProgram. This
will reduce method call overhead (both cpu and stack usage), fix the loss
of tracing when calling a method and makes it possible to break out of the
progs engine simply if threaded progs are ever implemented.
2002-10-15 18:53:33 +00:00
Bill Currie
eec3b7d8bc
fix missed header commit
2002-09-14 07:51:53 +00:00
Jeff Teunissen
e551c1f22b
New dump format for progs. It looks like assembly code. setting pr_debug to 2
...
or higher adds more debug information.
2002-09-14 07:00:40 +00:00