The Z83 C Compiler is an optimizing cross compiler for a language very similar to C targeted toward the TI83+. The output from the compiler may be assembled with TASM (http://home.comcast.net/~tasm/) or ZASM (http://lpg.ticalc.org/prj_zasm/).


http://z83cc.sourceforge.net





Separate each tag with a space.

Release Date:

2006-07-17

Topics:

Licenses:

Ratings and Reviews

Be the first to post a text review of Z83 C Compiler. Rate and review a project by clicking thumbs up or thumbs down in the right column.

Project Feed

  • File released: /Peephole Rules File/Peephole Rules/z80rules

    posted 1210 days ago

  • File released: /z83cc/z83cc 0.07-alpha2/z83cc-0.07-alpha2-win32.zip

    posted 1210 days ago

  • File released: /z83cc/z83cc 0.07-alpha2/z83cc-0.07-alpha2.tar.gz

    posted 1210 days ago

  • File released: /z83cc/z83cc 0.07-alpha2/z83cc-0.07-alpha2.tar.bz2

    posted 1210 days ago

  • Peephole Rules File Peephole Rules file released: z80rules

    posted 1210 days ago

  • z83cc z83cc 0.07-alpha2 file released: z83cc-0.07-alpha2-win32.zip

    2006-07-16 Michael Bruno <mbruno@wpi.edu> * z80rules: More peephole rules. * peephole.c (peephole_optimize): The reopened output file was not being assigned to outfile, fixed. 2006-07-15 Michael Bruno <mbruno@wpi.edu> * main.c (usage, main): * peephole.c: * z80rules: Included the peephole optimizer from z88dk. However I have written the peephole rules from scratch to ensure compatibility with the output from z83cc. There are new options to disable the peephole optimizer, include an extra rule file, and view debug output from the optimizer. 2006-07-11 Michael Bruno <mbruno@wpi.edu> * parser.y: * generate.c (gen_convert): Added support for explicit type-casting. Casting from signed integers to floats also now works as it should. Casting from floats to both signed and unsigned integers works, however if the float is > 9999 an error is generated. It shouldn't be this way but for the time being I don't see any good solution. 2006-07-10 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_expr, gen_asm): * gen_comments.c: * main.c (usage, main): Added the option to generate comments in the output assembly file describing what is happening. * generate.c (gen_funccall): Fixed an introduced bug that occurred when passing a literal number to an 8 bit parameter being pushed alone. 2006-07-07 Michael Bruno <mbruno@wpi.edu> * generate.c (get_free_reg): When register l was chosen it was wrongly returning register h. * parser.y: * symtab.c (fillOpType): * generate.c (gen_ternary_if): Fixed the way types are assigned to ternary if expressions. Also optimized the way the test expression is evaluated. * generate.c (gen_funccall): Optimized the way two "int" parameters in a row are passed. They are done together in a single push now, rather than as two pushes. * generate.c: * main.c (usage, main): Added the options to generate jr over jp whenever possible, and also to disable bounds checking on jump tables created by switch statements. 2006-07-06 Michael Bruno <mbruno@wpi.edu> * symtab.c (fillSymTab, typecheck): * generate.c (gen_locals, gen_asm): * ast.h: There was a bug in traversing the symbol table tree in some situations, most noticeably in if else statements. It *should* be perfect now. 2006-07-05 Michael Bruno <mbruno@wpi.edu> * parser.y: Line markers inside functions were returning random memory and causing segfaults. Fixed. 2006-07-04 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_sub): Under the right circumstances, the dec instruction was being used in 16 bit comparisons. However since dec does not affect any condition bits, this would cause a problem. It is now fixed, dec will never be used with 16 bit comparisons. 2006-07-03 Michael Bruno <mbruno@wpi.edu> * generate.c: Fixed a typo with rFPAdd and rMov9ToOP1 * generate.c (gen_funccall): Parameters are now passed slightly more efficiently, especially literal numbers. * generate.c (generate_ti83p, gen_ti83p_mirage_header): * main.c (usage, main): You can now create a MirageOS program by compiling a program with the -mirage option. For now you can not create a custom icon or description, it uses a builtin default. 2006-07-02 Michael Bruno <mbruno@wpi.edu> * generate.c: Replaced bcalls to _Mov9ToOP1 with its rst equivalent. Also replaced _FPAdd with its rst equivalent. Replaced bcalls to PushOPx and PopOPx with PushRealOx and PopRealOx respectively. These should all be slightly more efficient. * generate.c (save_reg): Fixed a bug that caused a segfault on the amd64 architecture when calling get_reg_str(). 2006-07-01 Michael Bruno <mbruno@wpi.edu> * lexer.l: Changed it so identifier strings are allocated with calloc rather than malloc. It was causing a bug in Windows where there was no NULL character after the string. * preprocessor.c (exec_cpp): Added Windows support so windows can run the preprocessor without cygwin emulation. 2006-06-30 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * generate.c (gen_op, gen_ternary_if): Added both recognition and assembly generation of the ternary if expression ( expr ? expr : expr). * main.c (main, addlib, usage): Added a new option -llibrary. * preprocessor.c (exec_cpp): Added an include directory to cpp's search path. It is "${datadir}/z83cc/include". 2006-06-29 Michael Bruno <mbruno@wpi.edu> * symtab.c (addVar): Errors will only be generated for multiple definitions of variables if the types are different. * symtab.c (addFunc): * generate.c (gen_asm): Errors will be generated for multiple definitions of functions if more than one isn't a prototype. * symtab.c (checkFunc): * generate.c (gen_asm): Now marks a function as used if it finds a call to the function. If the function isn't used, it is skipped over during the code generation. * parser.y: Added a string rule that concatenates adjacent strings. ie. "hello"" world" == "hello world". 2006-06-28 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * symtab.c: * generate.c: Added support for the extern keyword. Now it is possible to use the variables in the ti83plus.inc file. * parser.y: Removed some leftover code that was freeing case expressions and causing much trouble. * configure.ac: Modified to check for stddef.h and not to check for pow(); * lexer.l: It now recogizes the prefix "0x" and the suffix "h" for hexadecimal literals, and likewise "0b" and "b" for binary literals, in addition to the existing "$" and "%" prefixes. * lexer.l: * parser.y: * symtab.c: * error.c: Now recognizes and supports linemarkers output by the C Preprocessor. Important since the preprocessor strips out comments which can change the linenumber. Also because now it can compile multiple files at once, so errors report which file they occur in. 2006-06-27 Michael Bruno <mbruno@wpi.edu> * configure: I autotools the package, so you now can do the traditional ./configure && make && make install * main.c (main): Added the ability to read in multiple input source files and compile them all together. * symtab.c (newSymTabScope): Now uses calloc instead of malloc to allocate a new symbol table. * symtab.c (typecheck): Fixed a small bug that caused calling an undefined function to not return an error. 2006-06-26 Michael Bruno <mbruno@wpi.edu> * lexer.l: * generate.c: Added support for the dos/windows newline sequence. * main.c: * preprocessor.h: * preprocessor.c: Added a preprocessor. It simply runs cpp on the source file and then uses its output as the input. Added the new option -nopp to turn off the preprocessor. * symtab.c (addFunc): Sets whether or not a function is a prototype. It now ignores duplicate function definitions. * generate.c (gen_asm): If there is a `main' function, and it is not the first function, it is jumped to right before the first function. 2006-06-25 Michael Bruno <mbruno@wpi.edu> * parser.y: Changed the way expressions are parsed. Fixed a bug when parsing array indexes. * parser.y: * lexer.l: * generate.c (gen_assign): Added the rest of the assignment operators (+=, -=, *=, ...) and pre and post inc/decrements. * generate.c (gen_add): Fixed bug that could occur when using inc. * generate.c: Changed the behaviour of some binary operators so that the left hand value is always moved to the destination register before the right hand side is evaluated. 2006-06-24 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_convert): Fixed an introduced bug that broke upcasting of integers. * symtab.c (coerce, coerceParam): Fixed a bug regarding casting of Function calls. * parser.y: Grammer rule for case labels was in there twice. I removed one. * symtab.c: Added typechecking for return and switch statements. * generate.c (gen_reg): The reference operator (&) now works with local variables. * gen_mult_div.c (gen_signed_int_div): Fixed a small bug that occured if the dividend was negative. * generate.c (gen_asm): * symtab.c (checkReturnType): Added an extremely limited/crappy way of adding a return at the end of a void function if it thinks you haven't put one there yourself. Doesn't always work. I'll make it better later.

    posted 1210 days ago

  • z83cc z83cc 0.07-alpha2 file released: z83cc-0.07-alpha2.tar.gz

    2006-07-16 Michael Bruno <mbruno@wpi.edu> * z80rules: More peephole rules. * peephole.c (peephole_optimize): The reopened output file was not being assigned to outfile, fixed. 2006-07-15 Michael Bruno <mbruno@wpi.edu> * main.c (usage, main): * peephole.c: * z80rules: Included the peephole optimizer from z88dk. However I have written the peephole rules from scratch to ensure compatibility with the output from z83cc. There are new options to disable the peephole optimizer, include an extra rule file, and view debug output from the optimizer. 2006-07-11 Michael Bruno <mbruno@wpi.edu> * parser.y: * generate.c (gen_convert): Added support for explicit type-casting. Casting from signed integers to floats also now works as it should. Casting from floats to both signed and unsigned integers works, however if the float is > 9999 an error is generated. It shouldn't be this way but for the time being I don't see any good solution. 2006-07-10 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_expr, gen_asm): * gen_comments.c: * main.c (usage, main): Added the option to generate comments in the output assembly file describing what is happening. * generate.c (gen_funccall): Fixed an introduced bug that occurred when passing a literal number to an 8 bit parameter being pushed alone. 2006-07-07 Michael Bruno <mbruno@wpi.edu> * generate.c (get_free_reg): When register l was chosen it was wrongly returning register h. * parser.y: * symtab.c (fillOpType): * generate.c (gen_ternary_if): Fixed the way types are assigned to ternary if expressions. Also optimized the way the test expression is evaluated. * generate.c (gen_funccall): Optimized the way two "int" parameters in a row are passed. They are done together in a single push now, rather than as two pushes. * generate.c: * main.c (usage, main): Added the options to generate jr over jp whenever possible, and also to disable bounds checking on jump tables created by switch statements. 2006-07-06 Michael Bruno <mbruno@wpi.edu> * symtab.c (fillSymTab, typecheck): * generate.c (gen_locals, gen_asm): * ast.h: There was a bug in traversing the symbol table tree in some situations, most noticeably in if else statements. It *should* be perfect now. 2006-07-05 Michael Bruno <mbruno@wpi.edu> * parser.y: Line markers inside functions were returning random memory and causing segfaults. Fixed. 2006-07-04 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_sub): Under the right circumstances, the dec instruction was being used in 16 bit comparisons. However since dec does not affect any condition bits, this would cause a problem. It is now fixed, dec will never be used with 16 bit comparisons. 2006-07-03 Michael Bruno <mbruno@wpi.edu> * generate.c: Fixed a typo with rFPAdd and rMov9ToOP1 * generate.c (gen_funccall): Parameters are now passed slightly more efficiently, especially literal numbers. * generate.c (generate_ti83p, gen_ti83p_mirage_header): * main.c (usage, main): You can now create a MirageOS program by compiling a program with the -mirage option. For now you can not create a custom icon or description, it uses a builtin default. 2006-07-02 Michael Bruno <mbruno@wpi.edu> * generate.c: Replaced bcalls to _Mov9ToOP1 with its rst equivalent. Also replaced _FPAdd with its rst equivalent. Replaced bcalls to PushOPx and PopOPx with PushRealOx and PopRealOx respectively. These should all be slightly more efficient. * generate.c (save_reg): Fixed a bug that caused a segfault on the amd64 architecture when calling get_reg_str(). 2006-07-01 Michael Bruno <mbruno@wpi.edu> * lexer.l: Changed it so identifier strings are allocated with calloc rather than malloc. It was causing a bug in Windows where there was no NULL character after the string. * preprocessor.c (exec_cpp): Added Windows support so windows can run the preprocessor without cygwin emulation. 2006-06-30 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * generate.c (gen_op, gen_ternary_if): Added both recognition and assembly generation of the ternary if expression ( expr ? expr : expr). * main.c (main, addlib, usage): Added a new option -llibrary. * preprocessor.c (exec_cpp): Added an include directory to cpp's search path. It is "${datadir}/z83cc/include". 2006-06-29 Michael Bruno <mbruno@wpi.edu> * symtab.c (addVar): Errors will only be generated for multiple definitions of variables if the types are different. * symtab.c (addFunc): * generate.c (gen_asm): Errors will be generated for multiple definitions of functions if more than one isn't a prototype. * symtab.c (checkFunc): * generate.c (gen_asm): Now marks a function as used if it finds a call to the function. If the function isn't used, it is skipped over during the code generation. * parser.y: Added a string rule that concatenates adjacent strings. ie. "hello"" world" == "hello world". 2006-06-28 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * symtab.c: * generate.c: Added support for the extern keyword. Now it is possible to use the variables in the ti83plus.inc file. * parser.y: Removed some leftover code that was freeing case expressions and causing much trouble. * configure.ac: Modified to check for stddef.h and not to check for pow(); * lexer.l: It now recogizes the prefix "0x" and the suffix "h" for hexadecimal literals, and likewise "0b" and "b" for binary literals, in addition to the existing "$" and "%" prefixes. * lexer.l: * parser.y: * symtab.c: * error.c: Now recognizes and supports linemarkers output by the C Preprocessor. Important since the preprocessor strips out comments which can change the linenumber. Also because now it can compile multiple files at once, so errors report which file they occur in. 2006-06-27 Michael Bruno <mbruno@wpi.edu> * configure: I autotools the package, so you now can do the traditional ./configure && make && make install * main.c (main): Added the ability to read in multiple input source files and compile them all together. * symtab.c (newSymTabScope): Now uses calloc instead of malloc to allocate a new symbol table. * symtab.c (typecheck): Fixed a small bug that caused calling an undefined function to not return an error. 2006-06-26 Michael Bruno <mbruno@wpi.edu> * lexer.l: * generate.c: Added support for the dos/windows newline sequence. * main.c: * preprocessor.h: * preprocessor.c: Added a preprocessor. It simply runs cpp on the source file and then uses its output as the input. Added the new option -nopp to turn off the preprocessor. * symtab.c (addFunc): Sets whether or not a function is a prototype. It now ignores duplicate function definitions. * generate.c (gen_asm): If there is a `main' function, and it is not the first function, it is jumped to right before the first function. 2006-06-25 Michael Bruno <mbruno@wpi.edu> * parser.y: Changed the way expressions are parsed. Fixed a bug when parsing array indexes. * parser.y: * lexer.l: * generate.c (gen_assign): Added the rest of the assignment operators (+=, -=, *=, ...) and pre and post inc/decrements. * generate.c (gen_add): Fixed bug that could occur when using inc. * generate.c: Changed the behaviour of some binary operators so that the left hand value is always moved to the destination register before the right hand side is evaluated. 2006-06-24 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_convert): Fixed an introduced bug that broke upcasting of integers. * symtab.c (coerce, coerceParam): Fixed a bug regarding casting of Function calls. * parser.y: Grammer rule for case labels was in there twice. I removed one. * symtab.c: Added typechecking for return and switch statements. * generate.c (gen_reg): The reference operator (&) now works with local variables. * gen_mult_div.c (gen_signed_int_div): Fixed a small bug that occured if the dividend was negative. * generate.c (gen_asm): * symtab.c (checkReturnType): Added an extremely limited/crappy way of adding a return at the end of a void function if it thinks you haven't put one there yourself. Doesn't always work. I'll make it better later.

    posted 1210 days ago

  • z83cc z83cc 0.07-alpha2 file released: z83cc-0.07-alpha2.tar.bz2

    2006-07-16 Michael Bruno <mbruno@wpi.edu> * z80rules: More peephole rules. * peephole.c (peephole_optimize): The reopened output file was not being assigned to outfile, fixed. 2006-07-15 Michael Bruno <mbruno@wpi.edu> * main.c (usage, main): * peephole.c: * z80rules: Included the peephole optimizer from z88dk. However I have written the peephole rules from scratch to ensure compatibility with the output from z83cc. There are new options to disable the peephole optimizer, include an extra rule file, and view debug output from the optimizer. 2006-07-11 Michael Bruno <mbruno@wpi.edu> * parser.y: * generate.c (gen_convert): Added support for explicit type-casting. Casting from signed integers to floats also now works as it should. Casting from floats to both signed and unsigned integers works, however if the float is > 9999 an error is generated. It shouldn't be this way but for the time being I don't see any good solution. 2006-07-10 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_expr, gen_asm): * gen_comments.c: * main.c (usage, main): Added the option to generate comments in the output assembly file describing what is happening. * generate.c (gen_funccall): Fixed an introduced bug that occurred when passing a literal number to an 8 bit parameter being pushed alone. 2006-07-07 Michael Bruno <mbruno@wpi.edu> * generate.c (get_free_reg): When register l was chosen it was wrongly returning register h. * parser.y: * symtab.c (fillOpType): * generate.c (gen_ternary_if): Fixed the way types are assigned to ternary if expressions. Also optimized the way the test expression is evaluated. * generate.c (gen_funccall): Optimized the way two "int" parameters in a row are passed. They are done together in a single push now, rather than as two pushes. * generate.c: * main.c (usage, main): Added the options to generate jr over jp whenever possible, and also to disable bounds checking on jump tables created by switch statements. 2006-07-06 Michael Bruno <mbruno@wpi.edu> * symtab.c (fillSymTab, typecheck): * generate.c (gen_locals, gen_asm): * ast.h: There was a bug in traversing the symbol table tree in some situations, most noticeably in if else statements. It *should* be perfect now. 2006-07-05 Michael Bruno <mbruno@wpi.edu> * parser.y: Line markers inside functions were returning random memory and causing segfaults. Fixed. 2006-07-04 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_sub): Under the right circumstances, the dec instruction was being used in 16 bit comparisons. However since dec does not affect any condition bits, this would cause a problem. It is now fixed, dec will never be used with 16 bit comparisons. 2006-07-03 Michael Bruno <mbruno@wpi.edu> * generate.c: Fixed a typo with rFPAdd and rMov9ToOP1 * generate.c (gen_funccall): Parameters are now passed slightly more efficiently, especially literal numbers. * generate.c (generate_ti83p, gen_ti83p_mirage_header): * main.c (usage, main): You can now create a MirageOS program by compiling a program with the -mirage option. For now you can not create a custom icon or description, it uses a builtin default. 2006-07-02 Michael Bruno <mbruno@wpi.edu> * generate.c: Replaced bcalls to _Mov9ToOP1 with its rst equivalent. Also replaced _FPAdd with its rst equivalent. Replaced bcalls to PushOPx and PopOPx with PushRealOx and PopRealOx respectively. These should all be slightly more efficient. * generate.c (save_reg): Fixed a bug that caused a segfault on the amd64 architecture when calling get_reg_str(). 2006-07-01 Michael Bruno <mbruno@wpi.edu> * lexer.l: Changed it so identifier strings are allocated with calloc rather than malloc. It was causing a bug in Windows where there was no NULL character after the string. * preprocessor.c (exec_cpp): Added Windows support so windows can run the preprocessor without cygwin emulation. 2006-06-30 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * generate.c (gen_op, gen_ternary_if): Added both recognition and assembly generation of the ternary if expression ( expr ? expr : expr). * main.c (main, addlib, usage): Added a new option -llibrary. * preprocessor.c (exec_cpp): Added an include directory to cpp's search path. It is "${datadir}/z83cc/include". 2006-06-29 Michael Bruno <mbruno@wpi.edu> * symtab.c (addVar): Errors will only be generated for multiple definitions of variables if the types are different. * symtab.c (addFunc): * generate.c (gen_asm): Errors will be generated for multiple definitions of functions if more than one isn't a prototype. * symtab.c (checkFunc): * generate.c (gen_asm): Now marks a function as used if it finds a call to the function. If the function isn't used, it is skipped over during the code generation. * parser.y: Added a string rule that concatenates adjacent strings. ie. "hello"" world" == "hello world". 2006-06-28 Michael Bruno <mbruno@wpi.edu> * lexer.l: * parser.y: * symtab.c: * generate.c: Added support for the extern keyword. Now it is possible to use the variables in the ti83plus.inc file. * parser.y: Removed some leftover code that was freeing case expressions and causing much trouble. * configure.ac: Modified to check for stddef.h and not to check for pow(); * lexer.l: It now recogizes the prefix "0x" and the suffix "h" for hexadecimal literals, and likewise "0b" and "b" for binary literals, in addition to the existing "$" and "%" prefixes. * lexer.l: * parser.y: * symtab.c: * error.c: Now recognizes and supports linemarkers output by the C Preprocessor. Important since the preprocessor strips out comments which can change the linenumber. Also because now it can compile multiple files at once, so errors report which file they occur in. 2006-06-27 Michael Bruno <mbruno@wpi.edu> * configure: I autotools the package, so you now can do the traditional ./configure && make && make install * main.c (main): Added the ability to read in multiple input source files and compile them all together. * symtab.c (newSymTabScope): Now uses calloc instead of malloc to allocate a new symbol table. * symtab.c (typecheck): Fixed a small bug that caused calling an undefined function to not return an error. 2006-06-26 Michael Bruno <mbruno@wpi.edu> * lexer.l: * generate.c: Added support for the dos/windows newline sequence. * main.c: * preprocessor.h: * preprocessor.c: Added a preprocessor. It simply runs cpp on the source file and then uses its output as the input. Added the new option -nopp to turn off the preprocessor. * symtab.c (addFunc): Sets whether or not a function is a prototype. It now ignores duplicate function definitions. * generate.c (gen_asm): If there is a `main' function, and it is not the first function, it is jumped to right before the first function. 2006-06-25 Michael Bruno <mbruno@wpi.edu> * parser.y: Changed the way expressions are parsed. Fixed a bug when parsing array indexes. * parser.y: * lexer.l: * generate.c (gen_assign): Added the rest of the assignment operators (+=, -=, *=, ...) and pre and post inc/decrements. * generate.c (gen_add): Fixed bug that could occur when using inc. * generate.c: Changed the behaviour of some binary operators so that the left hand value is always moved to the destination register before the right hand side is evaluated. 2006-06-24 Michael Bruno <mbruno@wpi.edu> * generate.c (gen_convert): Fixed an introduced bug that broke upcasting of integers. * symtab.c (coerce, coerceParam): Fixed a bug regarding casting of Function calls. * parser.y: Grammer rule for case labels was in there twice. I removed one. * symtab.c: Added typechecking for return and switch statements. * generate.c (gen_reg): The reference operator (&) now works with local variables. * gen_mult_div.c (gen_signed_int_div): Fixed a small bug that occured if the dividend was negative. * generate.c (gen_asm): * symtab.c (checkReturnType): Added an extremely limited/crappy way of adding a return at the end of a void function if it thinks you haven't put one there yourself. Doesn't always work. I'll make it better later.

    posted 1210 days ago

  • File released: /z83cc/z83cc 0.07-alpha1/z83cc-0.07-alpha1-win32.zip

    posted 1212 days ago

  • File released: /z83cc/z83cc 0.07-alpha1/z83cc-0.07-alpha1.tar.gz

    posted 1212 days ago

Rate and Review

Be the first person to add a text review.

Would you recommend this project?






<

Related Projects

Z83 C Compiler Actions

Thanks for your rating!

Would you also like to write a review?





Skip Review