Commit graph

327 commits

Author SHA1 Message Date
Wolfgang (Blub) Bumiller
613e1e7247 Change the parser to use the hashtable functions 2012-11-25 13:23:37 +01:00
Dale Weiler
5c0a62be96 Add respective license headers + some cleanups 2012-11-24 21:22:35 +00:00
Dale Weiler
9d677bab7c Added comment about hashtable 2012-11-23 20:05:53 +00:00
Dale Weiler
6e047ec65b No copy, just store pointer for hash table 2012-11-23 20:01:58 +00:00
Wolfgang (Blub) Bumiller
4a3921fcb9 Let's #define GMQCC by default 2012-11-23 19:13:09 +01:00
Dale Weiler
e25e83b14c Visual studio __forceinline can be used for GMQCC_INLINE 2012-11-23 06:48:54 +00:00
Dale Weiler
9e3399df19 Implemented hashtable as-per Blubs request 2012-11-23 06:12:01 +00:00
Wolfgang (Blub) Bumiller
968397da61 Fixing clang-warnings about vectors 2012-11-22 20:42:32 +01:00
Wolfgang (Blub) Bumiller
6983142c4d -dump vs -dumpfin; to see the IR before and after finalizing functions 2012-11-21 21:53:38 +01:00
Dale Weiler
2e3d572b53 Bump version 2012-11-21 20:33:52 +00:00
Wolfgang (Blub) Bumiller
ebc6954bf5 casting explicitly to boolean values in early out logic 2012-11-21 19:36:28 +01:00
Dale Weiler
61fa54318c Merge branch 'master' into test-suite
Conflicts:
	Makefile
	ir.c
