|
@@ -57,6 +57,7 @@ interface
|
|
|
procedure WriteSymtableVarSyms(st: TSymtable);
|
|
|
procedure WriteTempAlloc(p:TAsmList);
|
|
|
procedure WriteExports(p: TAsmList);
|
|
|
+ procedure WriteImports(p: TAsmList);
|
|
|
public
|
|
|
constructor CreateWithWriter(info: pasminfo; wr: TExternalAssemblerOutputFile; freewriter, smart: boolean); override;
|
|
|
procedure WriteTree(p:TAsmList);override;
|
|
@@ -555,6 +556,7 @@ implementation
|
|
|
writer.MarkEmpty;
|
|
|
writer.AsmWriteLn('(module ');
|
|
|
writer.AsmWriteLn('(import "env" "memory" (memory 0)) ;;');
|
|
|
+ WriteImports(current_asmdata.asmlists[al_imports]);
|
|
|
|
|
|
{ print all global variables }
|
|
|
//current_asmdata.AsmSymbolDict
|
|
@@ -757,6 +759,36 @@ implementation
|
|
|
end;
|
|
|
end;
|
|
|
|
|
|
+ procedure TWabtTextAssembler.WriteImports(p: TAsmList);
|
|
|
+ var
|
|
|
+ hp: tai;
|
|
|
+ x: tai_impexp;
|
|
|
+ begin
|
|
|
+ if not Assigned(p) then Exit;
|
|
|
+ hp:=tai(p.First);
|
|
|
+ while Assigned(hp) do begin
|
|
|
+ case hp.typ of
|
|
|
+ ait_importexport:
|
|
|
+ begin
|
|
|
+ x:=tai_impexp(hp);
|
|
|
+ writer.AsmWrite('(import "');
|
|
|
+ writer.AsmWrite(x.extmodule);
|
|
|
+ writer.AsmWrite('" "');
|
|
|
+ writer.AsmWrite(x.extname);
|
|
|
+ writer.AsmWrite('" (');
|
|
|
+ case x.symstype of
|
|
|
+ ie_Func: writer.AsmWrite('func');
|
|
|
+ end;
|
|
|
+ writer.AsmWrite(' ');
|
|
|
+ writer.AsmWrite(GetWasmName(x.intname));
|
|
|
+ writer.AsmWrite('))');
|
|
|
+ writer.AsmLn;
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+ hp := tai_impexp(hp.Next);
|
|
|
+ end;
|
|
|
+ end;
|
|
|
+
|
|
|
|
|
|
{ TWatInstrWriter }
|
|
|
|