* fixed the i8086 g_intf_wrapper after the hlcgllvm branch merge

git-svn-id: trunk@30353 -
This commit is contained in:
nickysn 2015-03-28 14:33:22 +00:00
parent 003b283e55
commit 0162b199f7

View File

@ -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));