Commit Graph

7474 Commits

Author SHA1 Message Date
Bill Currie 39278ba8cc Explicitly select between direct and indirect moves. 2011-03-09 10:30:57 +09:00
Bill Currie 90de6b0499 Add a movepi instruction to support indirect moves of fixed size. 2011-03-09 10:29:24 +09:00
Bill Currie 18005cc80d Rename move to movei. 2011-03-09 10:28:40 +09:00
Bill Currie 6c4563b21d Change movep's name from <MOVE> to <MOVEP>. 2011-03-09 10:25:20 +09:00
Bill Currie b95cdc33d9 Set instace_size to the correct size. 2011-03-08 22:45:34 +09:00
Bill Currie 4432bc0bef Make the offset in zone dumps more useful. 2011-03-08 22:44:56 +09:00
Bill Currie 55eed1ae07 Make module dumping a little more informative. 2011-03-08 22:43:53 +09:00
Bill Currie 7c770b75c5 Do not creat field defs for local storage.
This prevents field params and local vars from messing up the real field
defs.
2011-03-08 19:56:02 +09:00
Bill Currie f66e20db17 Set the dereferenced type in the field value. 2011-03-08 19:29:36 +09:00
Bill Currie 7198be5726 Treat entities a bit like structures in field_expr ().
Look in the entity field symbol table for the field before looking in the
normal symbol table. This allows entity fields to be accessed even when
the current scope has symbol of the same name. However, checking the
normal symbol table where there is no such field allows for field
variables when I get around to implementing them.
2011-03-08 19:28:11 +09:00
Bill Currie 505bde308e Fix the handling of @system defs.
When treating a def as external, actually say it is external.
2011-03-07 20:53:27 +09:00
Bill Currie 8dbf8a97ea Be more informative with ext/def internal errors. 2011-03-07 20:52:31 +09:00
Bill Currie 6312ccba81 Fix storage class blocks.
@extern { defs }; etc
2011-03-07 20:51:51 +09:00
Bill Currie 4db8ebb6af Support qcc style local function variables. 2011-03-07 20:04:05 +09:00
Bill Currie 853cc53d0f FIx the handling of storage class. 2011-03-07 17:49:01 +09:00
Bill Currie 7649549de6 Handle external field declarations. 2011-03-07 17:23:52 +09:00
Bill Currie 49e446b637 Make field defs global.
It turns out that field defs need to be global after all, so use separate
field def tables in the linker.
2011-03-07 14:45:50 +09:00
Bill Currie 041c5d53b8 Check for the vector being a constant before trying to get its value. 2011-03-07 14:04:36 +09:00
Bill Currie c069bafad8 Support casting from enum to float. 2011-03-07 14:04:05 +09:00
Bill Currie 5a78758781 Support return in void functions in v6 code. 2011-03-07 13:52:28 +09:00
Bill Currie 1246fd9e30 Use the correct size when growing a data space. 2011-03-07 13:36:00 +09:00
Bill Currie 02a70ebe1c Remove the auxfunction manipulation from the compiler proper.
It was broken code in the first place (realloc and pointers), and is
redundant with the new linking process.
2011-03-07 13:33:02 +09:00
Bill Currie 16103f9018 Fix param mangling for qc style functions. 2011-03-07 10:43:38 +09:00
Bill Currie 29cac0fe3a Optionally create *_[xyz] symbols for accessing vector components.
"vector-components" in code options controls this feature. The default is
off for advanced code and on for traditional code. Disabling
vector-components prevents the comonent names polluting the namespace and
reduces the number of globals needed for vector fields if the components
of that field are never used.
2011-03-07 10:21:40 +09:00
Bill Currie 0b3d0011c5 Implement vector and quaternion component access. 2011-03-07 10:02:20 +09:00
Bill Currie f0e47f2334 Clean up some code duplication. 2011-03-07 10:01:21 +09:00
Bill Currie a6f222106e Fix taking the address of normal variables.
Treat them the same as structure variables.
2011-03-07 09:58:51 +09:00
Bill Currie 3c1784d46c Fold constants on both sides of = to ensure correct expression types. 2011-03-07 08:33:30 +09:00
Bill Currie 5b8345eecb Do not try to print values from null entities. 2011-03-07 08:28:20 +09:00
Bill Currie 66447df6b3 Undo the offset relocation of local defs.
The debug info expects local defs to be 0 based, so once relocations in
the progs data have been completed, undo the local def offset relocation
so that the correct offsets will be written to the debug info.
2011-03-06 21:05:25 +09:00
Bill Currie b2f0c9a127 Dump the local defs for functions when debug info is available. 2011-03-06 21:03:12 +09:00
Bill Currie 3b8a3f8302 Remove the vector component skip code from param searches.
Local defs no longer contain the vector comonents.
2011-03-06 21:02:29 +09:00
Bill Currie b49d90e769 Do not lose the block expression when taking its address. 2011-03-06 16:32:51 +09:00
Bill Currie c78d15b331 Support taking the address of block expressions that have a result. 2011-03-06 16:05:38 +09:00
Bill Currie 993d05b3d3 Support taking the address of alias expressions.
Taking the address of an alias expression undoes the alias but uses the
aliased type.
2011-03-06 15:58:49 +09:00
Bill Currie b74c644a10 Perform offset field relocations. 2011-03-06 15:41:38 +09:00
Bill Currie 8712d30d1a Make entity field defs static.
Entity field defs need to be static in order to avoid clashing with their
field variables.
2011-03-06 15:41:15 +09:00
Bill Currie c4e9a45d91 Do not lose the entity field defs. 2011-03-06 15:40:07 +09:00
Bill Currie b7aa2f6786 Support access to struct fields in a structure in an entity. 2011-03-06 15:39:27 +09:00
Bill Currie fe3d228658 Maintain a symbol table for entity fields. 2011-03-06 15:38:19 +09:00
Bill Currie c29e0250e4 Make def_field_Ofs reloc dumps more informative. 2011-03-06 15:34:53 +09:00
Bill Currie 02766f0795 Do not try to dump def values from spaces with no data. 2011-03-06 15:33:53 +09:00
Bill Currie 1eb759bb8a Update reloc_names.
I really need to get reloc_names unduplicated.
2011-03-06 15:33:10 +09:00
Bill Currie d1187f0857 Set the edict area size when dumping qfo files. 2011-03-06 13:41:00 +09:00
Bill Currie 7bfaf107ce Set the output file name as early as possible. 2011-03-06 13:40:24 +09:00
Bill Currie 417d1b4442 Fix structure copy into and out of entities. 2011-03-06 13:19:20 +09:00
Bill Currie dc7a78b2ff Fix case label type conversions.
The previous method made too many assumptions.
2011-03-06 11:41:01 +09:00
Bill Currie fe4df03896 Add is_float ().
For now, it checks just floats, but I might one day add doubles.
2011-03-06 11:35:15 +09:00
Bill Currie 85bffbcad0 Add is_integral() to check for integral types (integer, short, enum). 2011-03-06 11:25:12 +09:00
Bill Currie 17a9dff769 Avoid freeing an operand twice.
Due to the way operands are used, they can be freed twice in dead-statement
removal. Detect the double-free and ignore it.
2011-03-06 11:19:09 +09:00