2012-11-19 02:13:46 +00:00
Wolfgang (Blub) Bumiller
0330b082a2 The ftepp now always outputs into a string buffer, with -E the buffer will be dumped to stdout or the via -o specified file, without -E it'll be passed to the parser to be compiled 2012-11-18 13:33:53 +01:00
Wolfgang (Blub) Bumiller
d1373af7fc Make -E print to stdout by default and honor -o, changed handling of source list a bit 2012-11-18 12:51:38 +01:00
Wolfgang (Blub) Bumiller
366557bbab Since like with parsing, the preprocessor state has to be preserved across files for macros, we do that now, and with that introduce a new warning: -Wmultifile-if in case an #if spans over several command-line-provided source files (or progs.src file provided for that matter) 2012-11-18 11:54:11 +01:00
Dale Weiler
0dc4febb91 New test-suite initial implementation. Just need to write some tests. 2012-11-17 02:54:30 +00:00
Wolfgang (Blub) Bumiller
07ca2e6407 importing initial ftepp.c; -E option now executes the preprocessor 2012-11-16 16:57:59 +01:00
Wolfgang (Blub) Bumiller
3bd75546ec moving _vec_remove above the 'exposed interface' comment 2012-11-15 21:24:31 +01:00
Wolfgang (Blub) Bumiller
df61f3c182 Fix a typo causing NOTRACK to fail 2012-11-15 21:18:31 +01:00
Wolfgang (Blub) Bumiller
c583ae24f2 Replacing lexer's vectors and getting rid of the macros 2012-11-15 18:48:38 +01:00
Wolfgang (Blub) Bumiller
906f319673 Replaced it all... 2012-11-15 18:32:09 +01:00
Dale Weiler
2e84cc0b41 Use new console system everywhere. 2012-11-15 00:28:46 +00:00
Wolfgang (Blub) Bumiller
84088cb5f0 Merging in new-syntax 2012-11-14 21:39:16 +01:00
Dale Weiler
f0750209b7 preliminary segregated console subsystem 2012-11-14 19:17:43 +00:00
Wolfgang (Blub) Bumiller
9a42dd1c3a qcvm -trace now shows the current function name and nest-depth 2012-11-11 23:57:42 +01:00
Wolfgang (Blub) Bumiller
a7d3a2d6ea adding opts_max_array_size with a default of 1024, adding some TODO errors for arrays in the AST 2012-11-11 11:09:36 +01:00
Wolfgang (Blub) Bumiller
cf1ea01de3 parser_compile_file vs parser_compile_string 2012-11-11 10:33:29 +01:00
Wolfgang (Blub) Bumiller
1869440fd9 Preparing to parse arrays: adding TYPE_ARRAY and union/struct TYPE_ constants to be consistent with fteqcc, filled type-arrays with their data, attempting to parse an array variable and added some error messages to the IR in case of unhandled types 2012-11-11 10:13:01 +01:00
Wolfgang (Blub) Bumiller
a27750966f globals of type .vector will now properly generate 3 globals 2012-11-11 10:13:00 +01:00
Dale Weiler
6b12f4435c Make warns.def and flags.def into a single opts.def. 2012-11-10 21:13:09 +00:00
Wolfgang (Blub) Bumiller
09e18e1bbf mem_r to realloc 2012-11-10 11:16:19 +01:00
Wolfgang (Blub) Bumiller
a195e296a9 -E switch to set opt_pp_only 2012-11-02 18:33:51 +01:00
Wolfgang (Blub) Bumiller
5adc3fd9c1 Don't forget to set the _alloc in vector resize, also set _alloc back in _append if mem_a had failed 2012-10-09 20:56:54 +02:00
Wolfgang (Blub) Bumiller
5dd8e23dfd Cleaner crc implementation 2012-10-02 17:51:03 +02:00
Wolfgang (Blub) Bumiller
354dd94b95 Generating checksums 2012-10-02 17:09:49 +02:00
Wolfgang (Blub) Bumiller
b2cb612c70 Adding DEF_SAVEGLOBAL, marking globals as to-be-saved now, for real support of quicksaving 2012-08-23 18:28:05 +02:00
Wolfgang (Blub) Bumiller
fe2f9d79c5 fixing mem-vector resize function 2012-08-23 13:21:14 +02:00
Wolfgang (Blub) Bumiller
8b90fcf482 commenting on the quirks of MUL_VF and MUL_FV in gmqcc.h's instruction list 2012-08-22 18:34:48 +02:00
Wolfgang (Blub) Bumiller
ab714862d6 committing gmqcc.h for previous exec.c commit: qc_program gets .xflags 2012-08-22 17:49:25 +02:00
Wolfgang (Blub) Bumiller
ef3e7231bd it's SUB_V not DUB_V 2012-08-22 17:32:42 +02:00
Wolfgang (Blub) Bumiller
77e5807a83 memvector resize needs to set _count as well 2012-08-22 15:24:24 +02:00
Wolfgang (Blub) Bumiller
93e13c3cb1 option: -force-crc=number, added -info to executor to just show some file info like the crc, and -printfields to print a list of fields along with their type and position 2012-08-22 14:00:57 +02:00
Wolfgang (Blub) Bumiller
0674457c51 Fix some comment styles... 2012-08-21 10:33:37 +02:00
Wolfgang (Blub) Bumiller
b421c42d4b replacing WARN_ERROR with opts_werror 2012-08-18 14:36:33 +02:00
Wolfgang (Blub) Bumiller
0d9435d326 util_fopen... 2012-08-16 14:01:47 +02:00
Wolfgang (Blub) Bumiller
2c020837ea fopen -> fopen_s on windows 2012-08-16 13:45:45 +02:00
Wolfgang (Blub) Bumiller
0c74f8fdb9 make the 'vector' type use qcfloat instead of float 2012-08-16 12:58:54 +02:00
Dale Weiler
d73100ad1b gmqcc now builds on visual studio 2012-08-14 19:06:53 -04:00
Wolfgang (Blub) Bumiller
b8d92dfa01 constant folding for +, - and * 2012-08-14 22:51:05 +02:00
Wolfgang (Blub) Bumiller
37c4644d85 progs.src mode added 2012-08-14 19:30:03 +02:00
Wolfgang (Blub) Bumiller
107100c666 -dump option, by default the IR is not dumped anymore 2012-08-14 16:19:23 +02:00
Wolfgang (Blub) Bumiller
d824645019 error-print functions which take lex_ctx 2012-08-14 12:06:28 +02:00
Wolfgang (Blub) Bumiller
579ac3dd5d Working towards a saner error-output system, adding -Werror 2012-08-14 11:34:07 +02:00
Wolfgang (Blub) Bumiller
e3b3c2efe3 Merge branch 'master' into blub/parser 2012-08-13 15:25:40 +02:00
Wolfgang (Blub) Bumiller
633561a730 type_eq_instr[], type_ne_instr[] 2012-08-13 15:25:14 +02:00
Wolfgang (Blub) Bumiller
7e3edea621 fixing the messup of MUL_FV and _VF being swapped - getting rid of additions that really have no place here (YET) (matrix/quaternion types) 2012-08-12 11:34:55 +02:00
Wolfgang (Blub) Bumiller
d68d19dbfd Merging master to handle vector members, fields, and members of vector fields 2012-08-12 10:08:41 +02:00
Wolfgang (Blub) Bumiller
919d73b0a0 experimental support for spawn() in the executor 2012-08-11 17:31:08 +02:00
Wolfgang (Blub) Bumiller
0bee759406 Merge branch 'master' into blub/bc3 2012-08-08 12:25:31 +02:00
Wolfgang (Blub) Bumiller
babc6d209e Add WARN_ prefix to warnings enum 2012-08-08 12:25:19 +02:00
Wolfgang (Blub) Bumiller
ae251d3914 Merge branch 'master' into blub/bc3 2012-08-08 12:05:08 +02:00
Wolfgang (Blub) Bumiller
7fed5bf41f make it also compilable with -std=c99 by not redefining extra_semicolon_, by appending N to it 2012-07-30 13:48:53 +02:00
Wolfgang Bumiller
d05bee94d1 code_alloc_field to allocate entityfield data, ir now has ir_builder_create_field - so that globals and fields can be created separately - properly 2012-07-28 21:55:01 +02:00
Wolfgang Bumiller
e3dc56fc92 Merging master and adopting its main.c 2012-07-28 21:14:03 +02:00
Wolfgang Bumiller
3321748e4a util_strtocmd, util_strtononcmd 2012-07-28 19:28:27 +02:00
Wolfgang Bumiller
c81eb57480 reuse old opts_, renamed all opt_ to opts_ to be consistent, making code.c use OPTS_FLAG() for OMIT_NULL_BYTES and DARKPLACES_STRING_TABLE_BUG 2012-07-28 19:20:19 +02:00
Wolfgang Bumiller
25e49a669d flags.def and warns.def containing defined flags and warnings 2012-07-28 19:09:44 +02:00
Wolfgang Bumiller
ac26c2f2f2 Add -foverlap-locals - something we really should make possible 2012-07-28 14:48:02 +02:00
Wolfgang Bumiller
3072ce7eba Added handler for -W 2012-07-28 13:59:35 +02:00
Wolfgang Bumiller
ddfd44e2a4 gcc style long option support and -std=foo added 2012-07-28 12:59:33 +02:00
Wolfgang Bumiller
3c462539a6 Commandline handling first draft 2012-07-28 12:36:20 +02:00
Wolfgang Bumiller
b76ffe8304 Merging master with newly merged executor 2012-07-27 19:17:03 +02:00
Wolfgang Bumiller
f8b3081c44 Merging master and adapting _MEM_* on new mem-vector functions 2012-07-27 19:13:03 +02:00
Wolfgang Bumiller
975356cbce Merge branch 'master' into blub/bc3 2012-07-27 19:02:39 +02:00
Wolfgang Bumiller
81fd77da38 _MEM_... -> MEM_... 2012-07-27 19:02:18 +02:00
Wolfgang Bumiller
aef49d9667 Merge branch 'master' into blub/bc3 2012-07-22 12:21:43 +02:00
Wolfgang Bumiller
43897f6e8f store_param storetype, parameter value list added to ast_function 2012-07-22 12:07:30 +02:00
Wolfgang Bumiller
071fd32040 Handling some operands, added type_name array 2012-07-20 21:19:30 +02:00
Wolfgang Bumiller
1d55197097 parsing typenames completely now with function parameters 2012-07-19 11:41:16 +02:00
Wolfgang Bumiller
9b6598f049 Copying my old lexer 2012-07-16 13:59:10 +02:00
Wolfgang Bumiller
3943e27ebb Temporarily reordering instructions for compatibility 2012-07-16 12:43:20 +02:00
Wolfgang Bumiller
8865b12001 Reverting the removal of _FV instructions, it's just easier this way 2012-07-16 12:29:55 +02:00
Wolfgang Bumiller
49f3980360 Merging master 2012-07-16 11:40:30 +02:00
Wolfgang Bumiller
478d5ef5ad type_storep_instr: in theory we could use type_store_instr + INSTR_STOREP_F - INSTR_STORE_F, however, this won't work later when TYPE_INTEGER comes in since the _I instructions are at a seperate place 2012-07-16 10:24:35 +02:00
Wolfgang Bumiller
e9ac1c9e21 First thing: we want quaternions and 4x4 matrices 2012-07-10 19:26:07 +02:00
Wolfgang Bumiller
e8cc27df5b type_store_instr[] to get an INSTR_STORE_x by type 2012-07-03 22:46:38 +02:00
Wolfgang (Blub) Bumiller
97f34d9add fixed a typo in asm_instr[]: ES_FNC->EQ_FNC 2012-06-29 15:41:56 +02:00
Wolfgang (Blub) Bumiller
67b75055b2 adding another storage type: store_return; when generating a CALL, the generator can check the output value's storetype, and if it is NOT store_return, it needs to STORE_x the return value into the output value. 2012-06-29 14:37:12 +02:00
Wolfgang (Blub) Bumiller
9e7143d934 Fixing GMQCC_SUPPRESS_EMPTY_BODY typo 2012-06-28 17:23:01 +02:00
Wolfgang (Blub) Bumiller
080e6e5dfb exec.h -> gmqcc.h 2012-06-27 22:31:56 +02:00
Wolfgang (Blub) Bumiller
f1a2ac624f Moving prog_section and prog_header to gmqcc.h to not have it twice: previously was in code.c and exec.h 2012-06-27 22:04:58 +02:00
Wolfgang (Blub) Bumiller
2fd3ddcb1a moved mem_resize and mem_append vector function macros into gmqcc.h 2012-06-27 14:50:52 +02:00
Wolfgang (Blub) Bumiller
60542f7df0 generation of COND and JUMP now works 2012-06-25 19:27:50 +02:00
Dale Weiler
04cf1d549f Merge branch 'irgen' 2012-06-07 11:24:55 -04:00
Dale Weiler
72f3af6c50 Better fail 2012-06-07 11:24:28 -04:00
Dale Weiler
15d4534202 Fixed more warnings 2012-06-07 11:18:04 -04:00
Dale Weiler
f4bc6ba08a Removed even more warnings 2012-06-07 11:09:29 -04:00
Dale Weiler
d59819620b s/\t/ /g 2012-06-07 10:20:54 -04:00
Dale Weiler
4e9fc02a95 splint: use typedef instead of macro 2012-06-07 10:19:00 -04:00
Dale Weiler
127ad76c65 Whitespace 2012-05-11 12:02:22 -04:00
Wolfgang Bumiller
1fd7e30de6 code_cachedstring 2012-05-09 15:03:19 +02:00
Wolfgang Bumiller
edcb976053 Convenience function to store a predefined string in the qc string area 2012-05-09 15:03:19 +02:00
Wolfgang Bumiller
8bfbe4d619 Preparing to generate code from the IR - code_write should return a bool, and take a filename rather than use program.dat hardcoded 2012-05-09 15:03:19 +02:00
Dale Weiler
4a1f67bb97 Updated readme 2012-05-06 16:58:30 -04:00
Dale Weiler
99971b7806 util_strncmpexact 2012-05-04 22:01:02 -04:00
Dale Weiler
510d795c06 More assembler code (less allocations too) 2012-05-03 16:54:34 -04:00
Dale Weiler
629f6f1e63 Assembly statement parsing 2012-05-01 18:05:11 -04:00
Dale Weiler
95152c1f5c VECTOR_PROT 2012-04-29 19:08:20 -04:00
Dale Weiler
f19cbe1400 Parse vector constants and add them to the constants table now for the assembler. 2012-04-29 19:03:06 -04:00
Dale Weiler
5d64001c36 64bit signed/unsigned integer support from the compiler if LONG_MAX != 0x7FFFFFFF 2012-04-29 12:09:30 -04:00
Dale Weiler
3e7a8c0e78 All code is now C89/C90 compat 2012-04-28 18:56:09 -04:00
Dale Weiler
05966ee009 Remove trailing whitespace from everything 2012-04-28 16:43:39 -04:00
Dale Weiler
7a81848d88 Lexer fixes 2012-04-28 16:25:43 -04:00
Dale Weiler
df9a685f61 surpress empty bodies 2012-04-28 15:13:41 -04:00
Wolfgang Bumiller
f3a9c8c362 2 missind free->mem_d in MEM_VECTOR macros 2012-04-28 11:50:09 +02:00
Dale Weiler
b09d75518c almost ISO C now, fixed all the MEM_VECTOR trailing semicolon issues. 2012-04-28 05:54:24 -04:00
Wolfgang Bumiller
75b78720fd lex_ctx_t -> lex_ctx, vector_t -> vector 2012-04-28 11:15:29 +02:00
Dale Weiler
72053e16d2 Interface change 2012-04-28 05:35:32 -04:00
Dale Weiler
33b1995fa5 struct lex_file -> lex_file 2012-04-28 05:25:19 -04:00
Dale Weiler
89ed723efa astir.h -> gmqcc.h 2012-04-28 05:08:03 -04:00
Wolfgang Bumiller
da827e6098 Removed the qc_type enum and replaced all qc_* by TYPE_* 2012-04-28 10:42:03 +02:00
Dale Weiler
858d9734a2 Merge branch 'assembler' into ast-and-ir 2012-04-28 04:12:24 -04:00
Dale Weiler
de01d34925 type parsing for constants, globals and locals. Sanatize constants to select internal functions to prevent possible runtime issues that could be a result of atoi working for what we consider invalid strings containing constants. 2012-04-28 03:53:23 -04:00
Dale Weiler
07c6aea7dc assembler can parse internal functions. Wrote all internal functions (that are not extensions) to test.qs 2012-04-28 03:26:40 -04:00
Dale Weiler
403901d6ee More assembly work 2012-04-28 02:34:39 -04:00
Dale Weiler
20f203495d More assembler code 2012-04-27 16:45:34 -04:00
Dale Weiler
7aee8ac2ef Working on the assembler 2012-04-27 16:31:38 -04:00
Wolfgang (Blub) Bumiller
348243ddf6 GMQCC_WARN macro 2012-04-27 12:35:59 +02:00
Dale Weiler
422c085fba Sanity check 2012-04-27 05:33:02 -04:00
Wolfgang (Blub) Bumiller
69173876f1 Merge branch 'master' into blub/ast-and-ir-merging 2012-04-27 11:05:57 +02:00
Dale Weiler
db879bd626 Now compiles with mingw; added makefile for windows. 2012-04-26 23:24:32 -04:00
Dale Weiler
63b6abb463 GMQCC_VERSION 2012-04-26 11:37:47 -04:00
Wolfgang (Blub) Bumiller
234567cb9f Merge branch 'master' into blub/ast-and-ir-merging
-> Todo: take over bool from qbool
2012-04-26 10:13:07 +02:00
Dale Weiler
4c55dba10d Implemented platform[safe, neutral], compiler[safe, neutral] and C version[safe, neutral] <stdbool.h>. M$ Visual Studio doesn't provide support for C99 2012-04-25 17:03:56 -04:00
Dale Weiler
1fd2666fba code_strings_add replaced with proper multiplie element insertion vector support just added 2012-04-25 16:49:04 -04:00
Dale Weiler
fe5c322e38 Implemented support for multiple element (with assisted length) insertion on VECTOR_ expansions 2012-04-25 16:43:25 -04:00
Dale Weiler
e6ac367179 Make VECTOR_ more flexible for inside structures, and such. 2012-04-25 15:49:20 -04:00
Dale Weiler
168fd244bd TYPE_ macros 2012-04-25 11:45:01 -04:00
Dale Weiler
b102e77dca s/#define / / & s/[0-9]// & inplace enum { - end } 2012-04-25 11:42:20 -04:00
Wolfgang (Blub) Bumiller
22fcf399e0 Adding the 3 virtual instructions required for the IR later. 2012-04-25 17:27:47 +02:00
Dale Weiler
8049252f65 new progs format proposal for engine developers (45% of globals are 0, why write them, let the engine populate them. We can essentially save 9884 bytes in xonotic's progs.dat with this new format.) 2012-04-24 08:19:48 -04:00
Dale Weiler
691d146d9b -fdarkplaces-stringtablebug 2012-04-22 16:58:12 -04:00
Dale Weiler
4d001da04e Language type selection at command line. 2012-04-21 22:55:30 -04:00
Dale Weiler
7849f8c597 slightly faster hash function (using crc32), with precomputed polynomial table (256x32-bit entries, eight shifted xor operations). QuakeC header files include a crc16 in them (this isn't it, that is on the TODO list) 2012-04-21 16:02:33 -04:00
Dale Weiler
03295d7adc command line argument parsing. 2012-04-20 01:20:22 -04:00
Dale Weiler
857cb72a94 Starting assembly 2012-04-20 00:44:44 -04:00
Dale Weiler
082caf61bd ensure all data is LE format, cleanups, etc. 2012-04-19 16:41:03 -04:00
Dale Weiler
32b804864e Fix clang warnings 2012-04-17 17:31:07 -04:00
Dale Weiler
2bef34a4f7 Fix memory leaks, more memory tracker stuff as well. 2012-04-17 17:16:11 -04:00
Dale Weiler
477e80f1fb tabulators->four spaces 2012-04-17 16:24:22 -04:00
Dale Weiler
7501444add replaced getline with util_getline 2012-04-17 16:14:00 -04:00
Dale Weiler
6e3819a76c Work in progress assembler, cleanups and more. 2012-04-17 04:29:58 -04:00
Dale Weiler
36378e341e More cleanups 2012-04-15 18:01:21 -04:00
Dale Weiler
98b0e11890 Cleanups 2012-04-15 17:47:14 -04:00
Dale Weiler
29a3c02c35 Removed primitive AST tree generator ... I'm planning a rewrite as we speak. 2012-04-15 07:59:22 -04:00
Dale Weiler
4e35032a24 Include now works 2012-04-14 03:53:20 -04:00
Dale Weiler
e4bc0a2d6a More parsing stuff (still totally broken) 2012-04-11 19:41:04 -04:00
Dale Weiler
e4e6185d5f Count file lines 2012-04-11 15:53:40 -04:00
Dale Weiler
9a7fa82bd0 It does hello world 2012-04-11 08:40:17 -04:00
Dale Weiler
387a6ecfa7 Test program 2012-04-11 04:18:40 -04:00
Dale Weiler
fcc83306f1 Indentation 2012-04-11 03:57:16 -04:00
Dale Weiler
0b322a8944 Some perliminary code gen code (just writes a header) 2012-04-11 03:54:01 -04:00
Dale Weiler
639fc8a32b Cleanups 2012-04-10 05:02:58 -04:00
Dale Weiler
d5dcb3aff7 digraph and trigraph tests 2012-04-10 04:29:06 -04:00
Dale Weiler
bd5ba9e0fe Cleanups 2012-04-10 04:20:15 -04:00
Dale Weiler
02e9098d3d Fixed parsing issues, added some parser tests. 2012-04-10 01:03:52 -04:00
Dale Weiler
248cd7af94 Fix parser bug 2012-04-09 23:46:59 -04:00
Dale Weiler
506f4bca1b Implemented memory tracker 2012-04-09 23:12:42 -04:00
Dale Weiler
c3f08b289b Cleanups 2012-04-09 20:39:54 -04:00
Dale Weiler
a440c1410b Cleaups and README 2012-04-09 20:18:49 -04:00
Dale Weiler
45cbef1b8f Typedefs can now be registered, and even typedef a typedef. 2012-04-09 20:10:52 -04:00
Dale Weiler
b10d1005fb Implemented typedefs 2012-04-09 19:47:20 -04:00
Dale Weiler
2b94dc1d89 More parsing & parse tree 2012-04-09 19:00:13 -04:00
Dale Weiler
1deeb8c9cf Work in progress preprocessor 2012-04-09 09:36:16 -04:00
Dale Weiler
c436c3a6c6 Some new types, and lexer changes 2012-04-09 07:45:20 -04:00
Dale Weiler
fe6e142f85 Some fixes and command line switches parsing 2012-04-09 07:09:57 -04:00
Dale Weiler
48a95ec3c9 initial commit 2012-04-09 06:42:06 -04:00