t_wasm.pas 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596
  1. unit t_wasm;
  2. interface
  3. uses
  4. systems,
  5. globtype,
  6. import, export, aasmdata, aasmcpu,
  7. fmodule, ogbase,
  8. symsym, symdef,
  9. link,
  10. i_wasm, tgcpu;
  11. type
  12. { texportlibwasm }
  13. texportlibwasm=class(texportlib)
  14. procedure preparelib(const s : string);override;
  15. procedure exportprocedure(hp : texported_item);override;
  16. procedure exportvar(hp : texported_item);override;
  17. procedure generatelib;override;
  18. end;
  19. { timportlibwasm }
  20. timportlibwasm = class(timportlib)
  21. procedure generatelib;override;
  22. end;
  23. { tlinkerjvm }
  24. tlinkerwasm=class(texternallinker)
  25. constructor Create;override;
  26. //function MakeExecutable:boolean;override;
  27. function MakeSharedLibrary:boolean;override;
  28. end;
  29. implementation
  30. { timportlibwasm }
  31. procedure timportlibwasm.generatelib;
  32. begin
  33. end;
  34. { tlinkerwasm }
  35. constructor tlinkerwasm.Create;
  36. begin
  37. inherited Create;
  38. end;
  39. function tlinkerwasm.MakeSharedLibrary: boolean;
  40. begin
  41. Result := true;
  42. //Result:=inherited MakeSharedLibrary;
  43. end;
  44. { texportlibwasm }
  45. procedure texportlibwasm.preparelib(const s: string);
  46. begin
  47. //nothing to happen. wasm files are modules
  48. end;
  49. procedure texportlibwasm.exportprocedure(hp: texported_item);
  50. var
  51. nm : TSymStr;
  52. begin
  53. nm := tprocdef(tprocsym(hp.sym).ProcdefList[0]).mangledname;
  54. current_asmdata.asmlists[al_exports].Concat(tai_impexp.create(hp.name^, nm, ie_Func));
  55. end;
  56. procedure texportlibwasm.exportvar(hp: texported_item);
  57. begin
  58. //inherited exportvar(hp);
  59. end;
  60. procedure texportlibwasm.generatelib;
  61. begin
  62. //inherited generatelib;
  63. end;
  64. initialization
  65. RegisterTarget(system_wasm_info);
  66. RegisterImport(system_wasm_wasm32, timportlibwasm);
  67. RegisterExport(system_wasm_wasm32, texportlibwasm);
  68. RegisterLinker(ld_wasm, tlinkerwasm);
  69. end.