From ff431f21ae86e932b5bfdb8068c0cba4c232164d Mon Sep 17 00:00:00 2001 From: peter Date: Mon, 9 Jun 2003 12:59:00 +0000 Subject: [PATCH] * updated for new deref info --- compiler/utils/ppudump.pp | 200 +++++++++++++++++++------------------- 1 file changed, 100 insertions(+), 100 deletions(-) diff --git a/compiler/utils/ppudump.pp b/compiler/utils/ppudump.pp index 256dc2a052..cce1a1bb1a 100644 --- a/compiler/utils/ppudump.pp +++ b/compiler/utils/ppudump.pp @@ -434,94 +434,88 @@ begin end; -function readderef(const s:string;skipnil:boolean):boolean; +procedure readderef; type - tdereftype = (derefnil,derefaktrecordindex,derefaktstaticindex, - derefunit,derefrecord,derefindex, - dereflocal,derefpara,derefaktlocalindex); + tdereftype = (derefnil, + derefaktrecordindex, + derefaktstaticindex, + derefaktglobalindex, + derefaktlocalindex, + derefunit, + derefrecord, + derefindex, + dereflocal, + derefpara + ); var b : tdereftype; + first : boolean; + idx : word; + typ, + i,n : byte; + s : string; begin - readderef:=true; - repeat - b:=tdereftype(ppufile.getbyte); - case b of - derefnil : - begin - if not skipnil then - writeln('nil'); - readderef:=false; - break; - end; - derefaktrecordindex : - begin - writeln('AktRecord ',s,' ',ppufile.getword); - break; - end; - derefaktstaticindex : - begin - writeln('AktStatic ',s,' ',ppufile.getword); - break; - end; - derefaktlocalindex : - begin - writeln('AktLocal ',s,' ',ppufile.getword); - break; - end; - derefunit : - begin - writeln('Unit ',ppufile.getword); - break; - end; - derefrecord : - begin - write('RecordDef ',ppufile.getword,', '); - end; - derefpara : - begin - write('Parameter of procdef ',ppufile.getword,', '); - end; - dereflocal : - begin - write('Local of procdef ',ppufile.getword,', '); - end; - derefindex : - begin - write(s,' ',ppufile.getword,', '); - end; - else - begin - writeln('!! unsupported dereftyp: ',ord(b)); - break; - end; - end; - until false; -end; - - -function readdefref:boolean; -begin - readdefref:=readderef('Definition',false); -end; - - -function readsymref:boolean; -begin - readsymref:=readderef('Symbol',false); + first:=true; + i:=0; + n:=ppufile.getbyte; + if n<1 then + begin + writeln('!! Error, deref len < 1'); + exit; + end; + typ:=ppufile.getbyte; + case typ of + 0 : write('Nil'); + 1 : s:='Symbol'; + 2 : s:='Definition'; + else write('!! Error, unknown deref destination type'); + end; + inc(i); + while (i