[fpc-devel]fpc1010 linux problem

Rimgaudas Laucius rimga at ktl.mii.lt
Thu Mar 25 14:18:34 CET 2004


hello,

1) first i can't submit err to err database because of issue (i do not know
what it means):

You have an error in your SQL syntax near ' ,"hi we found problem in fpc1010
version. fpc106 does not have it. it says t' at line 1

2) we found problem in fpc1010 version. fpc106 does not have it. it says
that found incompatible types conversion and stops, but fpc1010 gererates
internal error. problem found in linux.

err listing:

vs at jurate:~/problems$ fpc valant.pas
Free Pascal Compiler version 1.0.10 [2003/06/26] for i386
Copyright (c) 1993-2003 by Florian Klaempfl
Target OS: Linux for i386
Compiling valant.pas
Assembling mikro
valant.s: Assembler messages:
valant.s:325: Error: `%dl' not allowed with `movl'
valant.s:328: Error: `%dl' not allowed with `movl'
valant.s:349: Error: `%dl' not allowed with `movl'
valant.s:352: Error: `%dl' not allowed with `movl'
valant.pas(115) Error: Error while assembling exitcode 1
valant.pas(115) Fatal: There were 2 errors compiling module, stopping


program code:


{
TASK:MIKRO
LANG:PASCAL
}
{ Vitalijus Valantiejus, KOdainiÖ ÷Rytoņ vidurinO mokykla, 11a klasO }

program mikro;
 const dat = 'schema.dat';
       rez = 'schema.rez';

 type TReiksme = (rZ, rA, rU); { Ųema, aukÕta, neŲinoma }
      PEl = ^TEl;
      TEl = record
        In1, In2: PEl;
        hasIn: byte;
        Tipas: char;
        r: TReiksme;
      end;
      TKrastai = array [1..20] of TEl;  { ?Ojimai ir iÕOjimai }
      TVidurys = array [1..100] of TEl; { I ir A elementai laikomi
atskiruose masyvuose}

 procedure ReadData(var n, k: longint; var p, g: TKrastai; var a, i:
TVidurys);
  var b: text;
      j, r,
      es, eg: longint; { SiuntOjas ir gavOjas }
      c1, c2: char;
      pes, peg: PEl;
 begin
  assign(b, dat);
  reset(b);
  readln(b, n, k);
  for j := 1 to n do
   begin
    read(b, c1);
    if c1 = '1' then p[j].r := rA
                else p[j].r := rZ;
   end;
  readln(b, r);
  for j := 1 to r do
   begin
    read(b, c1);
    read(b, es);
    read(b, c2); // Tarpas
    read(b, c2);
    readln(b, eg);
    if c1 = 'A' then pes := @a[es]
     else if c1 = 'I' then pes := @i[es]
      else if c1 = 'P' then pes := @p[es];
    if c2 = 'A' then peg := @a[eg]
     else if c2 = 'I' then peg := @i[eg]
      else if c2 = 'G' then peg := @g[eg];
    pes^.tipas := c1;
    peg^.tipas := c2;
    if peg^.hasIn = 0 then
      peg^.In1 := pes
     else
      peg^.In2 := pes;
    inc(peg^.hasIn);
   end;
  close(b);
 end;

 procedure CalcOut(El: PEl);
  var r1, r2: TReiksme;
 begin
  r1 := El^.In1^.r;
  if r1 = rU then CalcOut(El^.In1);
  r1 := El^.In1^.r;
  if El^.hasin > 1 then
   begin
    r2 := El^.In2^.r;
    if r2 = rU then CalcOut(El^.In2);
    r2 := El^.In2^.r;
   end
   else r2 := r1;
  if El^.tipas = 'A' then
    El^.r := TReiksme(not (boolean(r1) or boolean(r2)))
   else if El^.tipas = 'I' then
    El^.r := TReiksme(not (boolean(r1) and boolean(r2)))
   else if El^.tipas = 'G' then
    El^.r := r1;
 end;

 procedure Solve(var g: TKrastai; k: longint);
  var b: text;
      j: integer;
 begin
  assign(b, 'schema.rez');
  rewrite(b);
  for j := 1 to k do
   begin
    CalcOut(@g[j]);
    if g[j].r = rZ then
      write(b, '0')
     else
      write(b, '1');
   end;
  writeln(b);
  close(b);
 end;

 var n, k, j: longint;
     p, g: TKrastai;
     a, i: TVidurys;

begin
 for j := 1 to 100 do
  begin
   a[j].r := rU;
   i[j].r := rU;
  end;
 ReadData(n, k, p, g, a, i);
 Solve(g, k);
end.





More information about the fpc-devel mailing list