+ support aitconst_uleb128bit and aitconst_sleb128bit

git-svn-id: branches/z80@44450 -
This commit is contained in:
nickysn 2020-03-31 00:30:00 +00:00
parent faa7429a7f
commit 416511e245

View File

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