Upgrade to Pro — share decks privately, control downloads, hide ads and more …

RustでWasm Runtimeを書いた in WebAssembly night #11

skanehira
September 15, 2023

RustでWasm Runtimeを書いた in WebAssembly night #11

skanehira

September 15, 2023
Tweet

More Decks by skanehira

Other Decks in Programming

Transcript

  1. QSPGJMF \ OBNFΰϦϥ  KPC< ΤϯδχΞ  ձࣾܦӦ > 

    MJLFT< 3VTU  (P  5ZQF4DSJQU  %FOP  7JN  8BTN  %PDLFS  LT >  TOT< 9 5XJUUFS IUUQTUXJUUFSDPNHPSJMMB  (JU)VCIUUQTHJUIVCDPNTLBOFIJSB  [FOOIUUQT[FOOEFWTLBOFIJSB  > >
  2. 00000000: 0061 736d 0100 0000 0107 0160 027f 7f01 .asm.......`....

    00000010: 7f03 0201 000a 0901 0700 2000 2001 6a0b .......... . .j. 00000020: 0a . WATからWasmバイナリを生成
  3. 先頭8バイトがmagic number とversion情報 
 残りが各種セクション情報 
 各種セクションは実行時に 必要な情報を持つ 8BTNNPEVMF E

    NBHJDOVNCFS aBTN  WFSTJPO   TFDUJPODPEF  TFDUJPOTJ[F BYY TFDUJPOEBUB  TFDUJPODPEF  TFDUJPOTJ[F YY TFDUJPOEBUB EYY 
  4. TFDUJPO5ZQF   TFDUJPODPEF  TFDUJPOTJ[F B OVNUZQFT C GVOD

    D OVNQBSBNT EG J FG J G OVNSFTVMUT G J TFDUJPO$PEF  B TFDUJPODPEF  TFDUJPOTJ[F  OVNGVODUJPOT  GVODCPEZTJ[F  MPDBMEFDMDPVOU B MPDBMHFU C MPDBMJOEFY D MPDBMHFU E MPDBMJOEFY FB JBEE GC FOE
  5. code section をデコード処理する例 TFDUJPO$PEF  B TFDUJPODPEF  TFDUJPOTJ[F 

    OVNGVODUJPOT  GVODCPEZTJ[F  MPDBMEFDMDPVOU B MPDBMHFU C MPDBMJOEFY D MPDBMHFU E MPDBMJOEFY FB JBEE GC FOE
  6. *OTUSVDUJPO 
 8BTNͷ໋ྩ܈ 7BMVF 
 8BTNͰѻ͑Δ஋ 
 J΍JɺGͳͲ 3VOUJNFTUBDL 


    ॲཧ࣌ͷ஋Λอ࣋ 3VOUJNFFYFDVUF 
 ໋ྩΛॲཧ͢Δؔ਺ QD 
 ϓϩάϥϜΧ΢ϯλ 
 ࣍ͷ໋ྩͷ൪஍ʢΠϯσοΫεʣ
  7. 'SBNF 
 ؔ਺ͷݺͼग़͠ͷ౓ʹੜ੒͢Δ 
  
 ྫ͑͹ɺ" # ͷΑ͏ͳؔ਺ݺͼग़͠ 


    ͕͋Δ৔߹ɺ" ͷॲཧதʹ# ͷ໋ྩΛ 
 ॲཧ͠ɺͦΕ͕ऴΘͬͨΒ" ʹ໭Δࡍʹ 
 " ͷQDʹ໭͢ඞཁ͕͋Δ 
 ؔ਺͝ͱʹQDͱ໋ྩΛ·ͱΊͯ'SBNFͰ 
 ؅ཧ͢Δ͜ͱͰɺݺͼग़͠ݩʹ໭Δͱ͖ 
 ͷॲཧ͸'SBNFΛ੾Γସ͑Δ͚ͩͰࡁΉ
  8. -BCFM 
 JG΍MPPQͱ͍ͬͨͷ੍ޚߏจΛॲཧ͢ΔͨΊͷ৘ใ 
 ྫ͑͹ελοΫΛר͖໭ͨ͢ΊͷελοΫϙΠϯλ 
 ͳͲΛ࣋ͭ BSJUZ 
 ໭Γ஋ͷ਺

    
 MPPQ΋໭Γ஋Λฦ͢͜ͱ͕Ͱ͖ΔͨΊɺ 
 -BCFM΋BSJUZΛ࣋ͭ MPDBMT 
 ؔ਺ͷҾ਺΍ϩʔΧϧม਺ͷ஋ ͦͷଞɺॾʑͷ࣮૷ͷৄࡉ͸ˣͷهࣄΛࢀর 
 IUUQT[FOOEFWTLBOFIJSBBSUJDMFT SVTUXBTNSVOUJNF