nickysn
ae92973196
+ added support for the retw, retnw, retfw, retd, retnd, retfd, retq, retnq and
...
retfq x86 instructions. These are variants of the ret instruction with the
return offset size set explicitly, e.g. retfw is a 16-bit far ret (i.e. pops
a 16-bit offset and a 16-bit segment), retfd is a 32-bit far ret (pops a
32-bit offset, followed by a 16-bit segment), etc.
git-svn-id: trunk@37571 -
2017-11-10 16:53:29 +00:00
pierre
ba3afefa4c
Regenerate register include files after commit 37564: Fix value of NR_DR6 and NR_DR7
...
git-svn-id: trunk@37565 -
2017-11-07 07:30:42 +00:00
pierre
176cec14c9
Fix value of NR_DR6 and NR_DR7
...
git-svn-id: trunk@37564 -
2017-11-07 07:29:54 +00:00
nickysn
034b753e10
* commented out PostPeepholeOptMov, because it breaks the pascal port of cwsdpmi
...
git-svn-id: trunk@37563 -
2017-11-06 23:30:11 +00:00
nickysn
24d447716e
* fixed support for access from inline asm to absolute vars, pointing to an
...
array element (previously, it would always point to the start of the array)
git-svn-id: trunk@37558 -
2017-11-06 16:06:34 +00:00
florian
2140b586a6
* i386 building fixed
...
git-svn-id: trunk@37554 -
2017-11-04 19:42:08 +00:00
florian
1556599ad5
* symbols with bind type AB_EXTERNAL_INDIRECT need to be declared as EXTERN for masm/nasm etc.
...
git-svn-id: trunk@37553 -
2017-11-04 19:10:17 +00:00
florian
c36c4d838d
+ PostPeepHoleOptsCpu for i8086
...
git-svn-id: trunk@37552 -
2017-11-04 19:10:15 +00:00
florian
4da4b768ec
* factored out PostPeepholeOptTest
...
+ use PostPeepholeOptTest on x86-64
git-svn-id: trunk@37551 -
2017-11-04 19:10:14 +00:00
florian
3097eaf8ee
* made PostPeepholeOptMov a function
...
git-svn-id: trunk@37550 -
2017-11-04 19:10:12 +00:00
florian
a7ea7fb569
* factored out PostPeepholeOptCmp
...
+ use PostPeepholeOptCmp for x86_64
git-svn-id: trunk@37549 -
2017-11-04 19:10:09 +00:00
florian
194c0c7073
* compilation fixed
...
git-svn-id: trunk@37546 -
2017-11-01 16:54:08 +00:00
florian
c7d5525b56
+ implemented some AVR specific intrinsics
...
git-svn-id: trunk@37544 -
2017-11-01 16:33:34 +00:00
florian
4752b0ef96
+ tinlinenode calls cpu specific routines for unknown inline numbers
...
git-svn-id: trunk@37543 -
2017-11-01 16:33:32 +00:00
nickysn
e5dad9c98c
+ set oper.haslabelref in several other places, where a reference, containing a
...
label is created in the intel syntax x86 assembler. This fixes tfarcal3.pp and
tfarcal4.pp after r37538
git-svn-id: trunk@37541 -
2017-11-01 14:31:16 +00:00
nickysn
9649154368
* fixed the token2str const array for intel syntax x86 asm
...
git-svn-id: trunk@37540 -
2017-11-01 13:36:16 +00:00
nickysn
9450beb99c
* fixed bug in intel syntax i8086 inline asm, when certain 'jmp/call [v]'
...
instructions got erroneously converted to 'jmp/call v', if 'v' is an external
far variable that points to certain things (like a local label, exported via
public)
git-svn-id: trunk@37538 -
2017-10-31 16:49:38 +00:00
nickysn
49a96af874
+ also support 'external near' var declarations on i8086
...
git-svn-id: trunk@37536 -
2017-10-30 21:52:03 +00:00
florian
3bcf774c7b
* compilation fixed
...
git-svn-id: trunk@37534 -
2017-10-30 21:01:10 +00:00
nickysn
303309b28f
+ added support for 'external far' variables for i8086
...
git-svn-id: trunk@37532 -
2017-10-30 18:03:44 +00:00
nickysn
29558a74cd
+ support exporting labels from asm blocks in intel syntax asm blocks via the
...
'public' directive
git-svn-id: trunk@37530 -
2017-10-30 16:44:13 +00:00
nickysn
d318ab086a
* when handling absolute vars from within intel inline assembly, take the
...
absolute var size into account (not the type of the var it points to or no
size at all, if it points to a fixed address)
git-svn-id: trunk@37525 -
2017-10-26 15:58:48 +00:00
nickysn
8a0d8f025b
* fixed another i8086 inline asm 32-bit constant bug (e.g. in 'or eax, 80000001h')
...
git-svn-id: trunk@37521 -
2017-10-25 19:38:37 +00:00
nickysn
325e66287c
* fix for inline asm of instructions with 32-bit constant operands on i8086
...
git-svn-id: trunk@37519 -
2017-10-25 18:03:22 +00:00
nickysn
2af5c9d508
* changed type used for section alignment from byte/shortint to longint, so the
...
internal object writer and the internal linker support object files with
sections with alignment >=256
git-svn-id: trunk@37518 -
2017-10-25 15:47:29 +00:00
nickysn
8cc230ef1a
- don't switch index into base in the gas assembly writer. This optimization
...
(and others) are performed in optimize_ref().
git-svn-id: trunk@37517 -
2017-10-25 13:42:18 +00:00
nickysn
d7e4b50068
+ also optimize x86_64 references by switching [rbp+reg64] to [reg64+rbp],
...
[r13+reg64] to [reg64+r13] and [r13d+reg32] to [reg32+r13d]
git-svn-id: trunk@37516 -
2017-10-24 16:18:43 +00:00
nickysn
5ae32a0ec5
+ always do the x86_64 reference optimizations as if SS=DS, because the CPU
...
basically ignores these segments in long mode
git-svn-id: trunk@37515 -
2017-10-24 15:38:59 +00:00
nickysn
e58bad8eef
+ check for the 'pop cs' instruction in the x86 inline assembler and print a
...
warning (on the i8086 target) or an error (on i386 and x86_64) when this
instruction is used (because it only works on 8086 and 8088 CPUs)
git-svn-id: trunk@37514 -
2017-10-24 15:07:20 +00:00
nickysn
0d1f7910d7
+ also apply optimize_ref() on references of inline asm instructions
...
git-svn-id: trunk@37512 -
2017-10-23 22:28:08 +00:00
nickysn
875339993f
* strip segment overrides, for segments, which should be equal in the current
...
model to the default segment of the reference in optimize_ref, when
inlineasm=false
git-svn-id: trunk@37511 -
2017-10-23 15:51:33 +00:00
nickysn
d220d6f2c6
* use get_default_segment_of_ref() in the seg() handling on i8086
...
git-svn-id: trunk@37510 -
2017-10-23 14:55:52 +00:00
nickysn
80226e3af4
+ added an optimization pass, that optimizes x86 references
...
git-svn-id: trunk@37494 -
2017-10-20 15:55:55 +00:00
nickysn
67a0e9bdae
+ added x86 helper function get_default_segment_of_ref, which returns the
...
default segment base for the ref, in case there's no segment override
* in the internal assembler, use get_default_segment_of_ref to strip redundant
prefixes, instead of always assuming all refs are DS-based
git-svn-id: trunk@37486 -
2017-10-18 14:24:58 +00:00
svenbarth
530213711f
* change the class references in a class' field table to indirect references
...
git-svn-id: trunk@37482 -
2017-10-17 20:34:21 +00:00
nickysn
e8bbc4eef9
+ support the xlat x86 instruction syntax with a memory operand. This allows
...
specifying the address size (e.g. xlat byte ptr [bx] or xlat byte ptr [ebx])
git-svn-id: trunk@37478 -
2017-10-17 16:40:06 +00:00
nickysn
9cebeeffa9
+ check for address size mismatch in intel syntax assembler as well
...
git-svn-id: trunk@37475 -
2017-10-16 16:19:15 +00:00
nickysn
353efcb163
* fixed rdi register name in error message
...
git-svn-id: trunk@37474 -
2017-10-16 16:14:18 +00:00
nickysn
cece021bd1
+ check whether the address sizes match for x86 string instructions with two
...
memory operands, when using the at&t syntax inline assembler
git-svn-id: trunk@37473 -
2017-10-16 16:01:38 +00:00
nickysn
4cb1a96ec1
* use get_ref_address_size in the nasm writer, when handling the parameterized
...
string instructions
git-svn-id: trunk@37471 -
2017-10-16 14:21:03 +00:00
nickysn
6f2e64ff90
+ added function get_ref_address_size
...
git-svn-id: trunk@37470 -
2017-10-16 14:13:03 +00:00
nickysn
b0653a6313
+ added functions is_32_bit_ref and is_64_bit_ref, similar to is_16_bit_ref
...
* taicpu.needaddrprefix now uses is_32_bit_ref on x86_64
* is_16/32/64_bit_ref made part of the aasmcpu unit interface, so they can be
used elsewhere (e.g. in the inline assembler readers)
git-svn-id: trunk@37469 -
2017-10-16 14:05:06 +00:00
nickysn
2b6e5d817e
* changed the parameter of is_16_bit_ref to be a treference, instead of toper
...
git-svn-id: trunk@37463 -
2017-10-16 00:30:26 +00:00
pierre
d18627f0af
* Update all fpcsrc Makefile's using latest fpcmake version 2017-09-21 rev 37286
...
git-svn-id: trunk@37462 -
2017-10-16 00:27:27 +00:00
nickysn
acfa199b09
* in the nasm writer, only output a segment prefix for the [si] operand, in
...
case there's a segment operand, different that DS (the default source
segment) for parameterized x86 string instructions
git-svn-id: trunk@37459 -
2017-10-14 16:58:15 +00:00
nickysn
a8232ac477
+ added warning if source or destination for x86 string instructions isn't
...
specified to be (%esi) or (%edi), when using at&t syntax assembler (this is
not considered an error by intel syntax assemblers, so we're not adding a
warning there, for now)
git-svn-id: trunk@37458 -
2017-10-14 15:27:00 +00:00
nickysn
dd9b5eb2aa
+ added the 'Cannot override ES' message in the at&t assembler reader as well
...
git-svn-id: trunk@37456 -
2017-10-14 00:48:46 +00:00
nickysn
1ee36b5b9b
+ added error message in the intel assembler reader, when an attempt is made to
...
override the ES segment in an x86 string instruction (because it cannot be
overriden)
git-svn-id: trunk@37454 -
2017-10-13 14:56:38 +00:00
nickysn
baf492c7a5
+ another helper function: x86_parameterized_string_op_param_count
...
* when generating x86 code for parameterized string instructions with the
internal object writer, don't rely on the destination operand being [(r/e)di]
when determining the segment prefix, because when using intel syntax, source
and destination can be anything (only the operand size, the address size and
the source segment is taken into account)
git-svn-id: trunk@37452 -
2017-10-12 16:07:15 +00:00
nickysn
4c75b15afe
* shortened the names of the is_x86_string_instruction_op,
...
is_x86_parameterless_string_instruction_op and
is_x86_parameterized_string_instruction_op by removing 'instruction' from
their names
git-svn-id: trunk@37451 -
2017-10-12 15:20:22 +00:00
nickysn
e3ca2a3043
+ added helper functions get_x86_string_op_si_param and get_x86_string_op_di_param
...
* use get_x86_string_op_si_param in the nasm writer
git-svn-id: trunk@37450 -
2017-10-12 15:12:40 +00:00
nickysn
5a5cd65559
+ added helper functions x86_param2paramless_string_op and
...
get_x86_string_op_size
* refactored the AT&T inline asm handling of x86 parameterized string ops, so it
uses the new helper functions
git-svn-id: trunk@37449 -
2017-10-12 14:25:32 +00:00
nickysn
2f28768d2d
* simplify some code, by using is_x86_parameterized_string_instruction_op
...
git-svn-id: trunk@37448 -
2017-10-12 13:26:07 +00:00
nickysn
98c4986b6d
+ added x86 helper functions is_x86_string_instruction_op,
...
is_x86_parameterless_string_instruction_op and
is_x86_parameterized_string_instruction_op
git-svn-id: trunk@37447 -
2017-10-12 13:18:38 +00:00
nickysn
0fb79946a5
+ added support for the parameterized versions of the x86 string instructions
...
(movs, cmps, scas, lods, stos, ins, outs) in the inline asm of the i8086, i386
and x86_64 targets. Both intel and at&t syntax is supported.
* NEC V20/V30 instruction 'ins' (available only on the i8086 target, because it
is incompatible with 386+ instructions) renamed 'nec_ins', to avoid conflict
with the 186+ 'ins' instruction.
git-svn-id: trunk@37446 -
2017-10-12 00:07:02 +00:00
svenbarth
fcc1ce7a08
* fix for Mantis #30344 : applied patch by Mario Ray Mahardhika to add new command line option -Sj[-|+] to control writeable typed constants (with a small adjustment to the help text)
...
+ added test
git-svn-id: trunk@37437 -
2017-10-09 19:19:23 +00:00
nickysn
d96558cd64
* fixed bug in assembling some 32-bit instructions on the i8086 target (e.g.
...
mov dword ptr [something], ebx)
git-svn-id: trunk@37430 -
2017-10-08 11:10:42 +00:00
svenbarth
f6a867ef04
* move handling of Concat to tinlinenode so that it can be easily extended for dynamic arrays
...
+ added test
git-svn-id: trunk@37429 -
2017-10-08 10:39:34 +00:00
svenbarth
c01b36a2fa
* the checks for no parameters are not needed for Insert() and Delete() as they take care of that themselves with an overload listing
...
git-svn-id: trunk@37428 -
2017-10-08 10:37:30 +00:00
florian
3d3298f64d
* write absolute references correctly on avr, resolves #32040
...
git-svn-id: trunk@37419 -
2017-10-07 21:09:20 +00:00
florian
4cf2a2672a
changes to fix #32043
...
* changed most of the variables in the assembler readers used to store constants from aint to tcgint
as aint has only the size of the accumular while some CPUs (AVR) allow larger constants in instructions
+ allow access to absolute symbols with address type in inline assembler
* allow absolute addresses in avr inline assembler
+ tests
git-svn-id: trunk@37411 -
2017-10-06 21:07:19 +00:00
nickysn
92a52a9f4d
+ implemented support for instructions with non-native address size on i8086
...
(16-bit and 32-bit), i386 (16-bit and 32-bit) and x86_64 (32-bit and 64-bit).
Known bug: 32-bit addresses with an offset have their offset truncated to its
low 16-bits on i8086
git-svn-id: trunk@37409 -
2017-10-06 15:27:14 +00:00
nickysn
8589b946fc
* different versions (behind cpu specific ifdefs) of process_ea_ref renamed
...
process_ea_ref_64_32, process_ea_ref_32 and process_ea_ref_16, indicating
the address size they support; this is done, so that in the future, we can
mix them all on the same x86 architecture and support multiple address sizes
git-svn-id: trunk@37407 -
2017-10-05 22:15:26 +00:00
nickysn
31c9214884
* replaced R_SUBADDR with the appropriate size (R_SUBW, R_SUBD or R_SUBQ) in
...
the cpu specific process_ea_ref function
git-svn-id: trunk@37400 -
2017-10-05 20:39:32 +00:00
florian
cc44328109
* correctly calc case label distance after r36362, resolves #32115 and #32311
...
git-svn-id: trunk@37390 -
2017-10-03 20:36:09 +00:00
florian
99a3855e6b
* restored old default values for MajorOperatingSystemVersion, MajorSubsystemVersion and MinorSubsystemVersion, resolves issue #32492
...
git-svn-id: trunk@37381 -
2017-10-01 21:02:37 +00:00
florian
7817102727
* patch by Christo Crause to implement 8 bit multiplications for "mul-less" avr types, resolves issue #31925
...
git-svn-id: trunk@37380 -
2017-10-01 20:34:44 +00:00
florian
c0feaf1f1e
+ allow absolute to absolute symbols, resolves issue #32474
...
git-svn-id: trunk@37379 -
2017-10-01 19:54:44 +00:00
florian
5b755661d8
+ patch by Simon Ameis: adds all the STM32F091* microcontroller units to the list of supported ARM MCUs, resolves issue #32484
...
git-svn-id: trunk@37378 -
2017-10-01 18:59:01 +00:00
florian
ce7487b7de
o patch by J. Gareth "Kit" Moreton, resolves partially issue #32037
...
o improves readibility of TX86AsmOptimizer.OptPass1MOV and fixes some spelling mistakes
+ Optimization MovAnd2Mov 2
+ extended Optimization MovTestJxx2TestMov and MovTestJxx2ovTestJxx to take care of and as well
+ Peephole Optimization: movq x,%reg -> movd x,%reg
git-svn-id: trunk@37377 -
2017-10-01 18:40:11 +00:00
florian
198c53a908
o patch by J. Gareth "Kit" Moreton, resolves partially issue #32037
...
* generate instructions with shorter imm on x86-64 if possible
git-svn-id: trunk@37376 -
2017-10-01 18:40:09 +00:00
florian
75e03a7e62
* avoid unneeded the generation of un-needed shift instructions thlcgobj.in a_load_subsetreg_reg
...
git-svn-id: trunk@37374 -
2017-10-01 16:13:22 +00:00
florian
6f338bb4b5
+ tcgsubscriptnode.pass_generate_code makes use of a_loadmm_reg_intreg to avoid location_force_mem calls
...
git-svn-id: trunk@37373 -
2017-10-01 16:13:20 +00:00
florian
f0c237a159
+ let a_load_loc_reg handle also LOC_*MMREGISTER as we have loadmm_*intreg*
...
git-svn-id: trunk@37372 -
2017-10-01 16:13:18 +00:00
florian
15b617546e
+ call TX86AsmOptimizer.OptPass1VOP for logical operations as well
...
git-svn-id: trunk@37367 -
2017-10-01 14:40:21 +00:00
svenbarth
9619576515
+ add support for $SetPE{OS,SubSys,User}Version directives; Delphi compatible; Note: $SetPEUserVersion takes precedence to $Version
...
+ added test
git-svn-id: trunk@37364 -
2017-09-30 13:55:29 +00:00
svenbarth
5c447cba50
* fix for Mantis #32476 : use the correct string to check i2
...
git-svn-id: trunk@37361 -
2017-09-30 11:22:02 +00:00
pierre
8b63f97173
Call ungetregister for NR_D2 at m68k-palmos syscall exit
...
git-svn-id: trunk@37351 -
2017-09-28 14:55:41 +00:00
svenbarth
b3ee9339b8
* also report the dynamic array "overloads" for the Insert() intrinsics
...
git-svn-id: trunk@37343 -
2017-09-27 21:18:04 +00:00
svenbarth
c5b33f51f9
* fix for Mantis #32412 : correctly handle an incorrect parameter count for Delete() and Insert() intrinsics
...
+ added tests
git-svn-id: trunk@37342 -
2017-09-27 21:15:00 +00:00
svenbarth
a1c910d892
* fix for Mantis #32108 : ensure that types are registered once there is no more specialization is going on
...
git-svn-id: trunk@37341 -
2017-09-27 20:47:16 +00:00
svenbarth
b765d661ce
* when registering a def also register the syms and defs of its symtables
...
git-svn-id: trunk@37340 -
2017-09-27 20:34:38 +00:00
svenbarth
b322339758
+ extend tstoredsymtable with method register_children to register all its symbols and defs
...
git-svn-id: trunk@37339 -
2017-09-27 20:27:05 +00:00
svenbarth
a52b675779
* fix that *annoying* search & replace remnant of incorrect casing
...
git-svn-id: trunk@37334 -
2017-09-27 19:42:47 +00:00
florian
1c69ae6a15
handle correctly "reg+const" operands in avr assembler, fixes issue #32016
...
git-svn-id: trunk@37328 -
2017-09-26 20:14:41 +00:00
nickysn
b3f7bce3a6
* check for CPUX86_HAS_SSE2 instead of CPUX86_HAS_SSEUNIT in Tcgx86.g_concatcopy
...
git-svn-id: trunk@37327 -
2017-09-26 16:05:23 +00:00
nickysn
aec03309ef
+ added CPUX86_HAS_SSE2 to x86 tcpuflags
...
git-svn-id: trunk@37326 -
2017-09-26 16:02:56 +00:00
pierre
3c8d38674f
Change single/double/extended-str functions to methods
...
* Disable asd_cpu for wasm (generates errors as it disabled the .xmm added at start)
- Remaining problem: 'DT inf' Error: not implemented ...
git-svn-id: trunk@37325 -
2017-09-25 22:04:41 +00:00
pierre
ccd8e6a78b
Partial fix for watcom wasm
...
git-svn-id: trunk@37323 -
2017-09-25 20:47:31 +00:00
pierre
1aa731df63
Fix Absolute var symbol address (was failing for AVR cpu)
...
git-svn-id: trunk@37320 -
2017-09-25 18:44:16 +00:00
Károly Balogh
333316f356
less tab more spaces. no functional change.
...
git-svn-id: trunk@37317 -
2017-09-25 14:52:39 +00:00
florian
9ef646e3c5
* fix avr for new GetNextReg behaviour
...
* some wrong GetNextReg usage in the avr code generator fixed
git-svn-id: trunk@37316 -
2017-09-24 20:51:05 +00:00
pierre
8614a38ad3
Fix cross-compiler with soft 80bit with external assembler
...
git-svn-id: trunk@37306 -
2017-09-23 20:52:57 +00:00
nickysn
e701fa8de1
* converted the x86 instruction flags to a set, so they can be extended more
...
easily and so that all the values are now available to the compiler
(previously, there were several, which were mapped to the same value and thus
were only used to make x86ins.dat easier to read)
git-svn-id: trunk@37299 -
2017-09-21 15:48:27 +00:00
pierre
b14feadfe1
Fix cycle failure after last commit
...
git-svn-id: trunk@37298 -
2017-09-21 15:47:49 +00:00
pierre
735f9363d8
Add code for writing 80-bit data with soft 80-bit extended when FPC_SOFT_FPUX80 is defined
...
git-svn-id: trunk@37297 -
2017-09-21 14:40:23 +00:00
pierre
59edd81a26
Disable some code using bestrealrec if macro FPC_SOFT_FPUX80 is defined
...
git-svn-id: trunk@37296 -
2017-09-21 14:39:14 +00:00
pierre
2a49627d48
Allow compilation of ppc386 compiler using FPC_SOFT_FPUX80, i.e. soft float 80-bit extended float
...
git-svn-id: trunk@37295 -
2017-09-21 14:36:48 +00:00
nickysn
ab62e2237b
* mark the sldt,syscall,sysenter,sysexit,sysret,andn,bextr,rorx,sarx,shlx and
...
shrx instructions as protected mode only
git-svn-id: trunk@37275 -
2017-09-20 15:43:23 +00:00
pierre
ce332eb2e2
Fix failures for rtl ppudump on sparc cpu
...
git-svn-id: trunk@37250 -
2017-09-18 14:10:19 +00:00
pierre
91fa2999ee
Add aarch64 and sparc64 linux targets to help output
...
git-svn-id: trunk@37249 -
2017-09-18 11:58:45 +00:00
pierre
bd428ce6ad
Use getptruint for pointer type const, fixes i8086 ppudump problems
...
git-svn-id: trunk@37242 -
2017-09-17 20:44:08 +00:00
pierre
97241c46b2
Move getptruint/putptruint methods to tentfile class to allow use with ppudump
...
git-svn-id: trunk@37241 -
2017-09-17 20:41:51 +00:00
Károly Balogh
fd00920006
m68k-palmos: internal sysinit, and patch target support so it works prc-tools-remix on a modern system
...
git-svn-id: trunk@37230 -
2017-09-16 21:34:55 +00:00
Károly Balogh
e1501c86bf
m68k: fix no FPU support
...
git-svn-id: trunk@37227 -
2017-09-16 18:13:57 +00:00
svenbarth
90bd408de4
* fix for Mantis #32355 : adjust the meaning of the typehelpers modeswitch for Delphi modes in that it enables the "type helper" syntax as it is in the non-Delphi modes; extending primitive types with record helpers is now always enabled in Delphi modes
...
+ added test
git-svn-id: trunk@37225 -
2017-09-15 21:09:21 +00:00
svenbarth
83f5b27e02
* check helpertype instead of the extendeddef to judge whether inherited should be allowed or not
...
git-svn-id: trunk@37224 -
2017-09-15 20:52:42 +00:00
pierre
efcb10f537
Handle arm-palmos syscall modifier
...
git-svn-id: trunk@37223 -
2017-09-15 20:29:02 +00:00
pierre
f7fd137787
Accept syscall procedure modifier for arm-palmos
...
git-svn-id: trunk@37222 -
2017-09-15 20:27:57 +00:00
pierre
fee49a3e40
Disable threading feature for arm-palmos (like it is done for m68k-palmos)
...
git-svn-id: trunk@37221 -
2017-09-15 20:27:03 +00:00
pierre
d0f8ea7969
Add arm-palmos target to list supporting po_syscall
...
git-svn-id: trunk@37220 -
2017-09-15 20:25:59 +00:00
Károly Balogh
93910c60be
palmos: register the linker at least, although it's probably not functional with current RTL
...
git-svn-id: trunk@37211 -
2017-09-15 11:33:40 +00:00
pierre
89b3f6c86a
Fix the RTL directory for old OSes that use OS_TARGET only for rtlppulogs rule
...
git-svn-id: trunk@37210 -
2017-09-15 11:24:06 +00:00
pierre
e1dbb5edcb
Fix crash for GenConstraints handling
...
git-svn-id: trunk@37209 -
2017-09-15 08:43:17 +00:00
pierre
8b0df68a81
Use installed ppudump instead of trying to recompile it, to be able to test cross-compiled RTL units
...
git-svn-id: trunk@37208 -
2017-09-14 15:57:25 +00:00
pierre
8bdd161805
Fix error for jvm compiler
...
git-svn-id: trunk@37207 -
2017-09-14 15:13:31 +00:00
pierre
6a09a68156
Fix failures in rtlppulogs
...
git-svn-id: trunk@37206 -
2017-09-14 13:41:06 +00:00
svenbarth
a6821c63e0
* store the type of the helper that had been encountered during parsing in the objectdef and by extension the PPU
...
git-svn-id: trunk@37202 -
2017-09-13 21:24:06 +00:00
svenbarth
50788e8b3b
* correctly encapsulate the RTTI data for sets to avoid alignment problems with the new SetSize field (fixes compilation on Sparc and basically every other target that requires proper alignment with 64-bit values dictating an 8-Byte alignment)
...
git-svn-id: trunk@37201 -
2017-09-13 21:05:04 +00:00
florian
05ecd784f2
* factored out OptPass1LEA and use it for x86-64 as well
...
+ LEAMov2LEA optimization
git-svn-id: trunk@37199 -
2017-09-13 20:40:32 +00:00
florian
bfeb5fef53
+ cas* mnemonics for sparc64
...
git-svn-id: trunk@37188 -
2017-09-11 20:06:22 +00:00
nickysn
c8b351fb67
+ added check in GetNextReg(), so it halts with an internal error, if called on
...
a register, that isn't supposed to have a "next" register allocated
git-svn-id: trunk@37185 -
2017-09-11 18:23:14 +00:00
nickysn
db09759763
* also integrated the getnextreg() implementation for 8-bit and 16-bit alus from
...
the avr and i8086 code generators into the base tcg class
git-svn-id: trunk@37182 -
2017-09-11 15:47:39 +00:00
nickysn
cf28b202eb
* integrated the getintregister() implementation for 8-bit and 16-bit alus from
...
the avr and i8086 code generators into the base tcg class (so it can be reused
by other 8-bit and 16-bit targets)
git-svn-id: trunk@37181 -
2017-09-11 15:23:59 +00:00
nickysn
ddba821561
* GetNextReg(), used by 16-bit and 8-bit code generators (i8086 and avr) moved
...
from cpubase unit to a method in the tcg class. The reason for doing that is
that this is now a standard part of the 16-bit and 8-bit code generators and
moving to the tcg class allows doing extra checks (not done yet, but for
example, in the future, we can keep track of whether there was an extra
register allocated with getintregister and halt with an internalerror in case
GetNextReg() is called for registers, which weren't allocated as a part of a
sequence, therefore catching a certain class of 8-bit and 16-bit code
generator bugs at compile time, instead of generating wrong code).
- removed GetLastReg() from avr's cpubase unit, because it isn't used for
anything. It might be added to the tcg class, in case it's ever needed, but
for now I've left it out.
* GetOffsetReg() and GetOffsetReg64() were also moved to the tcg unit.
git-svn-id: trunk@37180 -
2017-09-11 14:53:06 +00:00
nickysn
30c38a81a9
+ also check register type (must be R_INTREGISTER) and subregister (must be
...
R_SUBW) in i8086's GetNextReg()
git-svn-id: trunk@37177 -
2017-09-11 13:25:32 +00:00
nickysn
4e489f2b33
+ generate faster, branchless code for abs(int64) on i8086
...
git-svn-id: trunk@37172 -
2017-09-10 18:58:45 +00:00
nickysn
aefa317474
+ fast and branchless implementation of abs(int64) for i386
...
git-svn-id: trunk@37169 -
2017-09-10 17:25:47 +00:00
nickysn
ebf4f715e8
+ added a i8086 specific implementation of 32-bit abs(), which generates even
...
better code
git-svn-id: trunk@37162 -
2017-09-10 12:28:00 +00:00
nickysn
16d7eefbca
+ adapted and enabled the x86 specific abs() code generation for i8086, because
...
it generates slightly better code, than the generic implementation
git-svn-id: trunk@37161 -
2017-09-10 12:12:34 +00:00
florian
074ef98535
* fix spilling on sparc64 if the offset must be built by sethi/or/xor
...
git-svn-id: trunk@37159 -
2017-09-09 19:36:52 +00:00
florian
8315c660f4
* fix JumpTargetOp for sparc64
...
git-svn-id: trunk@37158 -
2017-09-09 19:36:50 +00:00
nickysn
74dad2099e
+ added tcpuflags and cpu_capabilities to i8086's cpuinfo.pas
...
git-svn-id: trunk@37155 -
2017-09-08 14:38:40 +00:00
florian
3d514856a4
* improve node complexity calculations for type nodes
...
git-svn-id: trunk@37151 -
2017-09-06 20:34:56 +00:00
maciej-izak
8b5524ac3a
* ignore is_publishable for properties in interfaces (related to $M+ directive). $M has effect on visibility of default section for classes. Interface has always only public section (fix for problem in tb0631.pp)
...
git-svn-id: trunk@37136 -
2017-09-03 19:05:21 +00:00
svenbarth
5c97248f85
+ also write the set's size to the RTTI as that simplifies handling in Invoke()
...
git-svn-id: trunk@37090 -
2017-08-31 19:23:12 +00:00
svenbarth
1950e57899
* fix order in tinternaltypeprefix so that it fits internaltypeprefixName
...
git-svn-id: trunk@37089 -
2017-08-31 18:53:20 +00:00
svenbarth
7b675b6769
* correctly write the type of open array parameters as the element def and not the array def
...
+ added test that shows the linking error if not done so (otherwise that should already be covered by trtti15.pp)
git-svn-id: trunk@37083 -
2017-08-29 20:17:24 +00:00
svenbarth
83e4585b0f
* correctly handle unit identifiers inside specializations of generic routines
...
git-svn-id: trunk@37080 -
2017-08-29 18:29:10 +00:00
svenbarth
6acba684d4
* class helpers: fix calling virtual methods of the extended type using inherited
...
git-svn-id: trunk@37060 -
2017-08-25 19:36:56 +00:00
florian
4d5a94644f
* do not call a_load_reg_reg with tosize=OS_NO
...
git-svn-id: trunk@37055 -
2017-08-24 20:09:15 +00:00
Károly Balogh
d115b0e8dc
m68k: changed the internal name of 68k MacOS from system_m68k_mac to system_m68k_macos, so it's consistent with the PowerPC version. suggestion/request by Sven :)
...
git-svn-id: trunk@37035 -
2017-08-22 11:22:15 +00:00
Károly Balogh
04dee0fc04
regenerated Makefiles for m68k-macos target
...
git-svn-id: trunk@37034 -
2017-08-22 11:16:42 +00:00
Károly Balogh
a87df638e7
m68k-atari: reenable threading feature. even if it's technically unsupported, it breaks the build of too many otherwise applicable packages
...
git-svn-id: trunk@37033 -
2017-08-22 11:07:10 +00:00
Károly Balogh
925ffcc744
regenerated compiler messages after r37029
...
git-svn-id: trunk@37030 -
2017-08-22 10:45:52 +00:00
Károly Balogh
2126f008f9
m68k: added NetBSD and MacOS to the compiler help output as targets
...
git-svn-id: trunk@37029 -
2017-08-22 10:42:27 +00:00
Károly Balogh
1d78e73ed8
m68k: there are now cross-binutils for old MacOS, so based on the old/existing bits, fix the support in the compiler
...
git-svn-id: trunk@37028 -
2017-08-22 10:41:02 +00:00
Károly Balogh
8db10af841
m68k: palmos and atari doesn't support threading
...
git-svn-id: trunk@37027 -
2017-08-22 09:06:52 +00:00
florian
a1a14eaaa8
* fix aarch64 building
...
git-svn-id: trunk@37025 -
2017-08-22 08:44:56 +00:00
svenbarth
239d0704ca
+ add support for type helpers to also extend interface types
...
git-svn-id: trunk@37023 -
2017-08-21 20:49:20 +00:00