mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-04-20 19:09:23 +02:00
* some changes to compile the new code generator
This commit is contained in:
parent
9dfff6d0fc
commit
9fd7385c65
@ -339,11 +339,12 @@ implementation
|
||||
begin
|
||||
exprasmlist^.concat(new(pai386,op_reg_reg(A_XOR,S_L,
|
||||
hregister2,hregister2)));
|
||||
if (porddef(pto^.resulttype)^.typ=s64bitint) then
|
||||
if (porddef(pto^.resulttype)^.typ=s64bitint) and
|
||||
is_signed(pfrom^.resulttype) then
|
||||
begin
|
||||
getlabel(l);
|
||||
exprasmlist^.concat(new(pai386,op_const_reg(A_TEST,S_L,
|
||||
$80000000,hregister)));
|
||||
$80000000,makereg32(hregister))));
|
||||
emitjmp(C_Z,l);
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_NOT,S_L,
|
||||
hregister2)));
|
||||
@ -1462,7 +1463,10 @@ implementation
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.79 1999-07-22 09:37:34 florian
|
||||
Revision 1.80 1999-08-01 23:36:38 florian
|
||||
* some changes to compile the new code generator
|
||||
|
||||
Revision 1.79 1999/07/22 09:37:34 florian
|
||||
+ resourcestring implemented
|
||||
+ start of longstring support
|
||||
|
||||
|
@ -1098,16 +1098,37 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
R_EAX,R_EBX,R_ECX,R_EDX,R_ESI,
|
||||
R_EDI,R_ESP,R_EBP :
|
||||
begin
|
||||
inc(pushedparasize,4);
|
||||
if inlined then
|
||||
if p^.resulttype^.size=8 then
|
||||
begin
|
||||
r:=new_reference(procinfo.framepointer,para_offset-pushedparasize);
|
||||
exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,
|
||||
p^.location.register,r)));
|
||||
inc(pushedparasize,8);
|
||||
if inlined then
|
||||
begin
|
||||
r:=new_reference(procinfo.framepointer,para_offset-pushedparasize);
|
||||
exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,
|
||||
p^.location.registerlow,r)));
|
||||
r:=new_reference(procinfo.framepointer,para_offset-pushedparasize+4);
|
||||
exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,
|
||||
p^.location.registerhigh,r)));
|
||||
end
|
||||
else
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,p^.location.registerhigh)));
|
||||
ungetregister32(p^.location.registerhigh);
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,p^.location.registerlow)));
|
||||
ungetregister32(p^.location.registerlow);
|
||||
end
|
||||
else
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,p^.location.register)));
|
||||
ungetregister32(p^.location.register);
|
||||
begin
|
||||
inc(pushedparasize,4);
|
||||
if inlined then
|
||||
begin
|
||||
r:=new_reference(procinfo.framepointer,para_offset-pushedparasize);
|
||||
exprasmlist^.concat(new(pai386,op_reg_ref(A_MOV,S_L,
|
||||
p^.location.register,r)));
|
||||
end
|
||||
else
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,S_L,p^.location.register)));
|
||||
ungetregister32(p^.location.register);
|
||||
end;
|
||||
end;
|
||||
R_AX,R_BX,R_CX,R_DX,R_SI,R_DI:
|
||||
begin
|
||||
@ -1156,6 +1177,7 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
exprasmlist^.concat(new(pai386,op_reg(A_PUSH,opsize,hreg)));
|
||||
ungetregister32(reg8toreg32(p^.location.register));
|
||||
end;
|
||||
else internalerror(1899);
|
||||
end;
|
||||
end;
|
||||
LOC_FPU:
|
||||
@ -3118,7 +3140,10 @@ procedure mov_reg_to_dest(p : ptree; s : topsize; reg : tregister);
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.21 1999-08-01 17:32:31 florian
|
||||
Revision 1.22 1999-08-01 23:36:39 florian
|
||||
* some changes to compile the new code generator
|
||||
|
||||
Revision 1.21 1999/08/01 17:32:31 florian
|
||||
* more fixes for inittable call
|
||||
|
||||
Revision 1.20 1999/08/01 17:17:37 florian
|
||||
|
@ -33,6 +33,7 @@ unit nstatmnt;
|
||||
constructor init(l : pnode);
|
||||
procedure det_temp;virtual;
|
||||
procedure det_resulttype;virtual;
|
||||
procedure secondpass;virtual;
|
||||
end;
|
||||
|
||||
pstatementnode = ^tstatementnode;
|
||||
@ -134,11 +135,21 @@ unit nstatmnt;
|
||||
end;
|
||||
end;
|
||||
|
||||
procedure tblocknode.secondpass;
|
||||
|
||||
begin
|
||||
if assigned(left) then
|
||||
left^.secondpass;
|
||||
end;
|
||||
|
||||
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.1 1999-01-23 23:35:02 florian
|
||||
Revision 1.2 1999-08-01 23:36:43 florian
|
||||
* some changes to compile the new code generator
|
||||
|
||||
Revision 1.1 1999/01/23 23:35:02 florian
|
||||
+ first versions
|
||||
|
||||
}
|
@ -61,7 +61,7 @@ unit parser;
|
||||
{$ifdef newcg}
|
||||
cgobj,
|
||||
{$ifdef i386}
|
||||
cg386,
|
||||
cgcpu,
|
||||
{$endif i386}
|
||||
{$endif newcg}
|
||||
comphook,tree,scanner,pbase,pdecl,psystem,pmodules,cresstr;
|
||||
@ -471,7 +471,10 @@ unit parser;
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.78 1999-07-24 16:22:18 michael
|
||||
Revision 1.79 1999-08-01 23:36:40 florian
|
||||
* some changes to compile the new code generator
|
||||
|
||||
Revision 1.78 1999/07/24 16:22:18 michael
|
||||
+ Improved resourcestring handling
|
||||
|
||||
Revision 1.77 1999/07/23 16:05:22 peter
|
||||
|
@ -28,11 +28,15 @@ interface
|
||||
wordversion = (0 shl 12)+99;
|
||||
|
||||
{ version string }
|
||||
|
||||
version_nr = '0';
|
||||
release_nr = '99';
|
||||
patch_nr = '13';
|
||||
{$ifdef newcg}
|
||||
minorpatch = '';
|
||||
|
||||
{$else newcg}
|
||||
minorpatch = 'newcg';
|
||||
{$endif newcg}
|
||||
version_string = version_nr+'.'+release_nr+'.'+patch_nr;
|
||||
full_version_string = version_nr+'.'+release_nr+'.'+patch_nr+minorpatch;
|
||||
|
||||
@ -69,7 +73,10 @@ begin
|
||||
end.
|
||||
{
|
||||
$Log$
|
||||
Revision 1.9 1999-07-01 21:35:02 peter
|
||||
Revision 1.10 1999-08-01 23:36:42 florian
|
||||
* some changes to compile the new code generator
|
||||
|
||||
Revision 1.9 1999/07/01 21:35:02 peter
|
||||
* 0.99.13 instead of 0.99.13a
|
||||
|
||||
Revision 1.8 1999/06/27 15:49:19 michael
|
||||
|
Loading…
Reference in New Issue
Block a user