nickysn
efb3cfcbc7
- don't write the default unit code section in the beginning of each asm file,
...
when using {$hugecode on}, to avoid bogus nasm warnings
git-svn-id: trunk@27623 -
2014-04-21 01:02:21 +00:00
nickysn
597f110eb9
+ added support for units with code larger than 64kb in the far code i8086
...
memory models. Enabled by the new directive {$hugecode on}. The directive is
ignored in the near code memory models. When enabled, it forces each procedure
to be in a separate segment and disables mixing near and far procedures (so
'near' and {$F-} are ignored in this mode). Note that {$hugecode on} does not
count as a different memory model, because you can freely link modules (units)
compiled with {$hugecode on} and {$hugecode off}.
git-svn-id: trunk@27615 -
2014-04-20 19:03:14 +00:00
florian
6fd98d604a
* compilation fixed
...
git-svn-id: trunk@27565 -
2014-04-13 19:21:57 +00:00
pierre
816dfa69c1
Avoid new line after lock prefix for nasm
...
git-svn-id: trunk@27511 -
2014-04-10 14:56:30 +00:00
pierre
e0744b9759
Fix section output for user section in smart mode
...
git-svn-id: trunk@27510 -
2014-04-10 14:18:48 +00:00
nickysn
17a8c03e41
* declare the group dgroup even in i8086 far data memory models
...
git-svn-id: trunk@27348 -
2014-03-29 19:35:54 +00:00
Jonas Maebe
80863a8361
* fixed warning/compilation
...
git-svn-id: trunk@27166 -
2014-03-16 19:46:10 +00:00
sergei
9c54cdc85d
* x86: Cleaned out addr_far,addr_far_ref used to encode far calls/jumps. NASM (and FPC x86 assembler based on it) already have opsize=S_FAR for this purpose.
...
git-svn-id: trunk@27037 -
2014-03-08 22:54:43 +00:00
sergei
f69e6ec389
* Some fixes to NASM writer:
...
* Correctly output names of sec_user sections and sec_threadvar on Windows targets
* Use ALIGNB directive to align without warnings in bss and alike sections.
* Do not output 'begin/end asmlist x' for empty asmlists.
git-svn-id: trunk@26898 -
2014-02-27 13:37:03 +00:00
nickysn
c00b56ae49
* added the -w-orphan-labels parameter to all tasminfo instances for nasm.
...
The -w-oprhan-labels option prevents the 'label alone on a line without a
colon might be in error' warning.
git-svn-id: trunk@26889 -
2014-02-26 20:54:38 +00:00
pierre
045f161012
Separate out nasm assembler for i8086, i386 and x86_64 cpus, also separte based on target object format
...
git-svn-id: trunk@26547 -
2014-01-21 00:26:08 +00:00
nickysn
39c54bf077
* handle ait_varloc in the nasm writer. This allows compiling the system unit
...
for i8086 with regvars and -sr for debugging purposes.
git-svn-id: trunk@26271 -
2013-12-23 13:27:22 +00:00
nickysn
2d45ea43af
* use the 'wait' prefix (on the same line as the instruction), instead of
...
'db 09bh' (on the previous line) for the fwait prefixed 8087 instructions in
the nasm assembly output, because it looks prettier this way :)
git-svn-id: trunk@26185 -
2013-12-05 21:31:16 +00:00
nickysn
0020a2ed10
+ when targeting the i8087, emit FWAIT prefix manually for the 8087 instructions
...
that require it in the NASM asm writer, since NASM doesn't do it itself.
git-svn-id: trunk@26107 -
2013-11-19 01:26:57 +00:00
nickysn
9f979eb5c6
* put the i8086-msdos dwarf debug sections in USE32 class=DWARF segments because
...
wlink wants them this way
git-svn-id: trunk@25873 -
2013-10-27 20:28:43 +00:00
nickysn
e6a4435330
+ support the aitconst_XXbit_unaligned const types in the NASM asm writer. This
...
fixes DWARF support when using NASM.
git-svn-id: trunk@25866 -
2013-10-27 15:21:30 +00:00
nickysn
661e11ecb8
* on i8086 added section .fpc to the group 'dgroup'. This fixes a bug that caused the bss section to not be left out from the executable in tiny model, which caused, ironically, tiny model executables to be larger than the small model executables
...
git-svn-id: trunk@25525 -
2013-09-21 11:28:01 +00:00
nickysn
f9d0caa7c7
* pass the option -w-orphan-labels to nasm to avoid the spurious warnings about labels without a trailing colon and without an instruction on the same line
...
git-svn-id: trunk@25358 -
2013-08-23 23:40:24 +00:00
nickysn
511b1f37c1
* write the segment of aitconst_farptr on a separate line to avoid long symbol truncation, due to line length limit; this fixes compilation of sysutils in the medium memory model
...
git-svn-id: trunk@24879 -
2013-06-12 01:32:18 +00:00
nickysn
9dbbffba61
+ added trefaddr.addr_seg for referencing the segment of a symbol
...
git-svn-id: trunk@24859 -
2013-06-10 01:16:37 +00:00
nickysn
e4a1230356
+ added support for far pointer constants in the assembly output
...
git-svn-id: trunk@24854 -
2013-06-09 22:01:04 +00:00
nickysn
604b7c9deb
+ added cg.a_call_ref_near and a_call_ref_far
...
git-svn-id: trunk@24853 -
2013-06-09 20:22:47 +00:00
nickysn
3631198b34
+ declare the text segment with class=code in the nasm header for far code memory models also
...
git-svn-id: trunk@24834 -
2013-06-09 13:01:40 +00:00
nickysn
9a6c242f97
+ emit proper far calls/jmps for addr_far in the nasm assembly output
...
git-svn-id: trunk@24833 -
2013-06-09 12:59:44 +00:00
nickysn
3280514d2b
* in i8086 far code models, put the code in a section called module_name+'_TEXT', so each unit gets a separate code segment
...
git-svn-id: trunk@24831 -
2013-06-09 12:26:33 +00:00
nickysn
b74af9fda0
* declare the text segment with class=code on i8086-msdos
...
git-svn-id: trunk@24830 -
2013-06-09 12:13:52 +00:00
nickysn
2279e51a95
+ added trefaddr.addr_far for emitting far calls
...
git-svn-id: trunk@24826 -
2013-06-09 10:24:06 +00:00
nickysn
b409d600ee
+ implemented the tiny memory model for i8086-msdos; we now produce working dos .com files as well
...
git-svn-id: trunk@24793 -
2013-06-02 23:02:10 +00:00
nickysn
e243b6b869
* never use the 66h prefix when pushing/popping segment registers on i8086, as the stack is aligned on 2 bytes there
...
git-svn-id: trunk@24729 -
2013-06-01 16:03:14 +00:00
nickysn
c2e3fb5918
+ emit proper interrupt procedure entry/exit code on i8086
...
git-svn-id: trunk@24728 -
2013-06-01 15:50:11 +00:00
nickysn
db5573b395
* fixed the nasm assembly output for SAR/SAL with a memory reference
...
git-svn-id: trunk@24656 -
2013-05-31 08:21:42 +00:00
florian
2ec15deaba
* more readable register allocation comments
...
git-svn-id: trunk@24585 -
2013-05-24 19:03:50 +00:00
nickysn
b9084a22ca
* in the nasm writer only declare labels as global if they have labsym.bind=AB_GLOBAL; this fixes compilation of i8086-msdos programs that use multiple units
...
git-svn-id: trunk@24529 -
2013-05-19 17:51:29 +00:00
nickysn
fe275c4f47
* set nasm cpu type according to the current cpu level set by -Cp
...
git-svn-id: trunk@24402 -
2013-05-01 15:47:23 +00:00
nickysn
99d3b453a4
* got rid of the i8086 nasm warning 'segment attributes specified on redeclaration of segment'
...
git-svn-id: trunk@24336 -
2013-04-26 22:17:42 +00:00
nickysn
fef3732884
* i8086 compilation fixes
...
git-svn-id: branches/i8086@24244 -
2013-04-14 16:34:02 +00:00
nickysn
c3aaa37c0c
* fixed a bug which caused non commutative fpu instructions to be wrong when using an intel-style external assembler and compiling a smartlinked unit
...
git-svn-id: branches/i8086@24151 -
2013-04-04 20:17:50 +00:00
nickysn
324b4a8a0a
* declare the .bss sections with class=bss, so wlink treats them as bss sections and leaves them out of the executable
...
git-svn-id: branches/i8086@24064 -
2013-03-30 00:49:11 +00:00
nickysn
e16e08b2b6
+ added CPU 286 nasm directive to the i8086 assembly output in order to catch 386+ instructions; the RTL now compiles without generating any 386+ instructions
...
git-svn-id: branches/i8086@24010 -
2013-03-26 00:57:38 +00:00
nickysn
eefc9eed90
* do not use 'NEAR' conditional jumps on the i8086, because they are 386+
...
git-svn-id: branches/i8086@23993 -
2013-03-25 00:24:35 +00:00
nickysn
1646f53d59
* fixed the 'unresolved externals' linker error when smartlinking msdos executables
...
git-svn-id: branches/i8086@23968 -
2013-03-23 00:47:12 +00:00
nickysn
c467035a1c
added group directive, so that the .data, .rodata and .bss sections go to the same segment
...
git-svn-id: branches/i8086@23754 -
2013-03-09 18:30:11 +00:00
nickysn
4440015db3
added i8086 specific adaptations to the NASM assembly writer
...
git-svn-id: branches/i8086@23714 -
2013-03-07 22:51:42 +00:00
Jonas Maebe
6497d3c994
- removed no longer used/supported af_allowdirect flag (direct assembler
...
reader support)
git-svn-id: trunk@22794 -
2012-10-21 13:42:58 +00:00
florian
3733a000a4
* fix compilation with -dextdebug
...
git-svn-id: trunk@21716 -
2012-06-26 17:22:09 +00:00
Jonas Maebe
14cfe770a4
* replaced most (if not all) remaining fields/parameters in the compiler
...
that deal with paths/filenames with TPathStr (= ansistring) to prevent
cutting off long paths (no change in speed when compiling the compiler,
1% extra memory usage)
git-svn-id: trunk@21120 -
2012-04-29 17:36:23 +00:00
Jonas Maebe
ac43eb9b70
+ generic implementation of ReplaceForbiddenAsmSymbolChars() instead
...
of the AVR-specific ifdef'ed variant
o since the only special character we use in mangled names on all platforms
is $, added a new field to tasminfo called "dollarsign" that holds the
character $'s should be replaced with (if it doesn't have to be replaced,
leave it at $)
git-svn-id: trunk@20801 -
2012-04-11 18:01:57 +00:00
Jonas Maebe
aaf6015b51
* converted tai directive string from pshortstring to ansistring (some
...
AIX directives are quite long)
git-svn-id: trunk@20799 -
2012-04-11 18:01:41 +00:00
sergei
4c21beb48e
win64 unwinding, misc fixes:
...
* Insert seh_endprologue directive after the last prologue instruction, not before it
* Omit seh_stackalloc for zero bytes
* (For now) ignore SEH directives in NASM and MASM writers, instead of failing with internal error.
git-svn-id: trunk@19246 -
2011-09-26 13:55:21 +00:00
pierre
bafbbe9f0f
* Fix bug report 7210
...
git-svn-id: trunk@18154 -
2011-08-09 15:52:03 +00:00