florian
6ed96fd8ad
* fixed compilation
...
git-svn-id: trunk@3887 -
2006-06-17 21:33:08 +00:00
florian
6ffe481799
* fixed sse addition if operands were swapped and in float registers
...
git-svn-id: trunk@3885 -
2006-06-17 19:43:15 +00:00
yury
550626ef34
- Removed need of assembler startup files for wince. Now compiler directly creates .pdata section needed for arm-wince exception handling.
...
git-svn-id: trunk@3764 -
2006-06-02 08:36:25 +00:00
florian
307315cef6
* movq is also a pure move
...
git-svn-id: trunk@3588 -
2006-05-19 23:52:10 +00:00
florian
0378f8c162
+ more reg/reg reg/mem only instructions
...
git-svn-id: trunk@3587 -
2006-05-19 23:51:13 +00:00
daniel
3048a98a6f
* Fix and activate internal backtrace routines
...
git-svn-id: trunk@3524 -
2006-05-14 13:04:03 +00:00
florian
ac4bde88ac
* fix 3 operand instructions with third operand being a constant
...
git-svn-id: trunk@3502 -
2006-05-13 19:51:32 +00:00
florian
23e67ee289
+ intel assembler reader for x86-64
...
git-svn-id: trunk@3411 -
2006-05-01 19:56:00 +00:00
peter
c861491323
* fix typecast
...
git-svn-id: trunk@3376 -
2006-04-29 22:43:36 +00:00
florian
98d428ff30
* fixed coding style
...
git-svn-id: trunk@3338 -
2006-04-26 18:13:14 +00:00
peter
22ada6da0d
* initialize output of process_ea
...
git-svn-id: trunk@3323 -
2006-04-23 19:19:49 +00:00
peter
0a50dd1029
* give IE if fpu stack counter becomes < 0
...
git-svn-id: trunk@3294 -
2006-04-20 11:15:54 +00:00
florian
af4d5c898a
+ stack touching for win64
...
git-svn-id: trunk@3252 -
2006-04-17 19:00:53 +00:00
florian
1e52f348c0
* fixed load_fpu_location for xmm locations
...
git-svn-id: trunk@3248 -
2006-04-17 16:03:55 +00:00
florian
f702b481f0
* fixed assembling of (%rbp)
...
git-svn-id: trunk@3239 -
2006-04-17 07:58:37 +00:00
florian
2d3d4a66f6
* keep stack aligned to 16 byte borders on winx64
...
git-svn-id: trunk@3212 -
2006-04-15 16:48:28 +00:00
florian
a8c2419d8a
* fixed left_and_right_must_be_fpureg
...
git-svn-id: trunk@3129 -
2006-04-02 20:36:20 +00:00
florian
1c9da313d9
* 64 bit movnti
...
git-svn-id: trunk@3091 -
2006-03-30 18:12:33 +00:00
peter
583668896a
* rex is x86_64 only
...
git-svn-id: trunk@3078 -
2006-03-30 06:21:38 +00:00
florian
8ba4fcaad9
* fixed handling of code 214
...
git-svn-id: trunk@3075 -
2006-03-29 20:24:36 +00:00
florian
b215196734
* fixed cto
...
git-svn-id: trunk@3074 -
2006-03-29 18:25:48 +00:00
florian
2cfd698273
* sib is required for r12 based addressing too
...
git-svn-id: trunk@3069 -
2006-03-28 21:15:00 +00:00
florian
7a34d58a15
* encode new 8 bit registers correctly
...
git-svn-id: trunk@3064 -
2006-03-27 20:41:28 +00:00
florian
e1147755df
* fixed cmp
...
* correct sign extension for 8 byte constants
git-svn-id: trunk@3063 -
2006-03-27 20:24:57 +00:00
peter
0ec2921bbe
* split newasmsymbol to refasmsymbol and defineasmsymbol
...
git-svn-id: trunk@3057 -
2006-03-27 11:45:18 +00:00
florian
8a71767125
* movsql fixed in x86_64 assembler writer
...
git-svn-id: trunk@3048 -
2006-03-26 20:48:05 +00:00
florian
73e22f1919
* one byte inc/dec aren't allowed for x86_64
...
git-svn-id: trunk@3047 -
2006-03-26 20:27:02 +00:00
peter
870be04a3f
* use dwarf_reg()
...
git-svn-id: trunk@3046 -
2006-03-26 20:15:32 +00:00
florian
56dc874476
* rsp based addressing fixed
...
git-svn-id: trunk@3045 -
2006-03-26 20:14:17 +00:00
florian
87da67129c
* rtl compilation with x86_64 binary writer fixed
...
git-svn-id: trunk@3042 -
2006-03-26 18:32:15 +00:00
florian
5d243f665a
* fixed <instr> reg,reg with regs>=r8
...
* fixed section naming
* fixed relocations
git-svn-id: trunk@3041 -
2006-03-26 17:54:02 +00:00
florian
42fab68bc8
* fixed disp32 and rip relative addressing
...
git-svn-id: trunk@3039 -
2006-03-26 13:38:21 +00:00
florian
4c9a08b12b
* more x86_64 assembler support, rtl compilation works, executables don't work yet
...
git-svn-id: trunk@3038 -
2006-03-26 09:38:05 +00:00
florian
5519158dff
+ no rex.w prefix support
...
git-svn-id: trunk@3037 -
2006-03-25 19:45:09 +00:00
florian
ec768f88ae
+ improved x86-64 assembler
...
git-svn-id: trunk@2983 -
2006-03-19 22:24:01 +00:00
peter
37c81492ad
Merged revisions 2827,2831,2837,2932-2980 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
r2827 (peter)
* smartlinking of resourcestrings
r2831 (peter)
* process_ea 64bit fixes
r2837 (peter)
* linker script
git-svn-id: trunk@2981 -
2006-03-19 22:12:52 +00:00
Jonas Maebe
6ad5dff9e8
* fixed loading of -0.0
...
git-svn-id: trunk@2976 -
2006-03-19 20:29:15 +00:00
peter
b7fe6797bf
Merged revisions 2921-2922,2925 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2921 | peter | 2006-03-15 08:35:00 +0100 (Wed, 15 Mar 2006) | 2 lines
* pass ObjectWriter to ObjectOuput
........
r2922 | peter | 2006-03-15 12:40:30 +0100 (Wed, 15 Mar 2006) | 2 lines
* refactor asmdata
........
r2925 | peter | 2006-03-15 16:09:39 +0100 (Wed, 15 Mar 2006) | 3 lines
* add cfi to asmdata
* move asmlist, asmcfi, asmdata to own unit
........
git-svn-id: trunk@2932 -
2006-03-16 08:52:22 +00:00
peter
eb725d4e44
Merged revisions 2908,2911,2913-2917 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2908 | peter | 2006-03-13 13:35:48 +0100 (Mon, 13 Mar 2006) | 2 lines
* merge trunk upto r2907
........
r2911 | peter | 2006-03-13 18:08:00 +0100 (Mon, 13 Mar 2006) | 2 lines
* rename values to make room for operand size codes
........
........
........
r2915 | peter | 2006-03-14 13:51:35 +0100 (Tue, 14 Mar 2006) | 2 lines
* check aktcputype
........
r2916 | peter | 2006-03-14 15:06:32 +0100 (Tue, 14 Mar 2006) | 3 lines
* merge 300 opcodes
* more 64bit versions of opcodes
........
r2917 | peter | 2006-03-14 17:34:03 +0100 (Tue, 14 Mar 2006) | 3 lines
* x86_64 tables
* convert movq with normal registers to mov
........
git-svn-id: trunk@2931 -
2006-03-16 08:09:28 +00:00
Vincent Snijders
7dfd96b59c
* fixed another typo
...
git-svn-id: trunk@2927 -
2006-03-15 20:42:14 +00:00
Vincent Snijders
594861974d
* fixed typo
...
git-svn-id: trunk@2926 -
2006-03-15 20:28:02 +00:00
peter
588cccb3ca
* remove some obsolete i386 specific code
...
* use a_optimize_const to remove useless opcodes
git-svn-id: trunk@2910 -
2006-03-13 16:37:08 +00:00
peter
d8dc5679e3
* aktcputype and aktoptimizecputype was missing in the previous optimization commits
...
git-svn-id: trunk@2907 -
2006-03-13 12:29:56 +00:00
peter
94d9a89774
* only set OT_SHORT if the source and target are in the same objsection
...
git-svn-id: trunk@2905 -
2006-03-13 12:28:22 +00:00
peter
17bc033747
Merged revisions 2791-2793,2798-2800,2806-2825,2829-2830,2833,2839,2898 via svnmerge from
...
http://svn.freepascal.org/svn/fpc/branches/linker/compiler
........
r2791 | peter | 2006-03-06 14:57:20 +0100 (Mon, 06 Mar 2006) | 3 lines
* disable internal linker if -s is used
* enable section smartlink by default for internal linker
........
r2792 | peter | 2006-03-06 14:58:23 +0100 (Mon, 06 Mar 2006) | 2 lines
* support long sectionnames
........
r2793 | peter | 2006-03-06 15:04:12 +0100 (Mon, 06 Mar 2006) | 2 lines
* register symbols in section also when reading .o files
........
r2798 | peter | 2006-03-07 10:08:07 +0100 (Tue, 07 Mar 2006) | 2 lines
* symbolrefs need to be loaded from relocations when loading a .o
........
r2799 | peter | 2006-03-07 16:17:52 +0100 (Tue, 07 Mar 2006) | 3 lines
* remove unreferenced sections
* set stacksize in peopthaeder
........
r2800 | peter | 2006-03-07 17:02:46 +0100 (Tue, 07 Mar 2006) | 2 lines
* objsection.fullname added
........
........
r2807 | peter | 2006-03-08 08:18:04 +0100 (Wed, 08 Mar 2006) | 2 lines
* powerpc64 fixes
........
r2808 | peter | 2006-03-08 08:35:53 +0100 (Wed, 08 Mar 2006) | 2 lines
* register x86_64_pecoff
........
r2809 | peter | 2006-03-08 11:26:38 +0100 (Wed, 08 Mar 2006) | 2 lines
* optimize and cleanup matches()
........
r2810 | peter | 2006-03-08 12:25:28 +0100 (Wed, 08 Mar 2006) | 2 lines
* small tweak to readdata to copy values direct without calling move()
........
r2811 | peter | 2006-03-08 15:55:21 +0100 (Wed, 08 Mar 2006) | 2 lines
* compile fix
........
........
........
........
........
........
r2817 | peter | 2006-03-09 14:20:52 +0100 (Thu, 09 Mar 2006) | 2 lines
* more readable with long secnames
........
........
........
........
........
........
........
........
r2825 | peter | 2006-03-10 09:52:05 +0100 (Fri, 10 Mar 2006) | 2 lines
* don't initialize/finalize external variables
........
r2829 | peter | 2006-03-10 10:58:08 +0100 (Fri, 10 Mar 2006) | 2 lines
* merge 64bit assembler
........
r2830 | peter | 2006-03-10 12:25:08 +0100 (Fri, 10 Mar 2006) | 2 lines
* TElfAssembler rename
........
r2833 | peter | 2006-03-10 15:22:27 +0100 (Fri, 10 Mar 2006) | 3 lines
* support & prefix to force identifier parsing, used to access fields that
have the names of a register
........
r2839 | peter | 2006-03-10 19:37:11 +0100 (Fri, 10 Mar 2006) | 2 lines
* merge stabs section flags
........
r2898 | peter | 2006-03-12 23:18:18 +0100 (Sun, 12 Mar 2006) | 2 lines
* reorder instructions for better first match
........
git-svn-id: trunk@2902 -
2006-03-13 09:29:57 +00:00
peter
b6e35a200e
* rewrite of optimizer options
...
git-svn-id: trunk@2901 -
2006-03-13 09:05:50 +00:00
Jonas Maebe
9125d0c189
* also align esp for all procedures/functions declared "assembler",
...
since they may do a call. If you don't want that to happen, use
the nostackframe directive (i386-darwin only)
git-svn-id: trunk@2896 -
2006-03-12 21:20:29 +00:00
Jonas Maebe
435aee2398
* fixed g_copyvaluepara_openarray/g_releasevaluepara_openarray for
...
use_fixed_stack (use generic code)
git-svn-id: trunk@2895 -
2006-03-12 21:04:59 +00:00
Jonas Maebe
e7112c6636
* ignore po_interrupt for i386-darwin since it messes up stack alignment
...
git-svn-id: trunk@2857 -
2006-03-11 14:30:02 +00:00
Jonas Maebe
9de2847865
+ support for passing parameters via pre-allocated stack space on i386
...
(override/adjust cgutils.use_fixed_stack to change conditions where
this is done, currently only activated for darwin-i386)
* make sure the stack is always aligned to 16 bytes on darwin-i386
git-svn-id: trunk@2840 -
2006-03-10 19:59:44 +00:00
florian
5ece7cbc2f
* first part of x86-64 assembler
...
git-svn-id: trunk@2824 -
2006-03-09 22:05:16 +00:00
Jonas Maebe
d7b4ac73cf
+ darwin/x86 support for a_call_name
...
git-svn-id: trunk@2819 -
2006-03-09 15:02:55 +00:00
Jonas Maebe
ba6f1e4990
* factered WriteInstruction out of TGNUAssembler into its own class
...
* put Apple-specific GNU assembler stuff in its own class
+ darwin/x86 support to the assembler writer
git-svn-id: trunk@2818 -
2006-03-09 14:59:04 +00:00
Jonas Maebe
ab5f5ca15e
* fixed ppc compilation
...
git-svn-id: trunk@2778 -
2006-03-05 22:06:44 +00:00
peter
785550d7e3
Merged revisions 2669,2673,2677,2683,2696,2699-2702,2704,2708,2712-2715,2718,2722-2723,2728-2730,2740,2769 via svnmerge from
...
svn+ssh://peter@www.freepascal.org/FPC/svn/fpc/branches/linker/compiler
........
r2669 | peter | 2006-02-23 09:31:21 +0100 (Thu, 23 Feb 2006) | 2 lines
* add compiler dir
........
r2673 | peter | 2006-02-23 17:08:56 +0100 (Thu, 23 Feb 2006) | 2 lines
* enabled more code
........
r2677 | peter | 2006-02-24 17:46:29 +0100 (Fri, 24 Feb 2006) | 2 lines
* pe stub and headers
........
r2683 | peter | 2006-02-25 23:13:24 +0100 (Sat, 25 Feb 2006) | 2 lines
* section options cleanup
........
r2696 | peter | 2006-02-26 20:27:41 +0100 (Sun, 26 Feb 2006) | 2 lines
* fixed typecasts
........
r2699 | peter | 2006-02-26 23:04:32 +0100 (Sun, 26 Feb 2006) | 2 lines
* simple linking works
........
r2700 | peter | 2006-02-27 09:44:50 +0100 (Mon, 27 Feb 2006) | 2 lines
* internal linker script
........
r2701 | peter | 2006-02-27 12:05:12 +0100 (Mon, 27 Feb 2006) | 2 lines
* make elf working again
........
r2702 | peter | 2006-02-27 14:04:43 +0100 (Mon, 27 Feb 2006) | 3 lines
* disable dwarf for smartlinking with .a
* fix section start in new .a file
........
r2704 | peter | 2006-02-27 18:30:43 +0100 (Mon, 27 Feb 2006) | 2 lines
* stab section fixes
........
r2708 | peter | 2006-02-28 19:29:17 +0100 (Tue, 28 Feb 2006) | 2 lines
* basic work to merge stabs sections
........
r2712 | peter | 2006-02-28 23:17:48 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload tmodules before linking
........
r2713 | peter | 2006-02-28 23:18:51 +0100 (Tue, 28 Feb 2006) | 2 lines
* fixed stabs linking
........
r2714 | peter | 2006-02-28 23:19:19 +0100 (Tue, 28 Feb 2006) | 2 lines
* show code and data size
........
r2715 | peter | 2006-02-28 23:25:35 +0100 (Tue, 28 Feb 2006) | 2 lines
* unload .stabs from objdata after it is merged
........
r2718 | peter | 2006-03-01 12:24:38 +0100 (Wed, 01 Mar 2006) | 3 lines
* memsize/datasize cleanup
* check for exports/resources when adding module to linker
........
r2722 | peter | 2006-03-03 09:12:20 +0100 (Fri, 03 Mar 2006) | 2 lines
* new TObjSymbol splitted from TAsmSymbol
........
r2723 | peter | 2006-03-03 14:08:55 +0100 (Fri, 03 Mar 2006) | 2 lines
* coff fixes after recent objsymbol changes
........
r2728 | peter | 2006-03-03 22:43:04 +0100 (Fri, 03 Mar 2006) | 2 lines
* fixed coff writer
........
r2729 | peter | 2006-03-04 01:10:32 +0100 (Sat, 04 Mar 2006) | 2 lines
* fix read-only opening
........
r2730 | peter | 2006-03-04 01:11:16 +0100 (Sat, 04 Mar 2006) | 2 lines
* Read edata from DLLs, basic work
........
r2740 | peter | 2006-03-04 21:13:43 +0100 (Sat, 04 Mar 2006) | 3 lines
* deletedef added
* don't remove defs from index when we are already clearing everything
........
r2769 | peter | 2006-03-05 21:42:33 +0100 (Sun, 05 Mar 2006) | 4 lines
* moved TObj classes to ogbase
* ObjSection.SymbolRefs and SymbolDefines list
* DLL importing
........
git-svn-id: trunk@2771 -
2006-03-05 21:10:37 +00:00
florian
de3ae0edd2
+ some new instructions added (VT, Geode etc), will regenerate later
...
git-svn-id: trunk@2680 -
2006-02-25 17:22:43 +00:00
Jonas Maebe
d2ba35df7e
* don't destroy edi when allocating the stack frame for win32
...
git-svn-id: trunk@2330 -
2006-01-23 10:54:48 +00:00
florian
b06643a1eb
* tai_const refactored
...
git-svn-id: trunk@2323 -
2006-01-22 12:58:38 +00:00
daniel
6b83af08ed
* Add --64 or --32 to as call to allow i386 make cycle using -Aas on
...
x64_64 systems.
git-svn-id: trunk@2320 -
2006-01-22 11:06:10 +00:00
florian
aa176601fb
+ added more dwarf sections
...
git-svn-id: trunk@2318 -
2006-01-21 21:22:47 +00:00
florian
f5d790f9b6
* i386 uses dwarf cfi info on linux/win32, so even when omitting the stack frame, trace backs in gdb are correct
...
git-svn-id: trunk@2316 -
2006-01-21 14:30:57 +00:00
tom_at_work
c887507adf
* generic compiler patches for ppc64/linux PIC code
...
git-svn-id: trunk@2222 -
2006-01-08 13:27:31 +00:00
florian
a3e3e7e8c5
* avoid esp to be freed
...
git-svn-id: trunk@2203 -
2006-01-07 14:32:09 +00:00
Jonas Maebe
7aa315c71a
* made some Tcpuregisterset parameters const to avoid useless copying
...
git-svn-id: trunk@2176 -
2006-01-05 10:10:25 +00:00
florian
f7d2c47f73
+ no stackframe is generated for i386 if possible
...
git-svn-id: trunk@2162 -
2006-01-04 19:19:06 +00:00
florian
61e3b70cfa
* cleaned up segmented thread variables
...
git-svn-id: trunk@2135 -
2006-01-03 12:49:29 +00:00
florian
bf5907dcdc
* more @GOT parsing
...
git-svn-id: trunk@2125 -
2006-01-02 18:30:18 +00:00
florian
56616ea3ad
+ parsing of @GOT on i386
...
git-svn-id: trunk@2117 -
2006-01-02 15:37:18 +00:00
florian
fb4557d71e
* first implementation of pic for i386
...
git-svn-id: trunk@2107 -
2006-01-01 20:14:48 +00:00
florian
d7a5ca107b
* fixed m68k compilation while sitting bored in the train
...
git-svn-id: trunk@1823 -
2005-11-25 23:08:46 +00:00
florian
f9b05b2cdf
* fixed rtl package building
...
git-svn-id: trunk@1763 -
2005-11-15 22:39:32 +00:00
florian
ef2966e2a6
+ more make_simple_ref added
...
git-svn-id: trunk@1761 -
2005-11-15 20:03:30 +00:00
florian
f8e6df62b6
+ added missing make_simple_ref
...
git-svn-id: trunk@1760 -
2005-11-15 19:43:37 +00:00
florian
99be25604b
* fixed address calculation when generating pic
...
git-svn-id: trunk@1759 -
2005-11-15 19:25:42 +00:00
florian
72d7597edc
+ implementation of lazy binding for linux
...
git-svn-id: trunk@1750 -
2005-11-14 22:28:12 +00:00
florian
2585309c04
* of course, we can't omit pic generation for local symbols
...
git-svn-id: trunk@1743 -
2005-11-13 21:36:38 +00:00
florian
ff6af1804b
* fixed loading of pic'ed symbols with offset
...
* symbols declared AB_COMMON or AB_LOCAL need no pic
git-svn-id: trunk@1739 -
2005-11-13 21:05:42 +00:00
florian
bc7fab1aeb
+ plt support for x86_64
...
git-svn-id: trunk@1578 -
2005-10-23 14:47:09 +00:00
florian
1b97e2cffd
+ added missing make_simple_ref
...
git-svn-id: trunk@1572 -
2005-10-23 13:28:43 +00:00
florian
19e97e4da2
+ use sse for sqrt if possible
...
* same optimization for sqrt as for sqr
git-svn-id: trunk@1266 -
2005-10-03 12:47:05 +00:00
florian
6371333361
+ sqr uses sse on x86 if possible
...
* the result type of sqr is equal to the argument in case of usual floats
git-svn-id: trunk@1265 -
2005-10-03 12:31:31 +00:00
peter
ec4d287fd8
* aktoutputformat removed, add new paraXX vars for target
...
assembler and debuginfo and use these vars to override
the defaults for the target after the parameters are read
* remove not-maintained and tested gdb code
git-svn-id: trunk@1201 -
2005-09-25 21:17:37 +00:00
peter
82faa95118
* lineinfo fixed for binary writer
...
* add tai_directive to replace old tai_direct calls
in powerpc
git-svn-id: trunk@1139 -
2005-09-19 11:47:30 +00:00
peter
a3ab2053c9
* support multiple asmlabel types, renamed getlabel to
...
getjumplabel and added type para to getlabel for specific types
* moved lineinfo generation from assemble and aggas to dbgstabs
git-svn-id: trunk@1120 -
2005-09-18 21:16:10 +00:00
peter
fdc4925fcd
* basic framework for debuginfo class added
...
git-svn-id: trunk@1084 -
2005-09-15 08:34:51 +00:00
peter
c3727c29b2
* rename al_code to al_procedures, al_bss/al_data to al_globals
...
* more work for section smartlinking
git-svn-id: trunk@1083 -
2005-09-15 06:51:12 +00:00
florian
6ad3930a5d
* fixed broken powerpc compilation
...
* fixed imm24 constant matching on the arm
git-svn-id: trunk@1074 -
2005-09-11 16:13:55 +00:00
michael
3392189fb0
+ Implemented resources for ELF
...
git-svn-id: trunk@956 -
2005-08-28 09:35:35 +00:00
peter
05a628447f
* put typedconsts in own asmlist to prevent mixing
...
array and string data
* added al_rodata
* renamed tasmlist enum names to include al_ prefix
git-svn-id: trunk@899 -
2005-08-17 08:42:52 +00:00
florian
db68fb68b4
* updated to nasm 0.98.39 and insns.dat Rev. 1.46
...
git-svn-id: trunk@836 -
2005-08-09 20:15:58 +00:00
florian
a2fd319a20
* nx86cnv.pas must set ctypeconv node properly
...
* nx86cnv must be used
git-svn-id: trunk@787 -
2005-08-03 20:29:38 +00:00
florian
0e89afa607
* mm register spilling fixed
...
* no sse instruction can operate on memory
git-svn-id: trunk@762 -
2005-07-27 19:31:31 +00:00
florian
5df84f7222
* cvtxx2yy has now proper modification information
...
git-svn-id: trunk@757 -
2005-07-26 21:06:02 +00:00
florian
146efddbb7
* unified internal error
...
git-svn-id: trunk@756 -
2005-07-26 21:02:31 +00:00
daniel
22e89e1a42
* Proof of concept: Support threadvars using segment registers.
...
git-svn-id: trunk@740 -
2005-07-24 21:06:23 +00:00
daniel
d05f58b604
* Group asmlists into array to be able to add
...
some of them more comfortably.
* x86_64 compilation was broken, fixed.
* Sparc compilation was broken, fixed.
git-svn-id: trunk@731 -
2005-07-23 13:44:32 +00:00
daniel
338d4fbe99
* Fix two issues with internal assembler
...
git-svn-id: trunk@614 -
2005-07-10 18:10:21 +00:00
daniel
3f03e67e48
* Jcc now also doesn't need operand size
...
git-svn-id: trunk@612 -
2005-07-10 14:07:27 +00:00
daniel
51e0368aa5
* Improve automatic adding of operand size.
...
git-svn-id: trunk@611 -
2005-07-10 14:03:35 +00:00
daniel
86da715b86
* Internal assembler refuses instructions with constant operand but
...
without opsize.
* Opsize added for int,ret,push by assembler reader if not specified
by programmer.
git-svn-id: trunk@608 -
2005-07-10 09:55:59 +00:00
daniel
45bcc5b07a
* Add support for jmp $0011:$22334455 to Intel asm reader, request from
...
a user that is writing an operating system.
* Fix mkx86ins bug to interpret imm16:imm32 as a single operand
git-svn-id: trunk@606 -
2005-07-10 07:42:14 +00:00
florian
dac1050c11
+ mmx support revived, fixes bug #4106
...
git-svn-id: trunk@555 -
2005-07-02 11:53:51 +00:00
florian
aa1650fcdc
* case indention fixed
...
git-svn-id: trunk@417 -
2005-06-15 18:47:58 +00:00
florian
21ae782854
* fixed more xmm stuff
...
+ some win64 stuff added
git-svn-id: trunk@330 -
2005-06-09 20:50:17 +00:00
peter
4ace790492
* remove $Log
...
git-svn-id: trunk@231 -
2005-06-07 09:47:55 +00:00
florian
83209064f9
* getmmregister should test the mm register allocator for being assigned
...
git-svn-id: trunk@221 -
2005-06-05 15:32:24 +00:00
florian
c97714de9f
* renamed windows related units from win32 to win so it can contain ce and 64 bit stuff
...
git-svn-id: trunk@213 -
2005-06-05 13:42:35 +00:00
florian
a7446e4a7b
* changed operand information for multimedia xor operations
...
git-svn-id: trunk@204 -
2005-06-05 09:50:38 +00:00
florian
ebcb69478f
* fixed a lot of stuff for fpu/mm register variables
...
git-svn-id: trunk@199 -
2005-06-04 21:23:15 +00:00
florian
b0545a7a04
* first bunch of pic fixes
...
git-svn-id: trunk@76 -
2005-05-22 19:57:38 +00:00
fpc
790a4fe2d3
* log and id tags removed
...
git-svn-id: trunk@42 -
2005-05-21 09:42:41 +00:00
fpc
50778076c3
initial import
...
git-svn-id: trunk@1 -
2005-05-16 18:37:41 +00:00
florian
0811184277
+ pic code reading for the assembler readers
...
* loadaddr generates pic code as well now
2005-04-25 09:51:07 +00:00
florian
0cd81efba7
+ storing non-extended floats to memory generates now a fwait to get exceptions at the correct place
2005-03-13 17:15:26 +00:00
peter
4794119dd3
movzx,movsx don't support memory destinations
2005-03-10 00:27:04 +00:00
Jonas Maebe
ec959955bd
* fixed generic jumps optimizer and enabled it for ppc (the label table
...
was not being initialised -> getfinaldestination always failed, which
caused wrong optimizations in some cases)
* changed the inverse_cond into a function, because tasmcond is a record
on ppc
+ added a compare_conditions() function for the same reason
2005-02-26 01:26:59 +00:00
peter
e417e34496
* truncate log
2005-02-14 17:13:06 +00:00
florian
b1c8bfc478
+ x86_64 pic draft
2005-02-06 00:05:56 +00:00
florian
3835b9f13b
* fixed previous commit
2005-02-05 18:32:17 +00:00
florian
e94fe45846
* fixed dword -> qword/int64 type cast on x86_64
2005-02-05 18:08:48 +00:00
peter
79eac1c0b3
* fix [regpara] in intel assembler
2005-01-31 17:07:50 +00:00
peter
0991cb288d
* tf_pic_uses_got added
2005-01-25 18:48:15 +00:00
florian
cf55930118
* fixed loadaddr; I wonder how it ever worked
2005-01-08 16:00:55 +00:00
peter
1da9e24cee
* support sizeof()
...
* fix typecasting a constant like dword(4)
2004-12-22 17:09:55 +00:00
peter
ba3516dff6
* A_IMUL readwrite operand 1
2004-12-19 21:34:09 +00:00
florian
0037f4a199
* fixed operand size calculation for sse operands
...
+ all nasm assembler targets to help page output added
2004-12-12 10:50:34 +00:00
peter
4d8460ec2f
* float routines all use internproc and compilerproc helpers
2004-11-21 15:35:23 +00:00
peter
6458bd0ce1
* tvarsym splitted
2004-11-08 22:09:58 +00:00
florian
7b8c44bbce
* fixed open arrays when using register variables
2004-11-08 20:23:29 +00:00
peter
33494a7775
* fix possible range error
2004-11-03 10:11:13 +00:00
florian
c94553080b
+ added profiler call for x86_64
2004-11-02 20:50:54 +00:00
florian
bfce614370
* fixed -<sse register>
...
* information about simple moves for sse is given to the register allocator
2004-11-02 18:23:16 +00:00
peter
9b00c7832e
* support > 32bit accesses for x86_64
...
* rewrote array size checking to support 64bit
2004-11-01 23:30:11 +00:00
florian
852ca7e923
+ added sse instruction being not be able writing to a memory location
2004-11-01 17:30:17 +00:00
florian
1c569cbd08
* cvt*2* can't write to memory location, fixed
2004-11-01 15:42:47 +00:00
peter
f80f3fc0fa
* shortstr compare with empty string fixed
...
* removed special i386 code
2004-11-01 12:43:28 +00:00
peter
882cc700fb
* fixed uninited var in a_load_reg_ref
2004-11-01 10:30:06 +00:00
peter
c95a859f0a
* generic tlocation
...
* move tlocation to cgutils
2004-10-31 21:45:02 +00:00
peter
d19663f3a8
* save standard registers moved to tcgobj
2004-10-25 15:36:47 +00:00
peter
30d25d1d2b
* -Or fixes
2004-10-24 20:10:08 +00:00
peter
adb6f59eef
* small regvar fixes
...
* loadref parameter removed from concatcopy,incrrefcount,etc
2004-10-24 11:44:28 +00:00
mazen
ad191865e3
- remove $IFDEF DELPHI and related code
...
- remove $IFDEF FPCPROCVAR and related code
2004-10-15 09:22:23 +00:00
peter
c853d10cc2
* optimized spilling writing when the reg operand can be
...
replaced by reference
2004-10-10 16:30:26 +00:00
Jonas Maebe
2b030488b2
* regvar fixes from Peter
2004-10-06 19:26:50 +00:00
peter
f5471aef6e
* more spilling rewrites
2004-10-05 20:41:01 +00:00
peter
4bdae840a3
* reverted a minor move in the order of tinschange. The order
...
is required by the optimizer. Added also a remark
2004-10-04 21:11:24 +00:00
peter
f10c319261
* fix x86_64 compile
2004-10-04 20:55:04 +00:00
peter
ee3585f56f
* spilling code rewritten for x86. It now used the generic
...
spilling routines. Special x86 optimization still needs
to be added.
* Spilling fixed when both operands needed to be spilled
* Cleanup of spilling routine, do_spill_readwritten removed
2004-10-04 20:46:22 +00:00
florian
001292bf50
* made sqrt, sqr and abs internal for the sparc
2004-10-03 12:41:30 +00:00
peter
d604b703cb
* fix resizing of LOC_CREGISTER
2004-10-01 17:32:16 +00:00
Tomas Hajny
39d6a252e2
* explicit typecast added to avoid range check error
2004-09-30 19:32:19 +00:00
peter
30a4185153
* IE when expecting top_ref
2004-09-27 15:12:47 +00:00
peter
ec04a5a899
* handle 3 operand opcodes the same as 2 operand opcodes, the
...
third operand can only be a const or register CL, so it doesn't
affect spilling
* support shrd/shld that don't allow memory operands
2004-09-27 14:49:45 +00:00
florian
9d29de2b43
* fixed qword -> float conversion for x86
2004-09-26 09:12:50 +00:00
florian
9ebffe215b
* ie checking in spilling code improved
2004-09-26 07:15:07 +00:00
peter
65c3ba277c
* ungetregister is now only used for cpuregisters, renamed to
...
ungetcpuregister
* renamed (get|unget)explicitregister(s) to ..cpuregister
* removed location-release/reference_release
2004-09-25 14:23:54 +00:00
peter
33a834821f
* paraloc branch merged
2004-09-21 17:25:12 +00:00
florian
9cec4f847e
* fixed i386 compilation
2004-08-24 21:23:11 +00:00
Jonas Maebe
1dd5fc2b47
* changed first_sse_imreg to first_mm_imreg
2004-07-09 23:30:13 +00:00
peter
230105093d
* only enable dwarf for supported platforms
2004-06-29 21:00:08 +00:00
florian
8a9758c5e2
* logs truncated
2004-06-20 08:55:28 +00:00
florian
588e2c38bf
* dwarf branch merged
2004-06-16 20:07:06 +00:00
peter
5358278ca1
tai_regalloc.allocation changed to ratype to notify rgobj of register size changes
2004-05-22 23:34:27 +00:00
florian
39f5874341
* fixed qword -> <real> type cast
2004-05-10 20:57:45 +00:00
florian
c68ea95074
+ syscall directive support for MorphOS added
2004-04-28 15:19:03 +00:00
peter
ffb2785d2b
* A_MOVSL renamed to A_MOVSD
2004-04-09 14:36:05 +00:00
peter
406eb57a59
* MOVSL fixed
2004-04-08 16:49:42 +00:00
peter
38373b90d8
* check for top_ref instead of OT_MEMORY in needaddrprefix
2004-03-16 16:19:19 +00:00
michael
2f26f9ebb4
+ Fix from peter: fixes crash when inlining assembler code referencing local vars
2004-03-15 08:44:51 +00:00
peter
81f3ef9eca
* fixed concatcopy end bytes copy broken by 64bits patch
2004-03-11 19:35:05 +00:00
peter
970d84f86d
* mcount for linux fixed
...
* push/pop edx for mcount
2004-03-10 22:52:03 +00:00
florian
10e765329d
* fixed arm compilation
...
* cleaned up code generation for exported linux procedures
2004-03-06 20:35:19 +00:00
peter
b601863598
* top_none in create_ot, it is used in error situations
2004-03-04 17:25:38 +00:00
olle
4fecc1a56f
* big transformation of Tai_[const_]Symbol.Create[data]name*
2004-03-02 00:36:32 +00:00
florian
fabb9c33ac
* top_symbol killed
...
+ refaddr to treference added
+ refsymbol to treference added
* top_local stuff moved to an extra record to save memory
+ aint introduced
* tppufile.get/putint64/aint implemented
2004-02-27 10:21:04 +00:00
florian
01d16548f4
* fixed exception reason size for 64 bit systems
2004-02-22 18:27:21 +00:00
florian
0c35b6f3c4
* x86_64 uses generic concatcopy_valueopenarray for now
2004-02-22 16:48:09 +00:00
florian
ec8c16f871
* fixed
...
+ second_cmpfloatsse
2004-02-22 16:30:37 +00:00
florian
00dbe6655d
+ nx86set added
...
* some more x86-64 fixes
2004-02-22 12:04:04 +00:00
florian
6a392f766d
* OP_SH* code generation fixed
2004-02-21 19:46:37 +00:00
peter
fad88e2c7c
* allow mov to smaller sizes
2004-02-20 16:01:49 +00:00
peter
e6929a1a32
* more x86_64 parameter fixes
...
* tparalocation.lochigh is now used to indicate if registerhigh
is used and what the type is
2004-02-09 22:14:17 +00:00
peter
302040cc98
* reg_2_opsize replaced with reg_cgsize
2004-02-09 19:23:48 +00:00
Jonas Maebe
71202a141d
* taicpu.is_same_reg_move() now gets a regtype parameter so it only
...
removes moves of that particular register type. This is necessary so
we don't remove the live_start instruction of a register before it
has been processed
2004-02-08 23:10:21 +00:00
Jonas Maebe
9495f77117
- removed taicpu.is_reg_move because it's not used anymore
...
+ support tracking fpu register moves by rgobj for the ppc
2004-02-08 20:15:42 +00:00
daniel
46d241a666
* Take advantage of our new with statement optimization
2004-02-07 23:28:34 +00:00
florian
b780c7852c
+ improved floating point compares for x86-64 and Pentium2 and above
2004-02-06 16:44:42 +00:00
florian
3cb562e41f
* movz*q fixed
2004-02-06 14:37:48 +00:00
peter
221090453c
* x86_64 fixes for opsize
2004-02-05 18:28:37 +00:00
florian
465aa5851b
* several fixes to compile x86-64 system
2004-02-05 01:24:08 +00:00
peter
8c5b0f7d82
* first try to get cpupara working for x86_64
2004-02-04 22:01:13 +00:00
peter
8012731ede
*** empty log message ***
2004-02-04 19:22:27 +00:00
peter
ecfbbeffc3
* renamed xNNbittype to xNNinttype
...
* renamed registers32 to registersint
* replace some s32bit,u32bit with torddef([su]inttype).def.typ
2004-02-03 22:32:53 +00:00
peter
663fa583d9
* real fix for the short jmp out of range problem. Only forward jumps
...
needs an offset correction. For backward jumps both the address of
the symbol and the instruction are already updated so no correction
is required.
2004-02-03 21:21:23 +00:00
Jonas Maebe
4ba9c9ec67
- removed "mov reg,reg" optimization (those instructions are removed by
...
the register allocator, and may be necessary to indicate a register
may not be released before some point)
2004-02-03 19:46:48 +00:00
peter
7ca069476f
*** empty log message ***
2004-02-03 16:53:37 +00:00
florian
35b8e93073
* fixed more alignment issues
2004-01-30 13:42:03 +00:00
daniel
97e87aaebc
* reginfo now also only allocated during register allocation
...
* third round of gdb cleanups: kick out most of concatstabto
2004-01-26 16:12:27 +00:00
peter
d42f4af064
* give warning that DWORD is used as size in delphi mode when no
...
size was specified
2004-01-22 16:29:11 +00:00
florian
c37035a450
* common addnode code for x86-64 and i386
2004-01-20 12:59:36 +00:00
daniel
eaa7da9015
+ Cleanup of stabstring generation code. Cleaner, faster, and compiler
...
executable reduced by 50 kb,
2004-01-15 23:16:32 +00:00
florian
541955ad91
+ x86 instruction tables for x86-64 extended
2004-01-15 14:01:18 +00:00
florian
85bed883ce
* another bunch of x86-64 fixes mainly calling convention and
...
assembler reader related
2004-01-14 23:39:05 +00:00
peter
bb03be5004
* add release_openarrayvalue
2004-01-14 21:43:54 +00:00
peter
c34c9af5ce
* moved spilling code from taicpu to rg
2004-01-12 16:37:59 +00:00
peter
1c7e6fc380
* sparc updates
...
* use registertype in spill_register
2003-12-26 14:02:30 +00:00
florian
466744d413
* rtl and compiler compile with -Cfsse2
2003-12-26 13:47:41 +00:00
florian
ace2d682b0
* rtl and compiler compile with -Cfsse2
2003-12-26 13:19:16 +00:00
florian
3d8e1ab1fb
+ fpu<->mm register conversion
2003-12-26 00:32:21 +00:00
florian
dd2bb53aa5
+ possible sse2 unit usage for double calculations
...
* some sse2 assembler issues fixed
2003-12-25 12:01:35 +00:00
florian
06442fa677
+ $fputype directive support
...
+ single data type operations with sse unit
* fixed more x86-64 stuff
2003-12-25 01:07:09 +00:00
florian
6d3d97e845
* first fixes to compile the x86-64 system unit
2003-12-24 01:47:22 +00:00
florian
f84979f02d
* x86-64 compilation fixed
2003-12-24 00:33:10 +00:00
florian
7887af7c75
* rg unified for i386/x86-64
2003-12-24 00:12:57 +00:00
florian
9c476ba5f1
- delete parameter in cg64 methods removed
2003-12-24 00:10:02 +00:00
florian
d1116fb7f1
+ second_floataddsse implemented
2003-12-23 14:38:07 +00:00
florian
b52cee6639
* fixed ppc inlining stuff
...
* fixed wrong unit writing
+ added some sse stuff
2003-12-21 19:42:42 +00:00
daniel
d84b7d0743
* Some work to restore the MMX capabilities
2003-12-19 22:08:44 +00:00
peter
1367e342db
* reg allocations for imaginary register are now inserted just
...
before reg allocation
* tregister changed to enum to allow compile time check
* fixed several tregister-tsuperregister errors
2003-12-15 21:25:48 +00:00
daniel
7061f04355
* Register allocator speed optimizations
...
- Worklist no longer a ringbuffer
- No find operations are left
- Simplify now done in constant time
- unusedregs is now a Tsuperregisterworklist
- Microoptimizations
2003-12-14 20:24:28 +00:00
peter
bce5a1e252
* rg[tregistertype] added in tcg
2003-12-12 17:16:17 +00:00
florian
bfe452936f
* reverted Peter's alloctemp patch; hopefully properly
2003-12-06 01:15:22 +00:00
peter
64b0a0eadf
* delayed paraloc allocation, a_param_*() gets extra parameter
...
if it needs to allocate temp or real paralocation
* optimized/simplified int-real loading
2003-12-03 23:13:19 +00:00
Jonas Maebe
52980d5488
* fixed properties for MOVSB
2003-11-22 00:35:42 +00:00
florian
ebab97b3c8
+ first part of arm assembler reader
2003-11-17 23:23:47 +00:00
Jonas Maebe
16834b1854
* fixed XSTORE instruction info
2003-11-13 18:54:22 +00:00
florian
1af574ceca
* assembler readers OOPed
...
+ typed currency constants
+ typed 128 bit float constants if the CPU supports it
2003-11-12 16:05:39 +00:00
peter
517c5de6aa
* line numbering is now only done when #10 , #10#13 is really parsed
...
instead of when it is the next character
2003-11-10 19:08:32 +00:00
florian
08f4e363f6
* elesize of g_copyvaluepara_openarray changed
2003-11-05 23:06:03 +00:00
mazen
a2cee9b843
* using findreg_by_<name|number>_table directly to decrease heap overheading
2003-10-31 09:22:55 +00:00
peter
48ef24605a
* support scalefactor for opr_local
...
* support reference with opr_local set, fixes tw2631
2003-10-30 19:59:00 +00:00
marco
706118fcb9
* profiling fix
2003-10-30 18:53:53 +00:00
peter
0bc3453035
* fixed findreg_by_number
...
* renamed rghelper to rgbase
2003-10-30 17:13:18 +00:00
peter
9e66b09843
* call firstpass before allocation and codegeneration is started
...
* move leftover code from pass_2.generatecode() to psub
2003-10-30 16:22:40 +00:00
mazen
75f88a5b90
* now uses standard routines in rgHelper unit to search registers by number and by name
2003-10-30 15:02:04 +00:00
Jonas Maebe
0cac29ec76
+ support for fpu temp parameters
...
+ saving/restoring of fpu register before/after a procedure call
2003-10-29 21:24:14 +00:00
peter
5925d38ac7
* support indexing and offset retrieval for locals
2003-10-29 15:40:20 +00:00
peter
7e450e736b
* fix crash with ops=0
2003-10-28 18:46:49 +00:00
peter
4a1ecb07d1
* splitted buildderef and buildderefimpl to fix interface crc
...
calculation
2003-10-23 14:44:07 +00:00
peter
6878c55c80
* write derefdata in a separate ppu entry
2003-10-22 20:39:59 +00:00
peter
96f9973b46
* taicpu_abstract.oper[] changed to pointers
2003-10-21 15:15:35 +00:00
peter
925bc3bbad
* remove memdebug code for rg
2003-10-20 19:30:08 +00:00
peter
9f54e1b7c5
* made worklists dynamic in size
2003-10-18 15:41:26 +00:00
florian
5b33ab3643
* fixed more ppc stuff
2003-10-17 15:25:18 +00:00
peter
0939085ab1
* commented out more obsolete constants
2003-10-17 15:08:34 +00:00
peter
d0de3b3ea8
* 64k registers supported
...
* fixed some memory leaks
2003-10-17 14:38:32 +00:00
florian
57a2fe6ddb
+ some code for PIC support added
2003-10-14 00:30:48 +00:00
florian
c70c620d9b
* some ideas for mm support implemented
2003-10-13 01:58:03 +00:00
florian
947280d8e2
* some ideas for mm support implemented
2003-10-13 01:23:13 +00:00
florian
1df13c788c
* fixed some MMX<->SSE
...
* started to fix ppc, needs an overhaul
+ stabs info improve for spilling, not sure if it works correctly/completly
- MMX_SUPPORT removed from Makefile.fpc
2003-10-11 16:06:42 +00:00
peter
fb81b7ebbb
* old trgobj moved to x86/rgcpu and renamed to trgx86fpu
...
* tregisteralloctor renamed to trgobj
* removed rgobj from a lot of units
* moved location_* and reference_* to cgobj
* first things for mmx register allocation
2003-10-10 17:48:13 +00:00
daniel
b2343f4b16
* Register allocator splitted, ans abstract now
2003-10-09 21:31:37 +00:00
florian
e3519e3b0c
* x86 supports only mem/reg to reg for movsx and movzx
2003-10-07 16:09:03 +00:00
peter
e27d6f67da
* inline supported again, LOC_REFERENCEs are used to pass the
...
parameters
* inlineparasymtable,inlinelocalsymtable removed
* exitlabel inserting fixed
2003-10-07 15:17:07 +00:00
peter
3a92a2a25a
* parameter alignment fixes
2003-10-03 22:00:33 +00:00
peter
c63b079d07
* save ESP after pusha and restore before popa for save all registers
2003-10-03 14:45:37 +00:00
peter
b1863f8fad
* remove asw
2003-10-02 21:18:06 +00:00
peter
70fe77ca7c
* procinfo unit contains tprocinfo
...
* cginfo renamed to cgbase
* moved cgmessage to verbose
* fixed ppc and sparc compiles
2003-10-01 20:34:48 +00:00
peter
5a7ce9fbe3
* fix pushw reg
2003-09-30 19:53:47 +00:00
peter
540691bf02
* optimized releasing of registers
2003-09-29 20:58:55 +00:00
peter
15446d6522
* removed emitjmp
2003-09-28 21:49:39 +00:00
peter
a028d221cc
* fixed invalid opcode handling in spill registers
2003-09-28 21:49:30 +00:00
peter
9a9d96fe5d
* fix register leak
2003-09-28 21:48:57 +00:00
peter
e248f1b570
* a_call_ref removed
2003-09-28 13:37:19 +00:00
peter
36c2bb1e1a
* give error for wrong register number
2003-09-28 13:37:07 +00:00
peter
b6a0492c9c
* remove sp_fixup
2003-09-25 21:29:23 +00:00
peter
1c11c95b3c
* change push/pop in getreg/ungetreg
2003-09-25 21:29:16 +00:00
peter
e487793919
* %st is st0 in nasm
2003-09-25 14:59:16 +00:00
florian
0493cd3d2e
* more x86-64 fixes
2003-09-25 13:13:32 +00:00
florian
f6e456268f
* fixed make cycle
2003-09-24 21:15:49 +00:00
florian
0b48a6a3ec
* x86-64 adaptions
2003-09-24 17:12:36 +00:00
peter
8af51ea6d3
* locals and paras are allocated in the code generation
...
* tvarsym.localloc contains the location of para/local when
generating code for the current procedure
2003-09-23 17:56:05 +00:00
daniel
1e02028986
* Fixed incorrect movzx spilling
2003-09-14 14:22:51 +00:00
daniel
c82243df4d
* Add BTR to destination memory location check in spilling
2003-09-12 20:25:17 +00:00
florian
8f66389b46
* improved arm code generation
...
* move some protected and private field around
* the temp. register for register parameters/arguments are now released
before the move to the parameter register is done. This improves
the code in a lot of cases.
2003-09-11 11:54:59 +00:00
daniel
079751b894
* Failed attempt to restore broken fastspill functionality
2003-09-10 19:14:31 +00:00
marco
305226dd23
* fix from peter for bts reg32,mem32 problem
2003-09-10 11:23:09 +00:00
peter
3a3d710c47
* basics for x86 register calling
2003-09-09 21:03:17 +00:00
daniel
49e539ac8d
* Adding register allocation order
2003-09-09 20:59:27 +00:00
florian
f495796796
* x86 instruction table updated to nasm 0.98.37:
...
- sse3 aka prescott support
- small fixes
2003-09-09 12:54:45 +00:00
peter
b9d09a4e5c
* preparations for different default calling conventions
...
* various RA fixes
2003-09-07 22:09:34 +00:00
florian
22f1ff8da4
* merged Wiktor's Watcom patches in 1.1
2003-09-05 17:41:12 +00:00
florian
024d08e05a
* ARM compiler compiles again
2003-09-04 21:07:03 +00:00
peter
01a1f7d063
* return 0 instead of $ff when no reg is found
2003-09-04 14:42:44 +00:00
peter
6a8d5eb25d
* NEWRA branch merged
2003-09-03 15:55:00 +00:00
florian
220e05dd5e
* fixed arm concatcopy
...
+ arm support in the common compiler sources added
* moved some generic cg code around
+ tfputype added
* ...
2003-09-03 11:18:36 +00:00
peter
d5a6a5b7f9
* fix wrong registers in reference
2003-08-26 12:42:45 +00:00
peter
6b12cc11e5
* first spill the registers of top_ref before spilling top_reg
2003-08-21 17:20:19 +00:00
peter
b9afdc6a36
* fix reg-supreg range check error
2003-08-21 14:48:36 +00:00
daniel
2b0cd432ca
* Small NOTARGETWIN32 conditional tweak
2003-08-20 19:28:21 +00:00
daniel
2ce08bd157
* Some old register convention code removed
...
* A few changes to eliminate a few lines of code
2003-08-20 16:52:01 +00:00
daniel
ebb1f3a361
* New register coding now mandatory, some more convert_registers calls
...
removed.
2003-08-20 09:07:00 +00:00
daniel
82b0cf41a6
* Made internal assembler use new register coding
2003-08-20 07:48:03 +00:00
daniel
41211715ff
* Corrected a comment.
2003-08-19 13:58:33 +00:00
daniel
787fcc5797
* Made ATT asm writer work with -sr
2003-08-18 11:49:47 +00:00
Jonas Maebe
4f8c390198
* fixed regvars so they work with newra (at least for ppc)
...
* fixed some volatile register bugs
+ -dnotranslation option for -dnewra, which causes the registers not to
be translated from virtual to normal registers. Requires support in
the assembler writer as well, which is only implemented in aggas/
agppcgas currently
2003-08-17 16:59:20 +00:00
daniel
878498029f
* Fixed newra compilation
2003-08-15 14:44:20 +00:00
peter
52c73e80d1
* start of sparc support for newra
2003-08-11 21:18:20 +00:00
daniel
42c320cb29
* cs_regalloc renamed to cs_regvars to avoid confusion with register
...
allocator
* Some preventive changes to i386 spillinh code
2003-08-09 18:56:54 +00:00
Jonas Maebe
f909d6a620
* fixed ppc compilation problems and changed VOLATILE_REGISTERS for x86
...
so that it doesn't include ebp and esp anymore
2003-07-06 21:50:33 +00:00
daniel
268bfcf784
* Fixed register allocator. *Lots* of fixes.
2003-07-06 15:31:20 +00:00
peter
390db181c1
* loadfpu_reg_reg size specifier
2003-07-03 18:59:25 +00:00
pierre
c80bd4565d
* fix a bug preventing correct reading of intel 'mov [edi],al'
2003-06-20 12:57:15 +00:00
Jonas Maebe
404d344d92
* lots of newra fixes (need getfuncretparaloc implementation for i386)!
...
* renamed all_intregisters to volatile_intregisters and made it
processor dependent
2003-06-17 16:34:44 +00:00
Jonas Maebe
d29c96896f
* fixed newra cycle for x86
...
* added constants for indicating source and destination operands of the
"move reg,reg" instruction to aasmcpu (and use those in rgobj)
2003-06-14 14:53:50 +00:00
peter
0dceec9a64
* current_procdef removed, use current_procinfo.procdef instead
2003-06-13 21:19:30 +00:00
Jonas Maebe
709e6da4fa
- removed ALL_INTREGISTERS (only the one in rgobj is valid)
2003-06-12 19:11:34 +00:00
peter
a71427cf2c
* fix newra cycle for i386
2003-06-12 18:31:18 +00:00
peter
46a27d8c27
* fixed copyvaluepara for left-to-right pushing
2003-06-07 10:24:10 +00:00
peter
7363a7d605
* 32bit operands need ofcourse 32bit size
2003-06-07 10:23:50 +00:00
Jonas Maebe
f27da44d92
* fixed cycling problem
2003-06-07 10:06:55 +00:00
peter
d91c880148
* cg.a_load_* get a from and to size specifier
...
* makeregsize only accepts newregister
* i386 uses generic tcgnotnode,tcgunaryminus
2003-06-03 21:11:09 +00:00
daniel
41e0bc4cec
* Register allocator finished
2003-06-03 13:01:59 +00:00
Jonas Maebe
6f3e16298a
* function results can now also be regvars
...
- removed tprocinfo.return_offset, never use it again since it's invalid
if the result is a regvar
2003-06-02 21:42:05 +00:00
peter
230a14ff68
* getregisterfpu size parameter added
...
* op_const_reg size parameter added
* sparc updates
2003-06-01 21:38:06 +00:00
peter
9cafe9c315
* fixed opsize and operand size setting for 64bit values
2003-05-31 16:22:28 +00:00
peter
414bd5fa22
* more sparc cleanup
...
* accumulator removed, splitted in function_return_reg (called) and
function_result_reg (caller)
2003-05-30 23:57:08 +00:00
florian
a8eb2ab740
* started to fix and clean up the sparc port
2003-05-28 23:18:31 +00:00
peter
9e2958f846
* i386 att instruction table moved to separate unit
2003-05-22 21:33:08 +00:00
peter
437ce7f8a2
* removed some unit dependencies
2003-05-22 21:32:28 +00:00
peter
abca40f041
* regvar fixes
2003-05-16 14:33:31 +00:00
peter
92ee1804b6
* removed selfpointer_offset, vmtpointer_offset
...
* tvarsym.adjusted_address
* address in localsymtable is now in the real direction
* removed some obsolete globals
2003-05-15 18:58:53 +00:00
peter
9ffa87206f
* removed radirect
2003-05-13 19:15:28 +00:00
florian
b48d0f8b36
* i386 and x86-64 share second_int_to_bool, moved to nx86cnv.pas
2003-05-01 08:02:42 +00:00
florian
9612e57805
* introduced defaultordconsttype to decribe the default size of ordinal constants
...
on 64 bit CPUs it's equal to cs64bitdef while on 32 bit CPUs it's equal to s32bitdef
+ added defines CPU32 and CPU64 for 32 bit and 64 bit CPUs
* int64s/qwords are allowed as for loop counter on 64 bit CPUs
2003-05-01 07:59:42 +00:00
florian
91bbc7bea3
* error when address of an abstract method is taken
...
* fixed some x86-64 problems
* merged some more x86-64 and i386 code
2003-04-30 20:53:32 +00:00
florian
de6916276a
* merged more x86-64/i386 code
2003-04-30 15:45:35 +00:00
peter
60978ba89c
* aktprocdef renamed to current_procdef
...
* procinfo renamed to current_procinfo
* procinfo will now be stored in current_module so it can be
cleaned up properly
* gen_main_procsym changed to create_main_proc and release_main_proc
to also generate a tprocinfo structure
* fixed unit implicit initfinal
2003-04-27 11:21:32 +00:00
florian
754a34200a
* merged i386/aasmcpu and x86_64/aasmcpu to x86/aasmcpu
2003-04-25 12:43:40 +00:00
florian
ad2f6d6dab
* merged agx64att and ag386att to x86/agx86att
2003-04-25 12:04:31 +00:00
florian
c36e3569c3
* removed
2003-04-25 11:50:38 +00:00
florian
d0025abb0e
* commited it, to remove it :)
2003-04-25 11:50:20 +00:00
florian
98d09473e4
* merged i386/cpubase and x86_64/cpubase to x86/cpubase;
...
different stuff went to cpubase.inc
2003-04-25 11:12:09 +00:00
daniel
9e2084b8d5
* Further register allocator work. Compiler now smaller with new
...
allocator than without.
* Somebody forgot to adjust ppu version number
2003-04-23 14:42:07 +00:00
daniel
7677b18770
* Removed usage of edi in a lot of places when new register allocator used
...
+ Added newra versions of g_concatcopy and secondadd_float
2003-04-23 09:51:16 +00:00
peter
e248c0ece4
* fixed C style array of const
...
* fixed C array passing
* fixed left to right with high parameters
2003-04-22 13:47:08 +00:00
daniel
25059e21b6
+ Implemented the actual register allocator
...
+ Scratch registers unavailable when new register allocator used
+ maybe_save/maybe_restore unavailable when new register allocator used
2003-04-22 10:09:34 +00:00
daniel
0c93e261e7
* Added some code to keep track of move instructions in register
...
allocator
2003-04-17 16:48:21 +00:00
peter
c4ddcc78a8
* generic constructor working for i386
...
* remove fixed self register
* esi added as address register for i386
2003-03-28 19:16:56 +00:00
peter
864736747f
* reg2opsize()
2003-03-18 18:17:46 +00:00
Jonas Maebe
e8a0c0cd62
* and more new register allocator fixes (in the i386 code generator this
...
time). At least now the ppc cross compiler can compile the linux
system unit again, but I haven't tested it.
2003-03-13 19:52:23 +00:00
daniel
390ae3e2b1
* Fixed ie 200301234 problem on Win32 target
2003-02-27 16:40:32 +00:00
daniel
18ab545cb7
* Fixed the optimizer
2003-02-26 21:15:43 +00:00
daniel
86bcea6ef5
* Code generator converted to new register notation
...
- Horribily outdated todo.txt removed
2003-02-19 22:00:14 +00:00
daniel
dc14489292
* Fixed another 200301081
2003-01-21 10:41:13 +00:00
daniel
509618b646
* Fixed internalerror
2003-01-13 23:00:18 +00:00
daniel
cbe0383afe
* Further work to convert codegenerator register convention;
...
internalerror bug fixed.
2003-01-13 14:54:34 +00:00
daniel
7b2fd10fb4
* Converted some code in cgx86.pas to new register numbering
2003-01-09 20:40:59 +00:00
daniel
55a161bbbf
* Tregister changed into a record
2003-01-08 18:43:56 +00:00
florian
b59b436130
* x86-64 compiles
...
+ very basic support for float128 type (x86-64 only)
2003-01-05 13:36:53 +00:00
peter
a51ce770c2
* align stack on 4 bytes in copyvalueopenarray
2003-01-02 16:17:50 +00:00
peter
af98b48c22
* stackpointer_alloc added for adjusting ESP. Win32 needs
...
this for the pageprotection
2002-12-24 15:56:50 +00:00
carl
6a52e7a9e5
- removed the invalid if <> checking (Delphi is strange on this)
...
+ implemented abstract warning on instance creation of class with
abstract methods.
* some error message cleanups
2002-11-25 18:43:31 +00:00
peter
f3fc72095f
* splitted defbase in defutil,symutil,defcmp
...
* merged isconvertable and is_equal into compare_defs(_ext)
* made operator search faster by walking the list only once
2002-11-25 17:43:16 +00:00
peter
a496dbe1ff
* pass proccalloption to ret_in_xxx and push_xxx functions
2002-11-18 17:31:54 +00:00
carl
7c0f175681
* flags2reg() was not extending the byte register to the correct result size
2002-11-09 21:18:31 +00:00
peter
83dae76625
+ $IMPLICITEXCEPTIONS switch to turn on/off generation of the
...
implicit exception frames for procedures with initialized variables
and for constructors. The default is on for compatibility
2002-10-16 19:01:43 +00:00
carl
67486c96c3
* fixes for Delphi 6 compilation
...
(warning : Some features do not work under Delphi)
2002-10-05 12:43:23 +00:00
Jonas Maebe
a15d8cfe39
* a_load_reg_reg() now has two size parameters: source and dest. This
...
allows some optimizations on architectures that don't encode the
register size in the register name.
2002-09-17 18:54:01 +00:00
peter
51057d8e8e
* support references without registers and symbol in paramref_addr. It
...
pushes only the offset
2002-09-16 19:08:47 +00:00
peter
6dffb25562
* move CGSize2Opsize to interface
2002-09-16 18:06:29 +00:00
peter
a4e309d6ae
* removevaluepara added to fix the stackpointer so restoring of
...
saved registers works
2002-09-01 14:42:41 +00:00
peter
7898dcf9ed
+ a_call_reg, a_call_loc added
...
* removed exprasmlist references
2002-09-01 12:09:27 +00:00
florian
e313bab4ff
* first part of procinfo rewrite
2002-08-17 09:23:33 +00:00
carl
745efb2c47
* issameref() to test if two references are the same (then emit no opcodes)
...
+ ret_in_reg to replace ret_in_acc
(fix some register allocation bugs at the same time)
+ save_std_register now has an extra parameter which is the
usedinproc registers
2002-08-16 14:24:57 +00:00
carl
c33d99adb7
- a_load_sym_ofs_reg removed
...
* loadvmt now calls loadaddr_ref_reg instead
2002-08-15 08:13:54 +00:00
peter
425bb45ddc
* renamed current_library to objectlibrary
2002-08-11 14:32:25 +00:00
peter
ac71268ce6
* saving of asmsymbols in ppu supported
...
* asmsymbollist global is removed and moved into a new class
tasmlibrarydata that will hold the info of a .a file which
corresponds with a single module. Added librarydata to tmodule
to keep the library info stored for the module. In the future the
objectfiles will also be stored to the tasmlibrarydata class
* all getlabel/newasmsymbol and friends are moved to the new class
2002-08-11 13:24:10 +00:00
Jonas Maebe
c7aefd286b
* fixed stupid bug of mine in g_flags2reg() when optimizations are on
2002-08-10 10:06:04 +00:00
carl
50537e95fc
* fix generic exception handling
2002-08-09 19:18:27 +00:00
carl
4d03ffdf46
+ updated exception routines
2002-08-04 19:52:04 +00:00
Jonas Maebe
6b83738e7d
+ generic implementation of tcg.g_flags2ref()
...
* tcg.flags2xxx() now also needs a size parameter
2002-07-27 19:53:51 +00:00
florian
eb2ca8d10f
* rewrote the system handling
2002-07-26 21:15:37 +00:00
Jonas Maebe
6cb82a2c8f
* fixed bug in op_const_reg_reg() for imul
2002-07-21 16:55:34 +00:00
florian
d88d2ed099
* splitting of i386\cgcpu.pas into x86\cgx86.pas and i386\cgcpu.pas
...
cgx86.pas will contain the common code for i386 and x86_64
2002-07-20 19:28:47 +00:00
florian
6bbaa14daf
* block nodes within expressions shouldn't release the used registers,
...
fixed using a flag till the new rg is ready
2002-04-25 20:15:39 +00:00
florian
37194d2f61
* fixed more problems with cpubase and x86-64
2002-04-25 16:12:09 +00:00