* some changes to compile the new code generator

This commit is contained in:
florian 1999-08-01 23:36:38 +00:00
parent 9dfff6d0fc
commit 9fd7385c65
5 changed files with 66 additions and 16 deletions

View File

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

View File

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

View File

@ -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
}

View File

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

View File

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