nickysn
24fcac9f87
+ added support for nested procvars in the i8086 far data memory models
...
git-svn-id: trunk@27812 -
2014-05-22 23:44:09 +00:00
nickysn
feb840b47f
* support reg=NR_NO in thlcgcpu.reference_reset_base on i8086. This fixes test
...
webtbs/tw26162.pp in the i8086 far data memory models.
git-svn-id: trunk@27807 -
2014-05-21 13:26:02 +00:00
nickysn
7da8719036
+ support near pointers, bound to a segment register in hlcg.reference_reset_base
...
on i8086
git-svn-id: trunk@27688 -
2014-04-29 23:15:20 +00:00
nickysn
313240b9e8
* use a better way (suggested by Jonas) to determine whether a procedure is from
...
the same unit
git-svn-id: trunk@27629 -
2014-04-21 23:14:16 +00:00
nickysn
70a7ecd0fa
+ use 'push cs + call near' (which is both shorter and faster), instead of far
...
call, when calling a far proc in the same segment
git-svn-id: trunk@27621 -
2014-04-21 00:44:45 +00:00
nickysn
d8d3706462
+ override hlcg.a_call_name for i8086 and dispatch to the appropriate type of
...
call (near or far), according to whether the procdef is near or far, instead
of relying on the default for the memory model
git-svn-id: trunk@27562 -
2014-04-13 15:17:43 +00:00
nickysn
40a6a9c820
+ added i8086 specific implementation of thlcgcpu.a_load_loc_ref, which handles
...
6-byte method pointers and other i8086 types that use loc.registerhi
* changed the i8086 specific code in tcgassignmentnode.pass_generate_code to
use hlcg.a_load_loc_ref
git-svn-id: trunk@27555 -
2014-04-13 01:38:43 +00:00
nickysn
2e7aab0155
* refactored i8086's thlcgcpu.location_force_mem:
...
o The checks for types that need special handling moved to separate methods,
because they'll probably be used by the other hlcg.a_load*loc* methods as
well.
o Use voidcodepointertype and voidpointertype to avoid the ifs for checking
the memory model.
git-svn-id: trunk@27554 -
2014-04-12 21:59:32 +00:00
nickysn
4e60d2316f
* support implicit pointer types (classes, dynarrays, ansistrings, etc.) in
...
i8086's thlcgcpu.getaddressregister and thlcgcpu.reference_reset_base
git-svn-id: trunk@27333 -
2014-03-29 14:00:24 +00:00
nickysn
ce59c4616f
* assume SS for the segment of references that have BP as base in
...
thlcgcpu.a_loadaddr_ref_reg
git-svn-id: trunk@27332 -
2014-03-29 13:25:11 +00:00
nickysn
ead05754b4
+ implemented hlcg.a_loadaddr_ref_reg for i8086, which uses tosize to determine whether the destination is a far pointer, instead of using the presence of ref.segment
...
git-svn-id: trunk@27321 -
2014-03-28 14:49:43 +00:00
nickysn
26b53607f8
+ added method reference_reset_base with support for different pointer types to
...
the high level code generator. All hlcg code, except for the jvm code
generator, updated to use the new method. I didn't update jvm (it still uses
the method from cgutils), because I'm not familiar with that platform, so I
might get the types wrong.
git-svn-id: trunk@27309 -
2014-03-28 00:01:18 +00:00
nickysn
3cd9cef182
+ added a far pointer aware implementation of hlcg.getaddressregister for i8086.
...
This should allow writing memory model independent code in the FPC code
generator.
git-svn-id: trunk@27274 -
2014-03-25 00:18:32 +00:00
nickysn
039979fdcc
* handle 4-byte records in registers as well in location_force_mem on i8086
...
git-svn-id: trunk@26002 -
2013-11-09 21:57:29 +00:00
nickysn
7e7ab2fd4d
* also handle nested proc ptrs in thlcgcpu.location_force_mem on i8086
...
git-svn-id: trunk@25824 -
2013-10-18 20:09:01 +00:00
nickysn
a5284881f5
+ support 6-byte records in registers in thlcgcpu.location_force_mem on the i8086; this fixes the handling of methodpointers typecasted to record (TMethod) in medium and compact memory models
...
git-svn-id: trunk@25500 -
2013-09-16 16:24:00 +00:00
nickysn
2e97de9522
+ added an i8086 specific override of thlcgcpu.location_force_mem, which handles 6-byte (medium/compact memory model) method pointers
...
git-svn-id: trunk@25151 -
2013-07-20 19:40:27 +00:00
nickysn
eff0894a66
all the extra i8086 units added
...
git-svn-id: branches/i8086@23718 -
2013-03-08 00:04:45 +00:00