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