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