1
0
mirror of https://github.com/cc65/cc65.git synced 2024-07-17 09:29:10 +00:00
Commit Graph

1958 Commits

Author SHA1 Message Date
uz
7bd19b737a One more place where OutputNameUsed must be flagged.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4844 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-09 22:07:45 +00:00
uz
a2b7ef2b08 Merge CfgProcess and CfgAssignSegments because both do some sort of
postprocessing. Print a warning if %O was used in the config file and the
output file name is changed later using -o.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4842 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-09 21:01:27 +00:00
uz
c9b9069208 Better handling of imports in the ExprNode structure.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4841 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-09 20:34:08 +00:00
uz
da792b3fd0 Separate processing the linker config file into two phases: The config file is
read when the -t or -C switch is encountered and parts of it are processed.
The remaining parts are processed when all object files and libraries have
been read. To make this work, the expression evaluation in cfgexpr has been
rewritten to generate true expression trees. This means that expressions in
the linker config may use exports from the object files. 

Separation of config file processing is the base for several enhancements, for
example forced imports by linker config.

This code needs more work and is only very, very, very roughly tested.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4840 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-08 21:52:24 +00:00
uz
6c0a9c0438 Patch to correct the linkorder in the make files to make the --as-needed
ldflag work. By Mario Fetka.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4838 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-07 11:34:51 +00:00
uz
f1ce44edfe Fixed register info for several runtime functions. Info for the Y register was
wrong, so the optimizer assumed it wouldn't change across a call.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4836 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-11-02 18:05:19 +00:00
uz
d08ff2b6df Fix parsing of push/pop so that #pragma warn works without.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4824 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-10-02 19:43:18 +00:00
uz
e048d2aeba Make the warning "statement has no effect" switchable.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4823 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-10-02 19:32:11 +00:00
ol.sc
aaf90c1252 Exclude (small) stack from RAM memory area (like on most other targets) to make explicit that the linker may not use all RAM. If the cc65 parameter stack isn't used at all the __STACKSIZE__ symbol may be overridden on the linker command line with -D __STACKSIZE__=0.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4820 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-10-02 10:20:00 +00:00
uz
172d33e584 Fixed problem with last change: Static declaration do also set the SC_EXTERN
flag (have to check why).


git-svn-id: svn://svn.cc65.org/cc65/trunk@4818 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-24 07:28:08 +00:00
uz
5aff0764a1 Allow initialization of variables declared with "extern".
git-svn-id: svn://svn.cc65.org/cc65/trunk@4816 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-23 18:18:53 +00:00
uz
674289e471 use ReadVar to read the type. This doesn't make a difference for now but will
come handy later. Add output for all of the symbol flags from symdefs.h.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4814 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 21:04:28 +00:00
uz
017bdf970a Include information about the type of the symbol in the flags written to the
object file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4813 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 20:54:02 +00:00
uz
112ae0e3db Renamed the defines in symdefs.h to something more meaningful. They were named
EXP_xxx for historic reasons, but SYM_ does make much more sense now.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4812 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 20:47:27 +00:00
uz
d62af9de80 Debug symbolid for each symbol that goes into the debug symbol output.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4811 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 20:11:27 +00:00
uz
b2b2a05a46 SF_INDEXED is no longer needed.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4810 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 20:02:30 +00:00
uz
c921c409e8 Rename symbol index => import id because that's what it really is.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4809 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 20:01:54 +00:00
uz
e55b19fa8b Maintain some additional information for scopes. Write a dummy scope section
into the object file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4808 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-17 16:58:41 +00:00
uz
41c119deca Bumped the year in the copyright notice. It hasn't changed for five years:-)
git-svn-id: svn://svn.cc65.org/cc65/trunk@4807 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-11 19:43:48 +00:00
uz
1a4a02821e New function cc65_symbol_inrange. Fixed an error in cc65_symbol_byname.
Restructured the dbgtest.c source.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4806 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-11 19:31:30 +00:00
uz
d627b1ac83 First support for symbols - mostly untested.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4805 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 22:05:44 +00:00
uz
03d3868d45 Start adding (limited) support for symbols.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4804 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 21:29:15 +00:00
uz
7e72e7d46b Change output for symbols in the debug info file to match that of the other
lines. The name is now preceeded by "name=".


