nickysn
|
1e8b192b3d
|
* support far references in second_cmp32bit for i8086
git-svn-id: trunk@24736 -
|
2013-06-01 17:51:18 +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
|
10b3ce1ba5
|
* fixed an opsize bug in ti8086addnode.second_add64bit, which caused 32-bit instructions to be emitted
git-svn-id: trunk@24670 -
|
2013-05-31 17:13:38 +00:00 |
|
nickysn
|
c271594b4f
|
+ optimized implementation of 32-bit OP_SHL,OP_SHR and OP_SAR in tcg8086.a_op_const_reg
git-svn-id: trunk@24660 -
|
2013-05-31 11:03:36 +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 |
|
nickysn
|
06838be452
|
* fixed bug when passing a 'single' floating point type parameter via tcg8086.a_load_ref_cgpara
git-svn-id: trunk@24592 -
|
2013-05-25 13:37:24 +00:00 |
|
nickysn
|
27adafeecb
|
+ support moving from a shorter unsigned (sign extension not yet implemented) to a longer type in tcg8086.a_load_reg_ref
git-svn-id: trunk@24589 -
|
2013-05-25 12:05:02 +00:00 |
|
nickysn
|
3aeea835f9
|
+ int register in treference.segment support in tcg8086.op_*ref*
git-svn-id: trunk@24586 -
|
2013-05-24 19:57:02 +00:00 |
|
florian
|
c1a1325a72
|
* reduce register pressure by allocating/deallocating registers as late/early as possible
git-svn-id: trunk@24581 -
|
2013-05-24 18:09:15 +00:00 |
|
nickysn
|
a308994423
|
* i8086 specific code from tcgpointerconstnode.pass_generate_code moved to an i8086 specific overriden method
git-svn-id: trunk@24577 -
|
2013-05-24 17:16:55 +00:00 |
|
nickysn
|
8b1e621665
|
* segment in int register support added also to tcg8086.a_load_reg_ref and .a_load_ref_reg
git-svn-id: trunk@24570 -
|
2013-05-24 14:46:40 +00:00 |
|
nickysn
|
9171c19601
|
* support int register in treference.segment in tcg8086.a_load_const_ref; this fixes farptr^:=const
git-svn-id: trunk@24569 -
|
2013-05-24 13:36:22 +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
|
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
|
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
|
d433408a7d
|
-rm BX from i8086's saved_stadard_registers array, as it interferes with returning int64 in ax:bx:cx:dx and it shouldn't be saved anyway
git-svn-id: trunk@24501 -
|
2013-05-14 22:32:02 +00:00 |
|
nickysn
|
8fea00d8f5
|
- rm NR_PIC_OFFSET_REG from i8086/cpubase.inc, because it isn't used (and shouldn't be used) on the i8086
git-svn-id: trunk@24500 -
|
2013-05-14 22:22:24 +00:00 |
|
nickysn
|
2557382815
|
- rm tcg8086.g_maybe_got_init as it's of no use for the i8086
git-svn-id: trunk@24499 -
|
2013-05-14 22:20:04 +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
|
c4dd85a0eb
|
+ implemented tcg8086.a_op_reg_ref
git-svn-id: trunk@24474 -
|
2013-05-08 11:49:39 +00:00 |
|
nickysn
|
85b98671bd
|
+ implemented tcg8086.a_op_const_ref for op_add/and/or/sub/xor/move/none; this fixes inc(longint) among other things
git-svn-id: trunk@24473 -
|
2013-05-08 08:23:46 +00:00 |
|
nickysn
|
2d67a3169d
|
* i8086 fixes in tcg8086.g_copyvaluepara_openarray
git-svn-id: trunk@24467 -
|
2013-05-07 22:34:26 +00:00 |
|
nickysn
|
502c2ffb94
|
* fixed tcg8086.a_load_reg_reg when doing an unsigned extension in the same superregister; this fixes the taddbool test
git-svn-id: trunk@24466 -
|
2013-05-07 21:20:40 +00:00 |
|
nickysn
|
5a4a3cbbc3
|
+ implemented tcg8086.a_op_ref_reg; supports op_add/sub/xor/or/and
git-svn-id: trunk@24464 -
|
2013-05-07 19:19:55 +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
|
4527fe8fa2
|
+ added 8086 workaround for the 'imul reg,const' 186+ instruction. The compiler can now generate strict 8086/8088 code.
git-svn-id: trunk@24404 -
|
2013-05-01 19:18:12 +00:00 |
|
florian
|
19c8abac0b
|
+ enable jump optimizer for i8086
git-svn-id: trunk@24400 -
|
2013-05-01 13:54:13 +00:00 |
|
nickysn
|
8fddb1361b
|
* got rid of push const also in tcg8086.a_loadaddr_ref_cgpara
git-svn-id: trunk@24384 -
|
2013-04-29 23:13:09 +00:00 |
|
nickysn
|
cfc3c6ec5d
|
- cleanup tcg8086.a_loadaddr_ref_cgpara from unused code left over from i386
git-svn-id: trunk@24383 -
|
2013-04-29 23:08:12 +00:00 |
|
nickysn
|
76e3dd5cef
|
* do not generate push const on the i8086, go through a register instead, unless it's 186+
git-svn-id: trunk@24381 -
|
2013-04-29 22:29:26 +00:00 |
|
nickysn
|
06f1b6a4e8
|
* moved the i8086 'push const' instructions to a new method, so they can be abstracted on pre-186 processors
git-svn-id: trunk@24380 -
|
2013-04-29 21:53:55 +00:00 |
|
nickysn
|
7c0679efdb
|
* use the 'leave' instruction on 80186+
git-svn-id: trunk@24378 -
|
2013-04-29 19:45:39 +00:00 |
|
nickysn
|
3853d06ac0
|
+ added n8086cal.pas, based on n386cal.pas; this pulls in nx86cal.pas as well and fixes compilation of the system unit on i8086 after the merge of the i8086 branch to trunk
git-svn-id: trunk@24335 -
|
2013-04-26 20:19:57 +00:00 |
|
nickysn
|
28c05c1ed5
|
* document the fact that ti8086paramanager.getintparaloc allocates a 16-bit parameter, and not a 32-bit one
git-svn-id: branches/i8086@24255 -
|
2013-04-15 22:08:11 +00:00 |
|
nickysn
|
8ce2f0c56b
|
- rm the i386 specific code from ti8086paramanager.ret_in_param
git-svn-id: branches/i8086@24239 -
|
2013-04-14 14:43:42 +00:00 |
|
nickysn
|
c916105db8
|
- rm ti8086procinfo.allocate_got_register as it isn't used on the i8086
git-svn-id: branches/i8086@24238 -
|
2013-04-14 14:35:51 +00:00 |
|
nickysn
|
97ca0fa323
|
- removed ti8086inlinenode.second_round_real, second_trunc_real and load_fpu_location as they mostly repeat the code in tx86inlinenode.load_fpu_location; tx86inlinenode.load_fpu_location adapted for i8086 instead
git-svn-id: branches/i8086@24237 -
|
2013-04-14 14:25:22 +00:00 |
|
nickysn
|
107a6f6552
|
* i8086 versions of i386*.inc and r386*.inc renamed to i8086*.inc and r8086*.inc
git-svn-id: branches/i8086@24232 -
|
2013-04-12 12:06:28 +00:00 |
|
nickysn
|
4d8adbf5ff
|
+ implemented Seg() for i8086 (small/tiny memory model)
git-svn-id: branches/i8086@24071 -
|
2013-03-30 13:04:58 +00:00 |
|
nickysn
|
af5614e52d
|
* i8086 parameter alignment fixes
git-svn-id: branches/i8086@23978 -
|
2013-03-24 20:15:39 +00:00 |
|
nickysn
|
7b9fd7b9f4
|
* instruction size fixes in tcg8086.g_intf_wrapper
git-svn-id: branches/i8086@23925 -
|
2013-03-18 13:07:05 +00:00 |
|
nickysn
|
c4cee15481
|
* bug fix in tcg8086.a_load_reg_reg for loading larger register to a smaller one
git-svn-id: branches/i8086@23914 -
|
2013-03-18 01:03:37 +00:00 |
|
nickysn
|
43dba74a5c
|
+ implemented 64-bit shl and shr for i8086
git-svn-id: branches/i8086@23882 -
|
2013-03-17 02:11:25 +00:00 |
|
florian
|
636129ed8c
|
* fix interface wrapper generation for i8086
git-svn-id: branches/i8086@23873 -
|
2013-03-16 19:57:36 +00:00 |
|
nickysn
|
5dd5add67a
|
* proper implementation of ti8086addnode.second_cmp64bit
git-svn-id: branches/i8086@23871 -
|
2013-03-16 19:01:15 +00:00 |
|
nickysn
|
56d2830beb
|
+ implemented 32-bit comparisons on the i8086
git-svn-id: branches/i8086@23870 -
|
2013-03-16 18:13:11 +00:00 |
|
florian
|
edd4c1ce4b
|
* proper fix to avoid sp relative adressing as r23867 tries
git-svn-id: branches/i8086@23868 -
|
2013-03-16 16:51:31 +00:00 |
|
nickysn
|
01106a0968
|
* support stack relative addresses in a_loadfpu_reg_ref on the i8086
git-svn-id: branches/i8086@23867 -
|
2013-03-16 16:05:38 +00:00 |
|
nickysn
|
f4b5b4ce0f
|
* implemented Trunc() and Round() for i8086
git-svn-id: branches/i8086@23852 -
|
2013-03-16 03:34:23 +00:00 |
|
nickysn
|
a66f7b61c6
|
* disable ret_in_param for floats, as they can be returned in a floating point register, and because enabling ret_in_param for them screws up badly the internprocs that handle floats
git-svn-id: branches/i8086@23840 -
|
2013-03-15 01:12:00 +00:00 |
|
nickysn
|
e95d22d0f8
|
+ added ti8086inlinenode
git-svn-id: branches/i8086@23833 -
|
2013-03-14 15:15:32 +00:00 |
|
nickysn
|
44ce37369e
|
* support 32-bit parameters that have a pair of two 16-bit locations in tcg8086.a_load_reg_cgpara
git-svn-id: branches/i8086@23825 -
|
2013-03-14 13:07:06 +00:00 |
|
nickysn
|
e956ffc27b
|
* bug fix in the 32-bit parameters handling in tcg8086.a_load_const_cgpara
git-svn-id: branches/i8086@23824 -
|
2013-03-14 12:19:06 +00:00 |
|
nickysn
|
c438f3b53a
|
* 386 changed to 8086 in various class names and comments
git-svn-id: branches/i8086@23813 -
|
2013-03-12 23:22:52 +00:00 |
|
nickysn
|
ea282ab4b3
|
* many int64 fixes
git-svn-id: branches/i8086@23812 -
|
2013-03-12 23:18:36 +00:00 |
|
nickysn
|
79f43c22e9
|
* fixed passing of int64 constants as parameters
git-svn-id: branches/i8086@23811 -
|
2013-03-12 18:04:38 +00:00 |
|
nickysn
|
d0c43f50f0
|
* fixed ti8086addnode.second_add64bit
git-svn-id: branches/i8086@23809 -
|
2013-03-12 16:25:44 +00:00 |
|
nickysn
|
8645d8e6cb
|
* fixed implementation of a_op64_reg_reg for i8086
git-svn-id: branches/i8086@23808 -
|
2013-03-12 16:24:28 +00:00 |
|
nickysn
|
4ea86a445e
|
* fixed functions returning int64 on i8086
git-svn-id: branches/i8086@23807 -
|
2013-03-12 15:09:24 +00:00 |
|
nickysn
|
19cbff220e
|
+ added unit n8086mat, based on n386mat; TODO: adapt to i8086
git-svn-id: branches/i8086@23805 -
|
2013-03-12 14:30:26 +00:00 |
|
nickysn
|
8d2b7df6d6
|
* fixed functions returning longint on i8086
git-svn-id: branches/i8086@23803 -
|
2013-03-12 13:35:19 +00:00 |
|
nickysn
|
2872fb95b5
|
* i8086 multiplication fixes; 16-bit multiplication now works; 32-bit still doesn't
git-svn-id: branches/i8086@23795 -
|
2013-03-11 22:31:17 +00:00 |
|
nickysn
|
ee005a9c1b
|
- rm forgotten debug writeln
git-svn-id: branches/i8086@23792 -
|
2013-03-11 20:41:09 +00:00 |
|
nickysn
|
78cf362a90
|
* fixed passing of constant longint parameters
git-svn-id: branches/i8086@23788 -
|
2013-03-11 01:08:59 +00:00 |
|
florian
|
b321f867c6
|
+ trgintcpu.add_cpu_interferences for i8086 so references are properly build
* empty make_simple_ref code path for i8086
git-svn-id: branches/i8086@23782 -
|
2013-03-10 18:51:42 +00:00 |
|
nickysn
|
7d883e7d52
|
implemented tcg8086.g_flags2reg and g_flags2ref
git-svn-id: branches/i8086@23764 -
|
2013-03-09 23:45:42 +00:00 |
|
nickysn
|
8d346d162b
|
added n8086add.pas (copy of n386add.pas), TODO: adapt to i8086
git-svn-id: branches/i8086@23762 -
|
2013-03-09 23:17:23 +00:00 |
|
nickysn
|
e2ba9f14e1
|
initial implementation of tcg8086.a_op_const_reg; supports 32-bit add, sub, and, or, xor
git-svn-id: branches/i8086@23759 -
|
2013-03-09 21:07:43 +00:00 |
|
nickysn
|
1937ef8300
|
implemented OP_SHL, OP_SHR and OP_SAR in tcg8086.a_op_reg_reg
git-svn-id: branches/i8086@23751 -
|
2013-03-09 17:14:00 +00:00 |
|
nickysn
|
54d804d06e
|
implemented tcg8086.a_op_reg_reg with support for 32-bit neg,not,add,sub,and,or and xor
git-svn-id: branches/i8086@23742 -
|
2013-03-09 12:28:48 +00:00 |
|
nickysn
|
a3295bd520
|
use ncgadd in cpunode
git-svn-id: branches/i8086@23736 -
|
2013-03-09 00:03:15 +00:00 |
|
nickysn
|
eff0894a66
|
all the extra i8086 units added
git-svn-id: branches/i8086@23718 -
|
2013-03-08 00:04:45 +00:00 |
|
nickysn
|
0684e783ae
|
added the files autogenerated from x86ins.dat; TODO: these are shared with i386, so move them to a common directory
git-svn-id: branches/i8086@23717 -
|
2013-03-07 23:34:07 +00:00 |
|
nickysn
|
6fb9e3cfa5
|
the basic i8086 units: cpuinfo and cpubase
git-svn-id: branches/i8086@23716 -
|
2013-03-07 23:09:03 +00:00 |
|