Jonas Maebe
06fc6ac491
* fixed threadvar support on linux/i386 and android/i386 after r31639
...
(mantis #28672 )
git-svn-id: trunk@31660 -
2015-09-13 07:46:31 +00:00
Jonas Maebe
3c6aa91a96
* factored out the loading of threadvars in its own method, and put the
...
x86-specific part in nx86ld
git-svn-id: trunk@31639 -
2015-09-12 23:32:53 +00:00
Jonas Maebe
991e1f49bd
* store a pointer to the used tasminfo record in every assembler writer, so
...
that we can use assembler writers with different conventions from the
currently set target_asm (e.g. an x86 assembler writer for inline assembly
in LLVM IR)
git-svn-id: trunk@31628 -
2015-09-12 23:32:13 +00:00
Jonas Maebe
b3d0197f98
* factored out the output file handling (mostly writing data) from the
...
external assembler writer, so we can reuse the archtecture-specific
writers to write inline assembly in LLVM IR files
git-svn-id: trunk@31625 -
2015-09-12 23:32:01 +00:00
florian
fbda104d54
* do not use a_call_ref for procedures allocating all registers since it break spilling, see also issue #28639 , resolves issue #28639
...
git-svn-id: trunk@31608 -
2015-09-11 20:56:05 +00:00
nickysn
e323a08b20
+ also write the omf special segment attributes in the nasm writer for the win16 target
...
+ enabled the internal omf obj writer for the win16 target
git-svn-id: trunk@31576 -
2015-09-07 22:26:14 +00:00
nickysn
bdfd23cc2e
+ new target switch "FarProcsPushOddBP", which causes the i8086 compiler to push
...
odd values of BP if the procedure is far. Enabled this by default for Win16.
git-svn-id: trunk@31569 -
2015-09-07 19:05:18 +00:00
nickysn
1835c075e6
+ added win16 to the nasm's supported targets
...
git-svn-id: trunk@31568 -
2015-09-07 19:00:41 +00:00
nickysn
98ec7a2211
* eliminated the dual initialization of DS in interrupt procedures in the huge
...
memory model
git-svn-id: trunk@31519 -
2015-09-04 21:37:07 +00:00
nickysn
1487236f29
+ support addr_fardataseg references in the internal asm writer
...
git-svn-id: trunk@31511 -
2015-09-04 14:33:48 +00:00
nickysn
0fdc62e0f7
+ initialize DS with the current unit's data segment in the function entry code
...
generated in the huge memory model
git-svn-id: trunk@31500 -
2015-09-03 21:44:16 +00:00
nickysn
2725b1160b
* name the 'FAR_DATA' class segments as module_name+'_DATA'
...
git-svn-id: trunk@31499 -
2015-09-03 19:00:55 +00:00
nickysn
cfab5d3d3e
* the omfbase.omf_segclass const array converted to function in order to be able
...
to return different names for some sections in the huge memory model
git-svn-id: trunk@31496 -
2015-09-03 17:48:07 +00:00
nickysn
cf144a7fb7
* use a dummy non-nil pointer in FSectionsUsed and FSectionsInDGROUP, because
...
TFPHashList refuses to add an item with nil pointer data
git-svn-id: trunk@31494 -
2015-09-03 15:14:00 +00:00
nickysn
3b36e3d0b5
* declare segments as use16 or use32 in the nasm asm writer
...
git-svn-id: trunk@31493 -
2015-09-03 13:57:36 +00:00
nickysn
672ff1d863
* fixed memleak after r31487
...
git-svn-id: trunk@31492 -
2015-09-03 13:40:00 +00:00
nickysn
314b5e5eac
* fixed class name in comment
...
git-svn-id: trunk@31491 -
2015-09-03 13:36:12 +00:00
nickysn
92c831c3dd
* writing of omf section attributes in the NASM asm writer rewritten to use the
...
new functions in unit omfbase (also used by the internal asm)
git-svn-id: trunk@31487 -
2015-09-03 13:32:17 +00:00
nickysn
4061628ffb
* the i8086-msdos default code segment (in near code memory models) renamed
...
'_TEXT'. This name is used in object modules, produced by Borland C and Open
Watcom.
git-svn-id: trunk@31482 -
2015-09-02 13:14:12 +00:00
nickysn
1a8e203bf5
* moved the omf section names constant to the omfbase unit and use it also in
...
the nasm asm writer when targeting i8086-msdos
git-svn-id: trunk@31481 -
2015-09-02 12:28:46 +00:00
florian
c9b1df2c91
* the test $-1,%reg optimization shall be done not only if the cpu type is i386, but for the i386 compiler
...
git-svn-id: trunk@31474 -
2015-08-31 20:03:56 +00:00
Jonas Maebe
0d74e4f719
* changed paratargetdbg from a global variable into a field of toption
...
git-svn-id: trunk@31443 -
2015-08-28 22:31:17 +00:00
Jonas Maebe
0fc1fd6ac1
* replaced current_procinfo.currtrue/falselabel with storing the true/false
...
labels of LOC_JUMP in the node's location. This generates some extra jumps
for short circuit boolean and/or-expressions if optimizations are off, but
with optimisations enabled the generated code is the same (except for JVM
because the jump threading optimisation isn't enabled there yet).
git-svn-id: trunk@31431 -
2015-08-27 18:28:57 +00:00
nickysn
e9c790f4eb
+ support 'SEG' in the i8086 inline assembler
...
git-svn-id: trunk@31428 -
2015-08-26 15:57:44 +00:00
nickysn
5dc42404cf
* capitalize omf segment class names, as that's how other 16-bit compilers write them
...
git-svn-id: trunk@31371 -
2015-08-22 19:07:04 +00:00
nickysn
e09ab50724
* capitalize the group name 'DGROUP' in the generated omf object files, because
...
that's how it is usually written by other 16-bit compilers
git-svn-id: trunk@31369 -
2015-08-22 16:28:36 +00:00
Jonas Maebe
5d15a28e75
- reverted workaround from r15939 that hasn't been necessary since FPC 2.6.0,
...
since that version already shiped with GNU AS 2.21 (mantis #17337 )
git-svn-id: trunk@31196 -
2015-07-06 08:05:37 +00:00
Jonas Maebe
1bcc276dcf
* remove implicit typecast to extended automatically inserted for trunc/round
...
(due to the declaration in the system unit) on x86_64 if this allows us
to use SSE code instead (mantis #28366 )
git-svn-id: trunk@31192 -
2015-07-03 21:01:18 +00:00
Károly Balogh
7ca62febcd
AROS/x86_64: initial AROS/x86_64 support and implement syscalls for AROS/x86_64
...
git-svn-id: trunk@31169 -
2015-06-28 19:16:40 +00:00
Jonas Maebe
b21610050f
* don't store reusable defs based on other defs from localsymtables into the
...
static/globalsymtable. The static/global symtable is stored to the PPU
while the localsymtables are not, which means we get dangling references
when reloading such defs from the ppu afterwards
git-svn-id: trunk@31149 -
2015-06-23 21:23:25 +00:00
Jonas Maebe
f402b0d7df
* changed getpointerdef() into a tpointerdef.getreusable() class method
...
o allows removing the ugly x86 hacks
git-svn-id: trunk@31144 -
2015-06-22 08:17:49 +00:00
nickysn
0da38dbc79
+ implemented support for the 'dgroup' (addr_dgroup) relocation type in the omf
...
internal object writer
git-svn-id: trunk@30800 -
2015-05-04 17:07:19 +00:00
nickysn
778a678956
* use a 4 byte alignment for the dwarf debug sections on i8086 (not sure if
...
that's correct for 16-bit dwarf, but currently the compiler emits 4-byte
tai_aligns, so setting the section alignment to 4 avoids problems in the
internal object writer)
git-svn-id: trunk@30685 -
2015-04-20 13:15:26 +00:00
nickysn
5a1ce6162b
* set the bss, rodata and rodata_norel section alignment to 2 bytes for the i8086-msdos target
...
git-svn-id: trunk@30680 -
2015-04-20 01:27:26 +00:00
nickysn
a6e39edb8f
* moved the insertion of fwaits for 8087 from the nasm asm writer to ti8086procinfo.postprocess_code
...
git-svn-id: trunk@30634 -
2015-04-17 23:27:03 +00:00
nickysn
5c8965fea5
* in the inline asm reader, treat [var] reference as "word" instead of "dword"
...
when "var" is of dword size. This fixes spurious generation of a $66 prefix
and makes the code consistent with what Tx86Operand.SetSize does (and what is
then used for checking the operand sizes of all operands of the instruction in
Tx86Instruction.CheckOperandSizes).
git-svn-id: trunk@30629 -
2015-04-17 19:58:06 +00:00
nickysn
3b5395e0e3
* set 16-bit opsize for OPR_SYMBOL operands on i8086
...
git-svn-id: trunk@30626 -
2015-04-17 19:10:13 +00:00
nickysn
c3515f743f
* generate 16-bit (instead of 32-bit) instructions for push/pop of a segment
...
register in an inline asm block on i8086
git-svn-id: trunk@30616 -
2015-04-17 00:51:00 +00:00
Jonas Maebe
3be51e1455
* fixed endless recursion in tabstractrecorddef.contains_float_field() in
...
case a record contains an internal typed constant of its own type
(which happened becuase such a typed constant is also fieldvarsym, solved
by checking for sp_static) (mantis #27880 )
* fixed several other similar cases in the compiler where we are only
interested in instance fields, but processed all fieldvarsyms
git-svn-id: trunk@30614 -
2015-04-16 21:25:22 +00:00
nickysn
25a834087e
+ choose the correct version of "Jcc near" to use on i8086 (386+ or 8086+)
...
depending on the specified target cpu type
+ support the \60..\62 magic codes on i8086 in the internal asm writer
git-svn-id: trunk@30613 -
2015-04-16 19:49:22 +00:00
nickysn
2cf6852910
+ added i8086 instruction entries for Jcc near (which is actually a 386+
...
instruction), that encode it as two i8086 compatible instructions:
JNcc short +3
JMP near target
git-svn-id: trunk@30612 -
2015-04-16 17:07:07 +00:00
nickysn
bfd5670cc8
+ support new magic code \23 in the internal asm writer - same as \13, but with
...
the condition inverted; this will be used to simulate near conditional jumps
on processors earlier than 386 (i.e. "Jcc near target" will be encoded as
"JNcc short +3; JMP target")
git-svn-id: trunk@30611 -
2015-04-16 16:53:48 +00:00
nickysn
955c29618a
+ support far calls and jumps in the internal asm writer
...
git-svn-id: trunk@30601 -
2015-04-15 00:12:40 +00:00
nickysn
a7e059c875
+ support segment relocations in the omf writer
...
git-svn-id: trunk@30600 -
2015-04-14 22:46:01 +00:00
nickysn
f5ddd351fe
* allow use of the imm8 form of 16-bit instructions on i8086
...
git-svn-id: trunk@30594 -
2015-04-14 19:14:47 +00:00
nickysn
bd460eec43
* emit 16-bit addresses on i8086 for asm codes &64..&66 in the internal asm
...
git-svn-id: trunk@30580 -
2015-04-13 22:13:15 +00:00
nickysn
22fb1a3e7e
* converted all the magic nasm codes in the x86 internal asm writer from decimal
...
to octal in the compiler source, so they match the strings in x86ins.dat
git-svn-id: trunk@30566 -
2015-04-13 01:13:39 +00:00
nickysn
fe30b53e95
* use 16-bit operand types for call/jmp immediate on i8086 in taicpu.create_ot
...
git-svn-id: trunk@30563 -
2015-04-12 23:53:15 +00:00
nickysn
a25a906d56
* i8086 internal asm fixes for the 0324 and 0361 asm codes
...
git-svn-id: trunk@30562 -
2015-04-12 22:56:28 +00:00
nickysn
fd9e0d7266
* i8086 binary writer fixes for asm codes 0320..0322
...
git-svn-id: trunk@30526 -
2015-04-09 23:10:47 +00:00