git-svn-id: svn://svn.cc65.org/cc65/trunk@4803 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 21:28:47 +00:00
uz
8f03c4e9cf Move the collection containing all line infos into the DbgInfo struct and keep
it there. It will be used to search for line info by address in some future
version, which is faster than searching through all the source files in a
linear fashion.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4802 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 20:54:12 +00:00
uz
5625977188 Add 'extern "C"' so the module may be used from C++ sources.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4801 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 15:55:49 +00:00
uz
3f7fc55c7e Added some more checks and initialization.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4800 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 15:52:23 +00:00
uz
b936617eb4 Fixed a C99ism.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4799 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-09 05:47:22 +00:00
uz
99fd891126 Major changes: Names of structures, fields and subroutine names have changed.
Support for additional segment info and file offsets for an address. The
version number is now mandatory and checked to avoid problems with old
formats.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4798 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 20:38:15 +00:00
uz
14e567aed2 Another format change: Record the output file and offset for each segment
written to the output. Make this information available in the debug info file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4797 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 20:32:13 +00:00
uz
6272c93556 Allow access to segment information.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4796 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 15:43:13 +00:00
uz
34c938e7ac More collection usage. This has also removed the need for the MemListNode
structure.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4795 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 15:35:56 +00:00
uz
fedb265a22 More collection usage.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4794 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 15:23:22 +00:00
uz
ad140bede4 Replace more linked lists by collections.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4793 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 15:13:53 +00:00
uz
026724482f Use collections instead of linked lists to simplify things.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4792 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-08 15:03:58 +00:00
uz
3eed1bffbc Some more test and example code.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4790 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-07 13:40:16 +00:00
uz
d645a797cb Improved info API.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4789 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-07 13:25:09 +00:00
uz
8c39874daa Some changes in debug info generation.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4788 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-07 12:46:12 +00:00
uz
1dbb84bcee Add some code that tries to skip unknown keywords that may have been added by
later version of the debug info.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4787 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-06 09:17:43 +00:00
uz
3d2cb567dc The stuff will not link with Watcom because of vsnprintf, but a makefile is
still useful for testing.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4786 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 21:16:07 +00:00
uz
1877af89cc Several fixes detected when using another C compiler.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4785 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 21:15:00 +00:00
uz
4b1c5e4157 First working version with complete API for line information.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4784 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 21:00:36 +00:00
uz
12e7cc010d Output version information into the debug file.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4783 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 20:41:27 +00:00
uz
0807da74bd Corrected indentation - no code change.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4782 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 19:34:25 +00:00
uz
b8e7feb788 Fix relocation of line infos.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4781 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-05 19:34:03 +00:00
uz
abda26a309 Don't output multiple code ranges per line, since this is harder to parse.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4780 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-03 19:00:14 +00:00
uz
54e22eb53c First version of a module that reads debug files generated by ld65.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4779 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-03 18:46:50 +00:00
uz
e046ecbcf2 Be sure to generate line info for all segments.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4778 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-01 13:52:06 +00:00
uz
83e5252785 Changed a comment
git-svn-id: svn://svn.cc65.org/cc65/trunk@4777 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-08-01 13:48:32 +00:00
uz
031ae666e3 Fixed an error in the macro version of HasObjData().
git-svn-id: svn://svn.cc65.org/cc65/trunk@4776 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-31 12:37:14 +00:00
uz
b2321ebdf7 Fixed an error: Some of the collections weren't initialized.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4775 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-31 09:44:25 +00:00
uz
23b867b7a4 Handle file position information for fragments differently: Instead of
handling them separately (which has historic reasons), generate real line info
information. This means that line info for the assembler source will be part
of the debug info file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4774 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-30 22:44:09 +00:00
uz
f308a3c4d1 Use collections in the object file structure instead of managing the items
manually.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4773 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-30 20:58:51 +00:00
uz
5bffbc98ff Added a new function CollGrow.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4772 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-30 20:58:09 +00:00
uz
7d506c84c9 Make .DEF, .REF and friends also work with cheap local symbols.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4767 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-26 17:28:34 +00:00
uz
477b77f528 Another minor improvement in compares.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4745 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-11 21:53:48 +00:00
uz
2bb2d97ab0 Fixed and improved the code for compares. Before, compares of chars to a
constant where sometimes passed down to the code generator in a way that
caused wrong code to be generated.

