mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-12-05 06:47:28 +01:00
* fixed the i8086 g_intf_wrapper after the hlcgllvm branch merge
git-svn-id: trunk@30353 -
This commit is contained in:
parent
003b283e55
commit
0162b199f7
@ -490,7 +490,7 @@ implementation
|
||||
if current_settings.x86memorymodel in x86_far_code_models then
|
||||
inc(selfoffsetfromsp,2);
|
||||
list.concat(taicpu.op_reg_reg(A_mov,S_W,NR_SP,NR_DI));
|
||||
reference_reset_base(href,voidpointertype,NR_DI,selfoffsetfromsp+offs+2,2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_DI,selfoffsetfromsp+offs+2,2);
|
||||
if not segment_regs_equal(NR_SS,NR_DS) then
|
||||
href.segment:=NR_SS;
|
||||
if current_settings.x86memorymodel in x86_near_data_models then
|
||||
@ -511,12 +511,12 @@ implementation
|
||||
{ mov 0(%bx),%bx ; load vmt}
|
||||
if current_settings.x86memorymodel in x86_near_data_models then
|
||||
begin
|
||||
reference_reset_base(href,voidpointertype,NR_BX,0,2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_BX,0,2);
|
||||
cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_BX);
|
||||
end
|
||||
else
|
||||
begin
|
||||
reference_reset_base(href,voidpointertype,NR_BX,0,2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_BX,0,2);
|
||||
href.segment:=NR_ES;
|
||||
list.concat(taicpu.op_ref_reg(A_LES,S_W,href,NR_BX));
|
||||
end;
|
||||
@ -537,12 +537,12 @@ implementation
|
||||
if current_settings.x86memorymodel in x86_far_code_models then
|
||||
begin
|
||||
{ mov vmtseg(%bx),%si ; method seg }
|
||||
reference_reset_base(href,voidpointertype,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber)+2,2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber)+2,2);
|
||||
href.segment:=srcseg;
|
||||
cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_SI);
|
||||
end;
|
||||
{ mov vmtoffs(%bx),%bx ; method offs }
|
||||
reference_reset_base(href,voidpointertype,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_BX,tobjectdef(procdef.struct).vmtmethodoffset(procdef.extnumber),2);
|
||||
href.segment:=srcseg;
|
||||
cg.a_load_ref_reg(list,OS_16,OS_16,href,NR_BX);
|
||||
end;
|
||||
@ -596,9 +596,9 @@ implementation
|
||||
{ set target address
|
||||
"mov %bx,4(%sp)" }
|
||||
if current_settings.x86memorymodel in x86_far_code_models then
|
||||
reference_reset_base(href,voidpointertype,NR_DI,6,2)
|
||||
reference_reset_base(href,voidnearpointertype,NR_DI,6,2)
|
||||
else
|
||||
reference_reset_base(href,voidpointertype,NR_DI,4,2);
|
||||
reference_reset_base(href,voidnearpointertype,NR_DI,4,2);
|
||||
if not segment_regs_equal(NR_DS,NR_SS) then
|
||||
href.segment:=NR_SS;
|
||||
list.concat(taicpu.op_reg_reg(A_MOV,S_W,NR_SP,NR_DI));
|
||||
|
||||
Loading…
Reference in New Issue
Block a user