* on i8086 convert the 'ret' inline asm instruction to either 'retn' or 'retf',

depending on the call model of the current function (which is BP7 compatible
  behaviour)

git-svn-id: trunk@32157 -
This commit is contained in:
nickysn 2015-10-26 16:01:50 +00:00
parent 05ecee1895
commit c068c96302

View File

@ -85,7 +85,7 @@ Unit Rax86int;
{ aasm } { aasm }
aasmtai,aasmdata,aasmcpu, aasmtai,aasmdata,aasmcpu,
{ symtable } { symtable }
symconst,symbase,symtype,symsym,symdef,symtable, symconst,symbase,symtype,symsym,symdef,symtable,symcpu,
{ parser } { parser }
scanner,pbase, scanner,pbase,
{ register allocator } { register allocator }
@ -2072,6 +2072,17 @@ Unit Rax86int;
else if (instr.opcode=A_POPA) then else if (instr.opcode=A_POPA) then
instr.opcode:=A_POPAW instr.opcode:=A_POPAW
{$endif x86_64} {$endif x86_64}
{$ifdef i8086}
{ ret is converted to retn or retf, depending on the call model of the
current procedure (BP7 compatible) }
else if (instr.opcode=A_RET) then
begin
if is_proc_far(current_procinfo.procdef) then
instr.opcode:=A_RETF
else
instr.opcode:=A_RETN;
end
{$endif i8086}
; ;
{ We are reading operands, so opcode will be an AS_ID } { We are reading operands, so opcode will be an AS_ID }
{ process operands backwards to get them in AT&T order } { process operands backwards to get them in AT&T order }