This change may go into 2.13 after some testing.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4743 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-11 16:11:45 +00:00
uz
a89231ece7 Fixed an error: A function wasn't converted to a void pointer automatically by
the compiler.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4741 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-10 20:48:05 +00:00
uz
abbfaef2aa A negative token count for .LEFT was incorrectly adjusted to 1, not to 0.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4738 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-07-10 12:32:05 +00:00
uz
125ab37c09 Added relative include path handling: The path of an input file is now pushed
onto the search path list, so include files will be searched relative to this
path first.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4676 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-30 13:31:09 +00:00
uz
b942fd0b56 Check for a size of zero in SB_CopyBuf to make the code somewhat faster.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4675 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-29 21:23:34 +00:00
uz
314893619a Don't ignore empty paths when adding the path of a file to the search path
list.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4674 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-29 21:20:48 +00:00
uz
02f5b5499e Changed search path logic: Include files are now search first in the directory
containing the file that had the #include statement. The path of the main file
will also added to the front of the search path list, so includes will not be
search in the current directory first, but in the directory that contains the
main file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4673 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-28 12:00:12 +00:00
uz
9a6f97cfe1 PushSearchPath will add the path only if it's not already there.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4672 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-28 11:56:01 +00:00
uz
ebd679dd57 New functions PushSearchPath and PopSearchPath.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4671 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-28 11:22:44 +00:00
uz
64b597017a Fix the check for constant static local data, which was wrong when the data
was an array. It should go into RODATA, not DATA.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4669 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-27 19:47:13 +00:00
uz
05f7296369 Restructured search path handling.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4662 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-09 10:54:15 +00:00
uz
d95bb2e600 New option --bin-include-dir which is passed to the assembler.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4661 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-04 20:19:54 +00:00
uz
d54ca88743 Added a new option --dep-target to the compiler. This option allows to set the
target in the generated dependency file. The cl65 utility will use this option
to override the depdendency target, if actual object files are to be generated
from C input. So the generated dependency will not have the intermediate .s
file as target, but the final .o file, which allows to use the dependency
files without further processing.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4660 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-02 09:56:40 +00:00
uz
e61bf7094c Restructured the code for better reada- and maintainability.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4659 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-02 09:32:42 +00:00
uz
0695f39611 Added --create-dep and --create-full-dep to the cl65 utility.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4655 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-01 14:47:09 +00:00
uz
39108e20b5 Rewrote the search path routines to use collections internally.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4654 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-01 14:44:14 +00:00
uz
3fd52eb57f Added dependency file generation to the assembler. This includes two new
options, --create-dep and --create-full-dep. The latter will include files
that are passed via debug info to the assembler.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4653 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-01 11:59:55 +00:00
uz
96cf7f6271 Changed generation of makefile dependencies:
* There are now two options, --create-dep and --create-full-dep. One
    will add system includes, the other not.
  * Both options require a file name. This is an incompatible change(!)
    but has the advantage that the user is in control of extension and
    path of the generated file.
  * Output will always include a phony target for the input files. This
    may not work with all make programs.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4652 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-05-01 09:42:12 +00:00
