Commit Graph

869 Commits

Author SHA1 Message Date
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
62316da236 * a_call_reg moved to a_call_reg_near
git-svn-id: trunk@24855 -
2013-06-09 22:09:39 +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
ec497ae11e + the regular tcgx86.a_call_name and .a_call_name_static moved to .a_call_name_near and .a_call_name_static_near, because a_call_name and a_call_name_static are going to be overriden in tcg8086
git-svn-id: trunk@24827 -
2013-06-09 10:42:39 +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
90ecd72286 * x86_64 compilation fixed after r24752
git-svn-id: trunk@24755 -
2013-06-01 22:38:07 +00:00
nickysn
ec76b2cf40 * refactored the segment-in-integer-register reference support, so it's handled in make_simple_ref, instead of all over the place in the code generator
git-svn-id: trunk@24752 -
2013-06-01 22:18:09 +00:00
Jonas Maebe
2dd75e707e * renamed thlcgobj.tcgsize2orddef to defutil.cgsize_orddef
git-svn-id: trunk@24743 -
2013-06-01 18:28:15 +00:00
nickysn
525246f61b * support i8086 far references in tx86addnode.emit_op_right_left
git-svn-id: trunk@24737 -
2013-06-01 17:51:58 +00:00
nickysn
c9c882c30a * always use 16-bit pushes for pushing/popping the segment registers on i8086 in Tcgx86.g_concatcopy
git-svn-id: trunk@24735 -
2013-06-01 17:49:49 +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
Jonas Maebe
5051453806 + support for LOC_(C)MMREGISTER in hlcg
o migrated location_force_mmregister_scalar from ncgutil to hlcgobj

git-svn-id: trunk@24661 -
2013-05-31 12:05:14 +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
nickysn
125a6a8720 * register id of (e)flags changed, so it doesn't overlap with dr0
git-svn-id: trunk@24647 -
2013-05-30 16:40:59 +00:00
Jonas Maebe
d6180b1e70 * properly propagate PIC-related suffixes from the x86 assembler reader in
case the operand was parsed as a symbol

git-svn-id: trunk@24638 -
2013-05-30 12:20:48 +00:00
nickysn
1797c8b803 * i8086 fixes for the handling of large sets in tx86innode.pass_generate_code; test/cg/tin.pp works now
git-svn-id: trunk@24634 -
2013-05-30 10:16:05 +00:00
nickysn
de345ac191 * added missing setbase fixup in tx86innode.pass_generate_code for the case of LOC_CONSTANT in LOC_REFERENCE for large sets
git-svn-id: trunk@24619 -
2013-05-26 10:53:42 +00:00
nickysn
533bd30094 * some more i8086 bug fixes in tx86innode.pass_generate_code
git-svn-id: trunk@24618 -
2013-05-26 09:08:28 +00:00
nickysn
967e10ea95 * i8086 fixes in tx86innode.pass_generate_code
git-svn-id: trunk@24617 -
2013-05-25 22:46:50 +00:00
nickysn
f3ad9ce9ce * i8086 fixes in tx86typeconvnode.second_int_to_bool; this fixes tcnvint2.pp
git-svn-id: trunk@24615 -
2013-05-25 21:19:55 +00:00
nickysn
b43c4c4aca * i8086 fixes in tx86typeconvnode.second_int_to_real
git-svn-id: trunk@24606 -
2013-05-25 16:37:41 +00:00
nickysn
2b583bb265 * do not use fsin and fcos on 286-, since they're 387+
git-svn-id: trunk@24596 -
2013-05-25 15:24:53 +00:00
nickysn
09249b31b8 * use the generic implementation of second_IncludeExclude in case the cpu is earlier than 386, since then it does not support BTR and BTS
git-svn-id: trunk@24593 -
2013-05-25 14:18:55 +00:00
florian
2ec15deaba * more readable register allocation comments
git-svn-id: trunk@24585 -
2013-05-24 19:03:50 +00:00
nickysn
fd429612f8 + initial (and not yet fully complete) implementation of far pointers on the i8086
git-svn-id: trunk@24553 -
2013-05-22 16:26:33 +00:00
nickysn
f571aebdd0 * tx86pointertyp moved from unit symdef to symconst, so it can be used by ppudump
git-svn-id: trunk@24547 -
2013-05-21 14:18:48 +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
ecb5a4866d * refactored the int64 result passing in ax:bx:cx:dx to use 4 paralocs, instead of the GetNextReg hack
git-svn-id: trunk@24527 -
2013-05-19 12:50:15 +00:00
nickysn
9f0c23bd4c * fixed round() on i8086 after r24502
git-svn-id: trunk@24503 -
2013-05-15 00:45:08 +00:00
nickysn
3665ed4b03 + enabled returning int64 in ax:bx:cx:dx for the i8086
git-svn-id: trunk@24502 -
2013-05-14 22:45:57 +00:00
nickysn
6b2f59c3e0 + preparations for returning int64 in ax:bx:cx:dx on i8086
git-svn-id: trunk@24498 -
2013-05-14 22:19:17 +00:00
nickysn
e2cd2813ce + stop with an internal error if GetNextReg is called with a non-imaginary register
git-svn-id: trunk@24493 -
2013-05-13 22:34:13 +00:00
nickysn
92afd7cccd + R_SUBH support added in x86/aasmcpu.spilling_create_load and spilling_create_store
git-svn-id: trunk@24477 -
2013-05-09 14:10:45 +00:00
nickysn
2a9d38d878 + proper spilling support for R_SUBH (i.e. AH,BH,CH,DH) x86 registers in trgx86.do_spill_replace
git-svn-id: trunk@24476 -
2013-05-09 11:57:00 +00:00
nickysn
0a8e008a0d + the ES register made volatile on i8086 as per the 16-bit x86 calling conventions
git-svn-id: trunk@24462 -
2013-05-07 14:27:21 +00:00
nickysn
b0f7786782 + added support for special versions of near data pointers associated with a x86 segment register. They are supported on all x86 platforms: i8086, i386 and x86_64
git-svn-id: trunk@24453 -
2013-05-05 17:22:37 +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
4c95592e08 * don't use 'fnstsw ax' if the current cpu level is below 286
git-svn-id: trunk@24401 -
2013-05-01 15:42:02 +00:00
nickysn
e4f3dd1264 * do not emit shl/shr with a const different than 1 on 8086
git-svn-id: trunk@24382 -
2013-04-29 23:02:09 +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
florian
0e41df598e * merge i8086 branch by Nikolay Nikolov
git-svn-id: trunk@24324 -
2013-04-25 20:23:51 +00:00
florian
926dd1b41e * command line compilation of i8086 fixed
git-svn-id: branches/i8086@24291 -
2013-04-21 18:32:09 +00:00