mirror of
https://gitlab.com/freepascal.org/fpc/source.git
synced 2025-09-21 06:51:14 +02:00
+ support aitconst_uleb128bit and aitconst_sleb128bit
git-svn-id: branches/z80@44450 -
This commit is contained in:
parent
faa7429a7f
commit
416511e245
@ -42,6 +42,8 @@ unit agsdasz80;
|
||||
TSdccSdasZ80Assembler=class(TExternalAssembler)
|
||||
private
|
||||
function EscapeLabel(s: ansistring): ansistring;
|
||||
procedure WriteDecodedSleb128(a: int64);
|
||||
procedure WriteDecodedUleb128(a: qword);
|
||||
public
|
||||
procedure WriteTree(p : TAsmList); override;
|
||||
procedure WriteAsmList;override;
|
||||
@ -84,6 +86,38 @@ unit agsdasz80;
|
||||
result:=result+('_'+HexStr(Ord(s[i]),2));
|
||||
end;
|
||||
|
||||
procedure TSdccSdasZ80Assembler.WriteDecodedSleb128(a: int64);
|
||||
var
|
||||
i,len : longint;
|
||||
buf : array[0..255] of byte;
|
||||
begin
|
||||
writer.AsmWrite(#9'.db'#9);
|
||||
len:=EncodeSleb128(a,buf,0);
|
||||
for i:=0 to len-1 do
|
||||
begin
|
||||
if (i > 0) then
|
||||
writer.AsmWrite(',');
|
||||
writer.AsmWrite(tostr(buf[i]));
|
||||
end;
|
||||
writer.AsmWriteLn(#9'; sleb '+tostr(a));
|
||||
end;
|
||||
|
||||
procedure TSdccSdasZ80Assembler.WriteDecodedUleb128(a: qword);
|
||||
var
|
||||
i,len : longint;
|
||||
buf : array[0..63] of byte;
|
||||
begin
|
||||
writer.AsmWrite(#9'.db'#9);
|
||||
len:=EncodeUleb128(a,buf,0);
|
||||
for i:=0 to len-1 do
|
||||
begin
|
||||
if (i > 0) then
|
||||
writer.AsmWrite(',');
|
||||
writer.AsmWrite(tostr(buf[i]));
|
||||
end;
|
||||
writer.AsmWriteLn(#9'; uleb '+tostr(a));
|
||||
end;
|
||||
|
||||
procedure TSdccSdasZ80Assembler.WriteTree(p: TAsmList);
|
||||
|
||||
function getreferencestring(var ref : treference) : string;
|
||||
@ -251,6 +285,10 @@ unit agsdasz80;
|
||||
begin
|
||||
consttype:=tai_const(hp).consttype;
|
||||
case consttype of
|
||||
aitconst_uleb128bit:
|
||||
WriteDecodedUleb128(qword(tai_const(hp).value));
|
||||
aitconst_sleb128bit:
|
||||
WriteDecodedSleb128(int64(tai_const(hp).value));
|
||||
aitconst_64bit,
|
||||
aitconst_64bit_unaligned,
|
||||
aitconst_32bit,
|
||||
@ -296,9 +334,7 @@ unit agsdasz80;
|
||||
writer.AsmWrite(' - $$');}
|
||||
writer.AsmLn;
|
||||
end;
|
||||
{aitconst_uleb128bit,
|
||||
aitconst_sleb128bit,
|
||||
aitconst_128bit,}
|
||||
{aitconst_128bit,}
|
||||
aitconst_16bit,
|
||||
aitconst_8bit,
|
||||
aitconst_16bit_unaligned{,
|
||||
|
Loading…
Reference in New Issue
Block a user