uz
54740da820 More preparations for an extension of the calling conventions.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4650 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-29 20:30:49 +00:00
uz
77bfcc1ff0 Change the OptStackOps function so that it adjusts the instruction pointer
after changing code. Without this correction, the insn pointer may be wrong
after one of the subfunctions has changed code, which may cause a valid
sequence not to be detected. This change (when proven good) may also go into
2.13.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4649 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-25 21:51:59 +00:00
uz
2e6d218801 Remember the type of the input file. This may be used later to create more
variants of dependency files.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4645 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-22 19:40:50 +00:00
uz
bfd8f4e108 Implemented new .PUSHCPU and .POPCPU commands.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4644 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-18 18:47:16 +00:00
uz
922cbf08eb Added several functions to the intstack module.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4643 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-18 18:40:59 +00:00
uz
48c647b6bd Added while loop inversion.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4642 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-17 15:19:35 +00:00
uz
6b3e515573 Reverted part of change 4108 that prevented an optimization step to find
proper replacements. Some other rearrangements for slightly better code.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4640 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-10 11:23:39 +00:00
uz
4299e2db05 Added the cdecl keyword
git-svn-id: svn://svn.cc65.org/cc65/trunk@4639 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-04-09 19:47:33 +00:00
uz
ca9170cd20 More strcmp inlining.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4638 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-23 21:47:12 +00:00
uz
8e26fef105 Fixed the size of the RAM segment for the CBM610. The routine that does
cross-bank calls is located at $FECB and the stack grows downwards from 
there.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4637 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-23 19:40:48 +00:00
uz
e192edd021 Inline some occurances of strcmp.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4635 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-22 22:28:45 +00:00
uz
3d06780f6d For the CBM 510, the stack is not part of RAM. And, because of the cross-bacnk
routine, it is smaller than the number used before.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4634 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-21 21:39:44 +00:00
ol.sc
4b689107a4 - No more HEAP segment
- RAM reduced by __STACKSIZE__
- Unified formatting

git-svn-id: svn://svn.cc65.org/cc65/trunk@4633 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-21 17:10:17 +00:00
uz
0e60a60c3e Fixed an optimizer problem.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4632 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-21 14:08:46 +00:00
uz
1a4e2edede Reenable compile time evaluation of strlen for string literals.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4631 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-20 18:51:59 +00:00
uz
15f95d7623 Changed the size of available RAM so that the last used address is $7FFF.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4630 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-20 18:08:27 +00:00
uz
7450c25404 Allow escape sequences prefixed by '%' in strings. '%%' denotes a single
percent sign, %O is the name of the output file.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4628 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-20 17:48:15 +00:00
uz
b759e753e4 Changed the type of CfgSVal to a string buffer and removed the upper limit for
the length.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4627 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-20 17:23:51 +00:00
uz
af27ae6d79 Fixed two issues with macros:
* A newline between the macro name and the argument list of a function like
  macro was not accepted.
* An unterminated macro argument list was not always detected.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4621 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-03-14 17:46:02 +00:00
uz
61b69316c5 Added builtin .min() and .max() pseudo functions to the assembler.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4583 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-02-11 18:54:08 +00:00
uz
5477e62e3a Fixed open mode for second try in DoIncBin (Greg King).
git-svn-id: svn://svn.cc65.org/cc65/trunk@4563 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-01-31 20:49:40 +00:00
uz
79820fe4ec Added a separate include search path for binary includes. These aren't
searched any longer in the standard include path.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4558 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-01-25 20:33:01 +00:00
uz
5175f95341 Fixed a problem in the optimizer function that rewrites ops that use the
stack. Useless instructions (duplicate loads or transfers) within the sequence
are left intact and may cause problems because the interfere with the
replacement code. A run of OptRemoveUnusedLoads and friends should fix the
problem, bit this step may be disabled, so the routine has to check for this
condition and avoid it (by not doing the replacement).


git-svn-id: svn://svn.cc65.org/cc65/trunk@4551 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-01-20 19:47:44 +00:00
ol.sc
3d5d3ef76a Define HEADER memory area for the EXEHDR segment for consistency reasons with the other targets with an EXEHDR segment (apple2[enh], atari, lynx, cbm[5|6]10).
git-svn-id: svn://svn.cc65.org/cc65/trunk@4550 b7a2c559-68d2-44c3-8de9-860c34a00d81
2010-01-17 21:47:03 +00:00
uz
41f7757204 Ignore unknown preprocessor directives in an #if group that is excluded.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4534 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-30 11:20:09 +00:00
uz
60bc009991 * Moved the BASIC stub that calls the compiled program into it's own segment
named EXEHDR.
* Renamed BASICHDR to EXEHDR for the PET-II machines.
* Moved the call to CHRCH in front of the code that saves the zero page, since
  open files are sometimes remembered in the zero page, so we need to close
  them before we grab a copy.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4507 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-09 12:42:24 +00:00
uz
1fae13274e An assignment for the ZPSAVE segment was missing in the linker config for the
32K memory config of the VIC20. Hint from Robert Hurst.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4505 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-08 20:41:43 +00:00
uz
7d94dc50a1 New option and #pragma --local-strings that causes string literals to be
output immediately.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4504 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-08 20:35:24 +00:00
uz
a467095216 Relax header checking somewhat, so second source fonts are accepted.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4502 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-06 12:24:59 +00:00
uz
3976746735 Rewrote literal handling. Literals are now saved together with other function
data, and at the end of compilation merged if possible. Literals for unused
functions are removed together with the function.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4501 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-05 22:39:45 +00:00
uz
9b7c16ec4c Fixed problem with last change. Wide string constants were not handled
correctly.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4500 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-05 15:14:11 +00:00
uz
50ff6d0768 Create one literal pool per function, so that literal pool data is removed
together with a function, if it is not used. Literal storage can now be
controlled by #pragma writable-strings on a per function basis.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4499 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-04 14:12:25 +00:00
uz
1f90ec93a0 Move global segment creation to a better place in source.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4498 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-04 13:04:40 +00:00
uz
ff4eeebec2 Makefile patch contributed by Greg King:
I added the "MAKEOPTS=" to the top-level "gcc.mak" that he wants, and I
changed the tool source tree's top-level make-file so that it supports
parallel building.  (I added a rule that builds the common library before
building anything else.)


git-svn-id: svn://svn.cc65.org/cc65/trunk@4497 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-12-02 15:21:22 +00:00
uz
ce931b85be In case of parse errors for structs, don't just set the type of the result to
"int", return a valid lvalue instead.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4483 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-24 23:02:58 +00:00
uz
3fb0c660dc Fix a problem with error handling: The E_HAVE_MARKS flag must not be removed
from an expression in case of an error.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4482 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-24 22:56:56 +00:00
uz
327c989d8b Support for the HuC6280 (CPU of the PC Engine) contributed by Tobias Gunkel.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4481 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-24 20:04:27 +00:00
uz
884aff9191 Prepare for reading keypresses from the X server.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4461 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-12 11:19:44 +00:00
uz
6078953baa Do not use a separate byte for an END opcode, instead place the bit into the
previous opcode. This saves one byte per character with the exception of
characters without a vector representation, where we loose one byte, because
we need to add a dummy vector just to apply our END bit.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4433 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-02 22:31:32 +00:00
uz
0787e45aee Added macros for jumps after unsigned compares to the "generic" macro package.
Removed BGE/BLT as native instructions for the 65816.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4427 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-02 16:26:46 +00:00
uz
23c96f81c0 Some small format changes. Output name is input name + '.tch'.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4413 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-11-01 21:33:28 +00:00
uz
784c709f97 Wrote the actual conversion. Still untested.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4411 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-31 15:42:59 +00:00
uz
b8b3dcce74 Fixed a problem introduced with the last change.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4410 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-31 14:01:22 +00:00
uz
00a1121d8c Fixed a problem with OptJumpTarget3. In a loop over all elements of a
collection that may remove something from the collection, we may not use an
upcounting loop.
                


git-svn-id: svn://svn.cc65.org/cc65/trunk@4409 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-31 10:36:59 +00:00
uz
b86682d29d File reading, verification and comments.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4408 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-30 22:34:08 +00:00
uz
e60544452e Added the chrcvt vector font converter to the top level makefile.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4406 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-30 21:35:25 +00:00
uz
3a9d29d5e2 Created the skeleton of the vector font converter.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4405 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-30 21:34:40 +00:00
uz
07e629a342 Allow fully scoped labels and constants instead of normal ones. This breaks
the barrier between scopes: It is now possible to introduce symbols into a
foreign scope, provided that it's name is known.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4397 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-29 20:30:41 +00:00
uz
c437afd62b Added another optimization step.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4391 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-26 10:17:53 +00:00
uz
7687489a08 Fixed a bug in the last change. For variables that have no initializer, no
storage was allocated if -Cl (static locals) was in effect.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4390 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-26 10:17:17 +00:00
uz
f4b4a812ed Removed an unused table.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4389 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-24 19:37:57 +00:00
uz
bd45df7cad Rearranged/duplicated optimization steps to generate better code in a few
cases.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4387 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-23 10:03:46 +00:00
uz
814be2524b Restructured parts of locals.c. This will also fix a problem where arrays with
unspecified size but an initializer would cause an error when -Cl (static
locals) was in effect.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4385 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-23 09:22:17 +00:00
uz
96b46beee0 Fixed a problem with bit-fields: Values spanning more than a byte must always
be loaded as an int. This was not the case if the expression rhs was a char.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4382 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-20 08:21:12 +00:00
uz
4372d111a2 The CodeEntry buffer array was one entry to small.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4381 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 19:37:28 +00:00
uz
3b079c0947 Added another optimization step.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4380 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 19:12:50 +00:00
uz
f4acd3eb4f Added a makefile for cc65 for testing purposes.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4379 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 18:02:40 +00:00
uz
388ccf4c4b Added missing definitions, fixed copy&paste errors. Formatting.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4378 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 18:00:25 +00:00
uz
1ccb6f916d Remove __CC65__ since it doesn't support all attributes gcc does.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4377 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 17:55:49 +00:00
uz
399c37273d Mark an unsed parameter as unused. __attribute__ also supported by cc65.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4376 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 17:25:43 +00:00
uz
548336a7bd Renamed attribute handling functions. Added SymHasAttr().
git-svn-id: svn://svn.cc65.org/cc65/trunk@4375 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-19 10:19:26 +00:00
uz
a5a9700d19 Changed handling of attributes to a more generic form (it's allowed in each
declaration now) and added a new attribute "unused" to flag unused parameters,
variables or functions that shouldn't be warned about.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4373 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-18 21:42:59 +00:00
uz
5a00b38aab Fixed the existing but unused attribute parsing code. Added
__attribute__((noexit)) that may be used to mark functions that won't return.
Added this attribute to the exit() function in stdlib.h.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4372 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-18 18:31:02 +00:00
uz
0ce362a69b Some cleanup in the code generator. Added a g_drop function. g_drop and
g_space can now handle sizes > 255 bytes.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4370 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-15 21:08:03 +00:00
uz
1f92d6bfa2 Warn when structs are passed by value to a function.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4369 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-15 19:18:34 +00:00
uz
1f489fd9e1 Extend handling for "long branch to RTS" to "long branch to jump leaving
function".


git-svn-id: svn://svn.cc65.org/cc65/trunk@4368 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-15 11:11:20 +00:00
uz
635fae97fb If a conditional branch as an unconditional jump as target, that doesn't jump
to a function-internal label, don't replace the jump target with the final
one, because this has no advantages and makes the code larger.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4367 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-15 10:21:50 +00:00
uz
d9753c2eb7 Allow switching warnings about unused pragmas on or off.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4366 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-14 13:04:38 +00:00
uz
62fdd55fee Fixed a problem with SB_GetSym.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4365 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-14 13:03:47 +00:00
uz
ed2767e65f Changed names of the pragmas to be identical to the corresponding command line
options. This should make use easier. The old names of the pragmas are still
available but will cause warnings.


git-svn-id: svn://svn.cc65.org/cc65/trunk@4364 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-14 12:55:15 +00:00
uz
869a1369c4 Fixed an error in the SB_SkipMultiple macro.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4363 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-14 10:04:20 +00:00
uz
a1fb355a9a Rewrote most of the #pragma parsing code. I'm still not satisfied, but at
least, it's a bit better than before. #pragma warn (...) is now used to switch
single warnings instead of a global on/off switch.



git-svn-id: svn://svn.cc65.org/cc65/trunk@4362 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-13 21:24:32 +00:00
uz
583b9f8fcc Removed an unused function.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4361 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-11 15:10:55 +00:00
uz
e623c87d63 New function SB_SkipMultiple().
git-svn-id: svn://svn.cc65.org/cc65/trunk@4358 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-10 20:51:52 +00:00
uz
f2d1ea10d9 Added a simulated console (memory mapped screen device, inpout device will
follow).


git-svn-id: svn://svn.cc65.org/cc65/trunk@4351 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-08 18:33:50 +00:00
uz
1122ddb05a Fixed a bug: Attribute numbers were not correctly read.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4350 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-08 17:54:23 +00:00
uz
07c25db768 Added the __STDC_HOSTED__ macro.
git-svn-id: svn://svn.cc65.org/cc65/trunk@4349 b7a2c559-68d2-44c3-8de9-860c34a00d81
2009-10-08 15:00:25 +00:00