Design: Доступ ΠΊ стСку / ΠΊΡƒΡ‡Π΅ ΠΈΠ· Javascript

Π‘ΠΎΠ·Π΄Π°Π½Π½Ρ‹ΠΉ Π½Π° 12 июн. 2018  Β·  5ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ  Β·  Π˜ΡΡ‚ΠΎΡ‡Π½ΠΈΠΊ: WebAssembly/design

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΡƒΡ‡Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ экзСмпляра WASM Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Javascript?

Π’ связи с этим, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ экзСмпляр послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ импортированная функция Javascript Π²Ρ‹Π·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅? Π’ частности, сразу послС Ρ‚ΠΎΡ‡ΠΊΠΈ остановки, Π²ΠΊΠ»ΡŽΡ‡Π°Ρ Ρ‚Π΅ΠΊΡƒΡ‰ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅ ΠΊΡƒΡ‡ΠΈ, стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² ΠΈ Ρ‚. Π”.

Π― ΠΏΡ‹Ρ‚Π°ΡŽΡΡŒ Π²Ρ‹ΡΡΠ½ΠΈΡ‚ΡŒ, ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ ΡΠ΄Π΅Π»Π°Ρ‚ΡŒ процСссы WASM ΠΎΡ€Ρ‚ΠΎΠ³ΠΎΠ½Π°Π»ΡŒΠ½ΠΎ постоянными, ΠΏΡ€ΠΈΡ‡Π΅ΠΌ Π½Π΅ Ρ‚ΠΎΠ»ΡŒΠΊΠΎ ΠΌΠ΅ΠΆΠ΄Ρƒ Π²Ρ‹Π·ΠΎΠ²Π°ΠΌΠΈ, Π½ΠΎ ΠΈ Π²Π½ΡƒΡ‚Ρ€ΠΈ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² (Π½Π°ΠΏΡ€ΠΈΠΌΠ΅Ρ€, ΠΊΠΎΠ³Π΄Π° Ρƒ Π½ΠΈΡ… Π·Π°ΠΊΠ°Π½Ρ‡ΠΈΠ²Π°ΡŽΡ‚ΡΡ рСсурсы, см. Https://github.com/ewasm/wasm -ΠΈΠ·ΠΌΠ΅Ρ€ΠΈΡ‚Π΅Π»ΡŒ).

Π‘Π°ΠΌΡ‹ΠΉ ΠΏΠΎΠ»Π΅Π·Π½Ρ‹ΠΉ ΠΊΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

Π£ модуля WebAssembly Π½Π΅Ρ‚ ΠΊΡƒΡ‡ΠΈ, Ρƒ Π½Π΅Π³ΠΎ просто Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая прСдставляСт собой плоский Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±Π°ΠΉΡ‚ΠΎΠ². Когда Ρ‚Π°ΠΊΠΎΠΉ язык, ΠΊΠ°ΠΊ C ++, компилируСтся Π² WebAssembly, ΠΊΡƒΡ‡Π° сохраняСтся Π² памяти, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² WebAssembly (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ стСк Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Π½Π΅ хранится Π² памяти ΠΈ нСдоступСн. Но ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠΉ язык, ΠΊΠ°ΠΊ C ++, компилируСтся Π² WebAssembly, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты стСка C ++ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ C ++ с адрСсом ΠΈ большиС массивы.

ВсС 5 ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΉ

МоТно Π»ΠΈ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ ΠΊΡƒΡ‡Π΅ Π²Ρ‹Π·Ρ‹Π²Π°ΡŽΡ‰Π΅Π³ΠΎ экзСмпляра WASM Π² ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ Javascript?

Π”Π°, Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ памяти, Ссли экспортируСтС Π΅Π΅ ΠΈΠ· модуля. Π­Ρ‚ΠΎ Π±ΡƒΠ΄Π΅Ρ‚ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ WebAssembly.Memory , Π° Π΅Π³ΠΎ свойство buffer - это ArrayBuffer с содСрТимым Π»ΠΈΠ½Π΅ΠΉΠ½ΠΎΠΉ памяти.

Π’ связи с этим, Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ Π»ΠΈ Π²ΠΎΠ·ΠΎΠ±Π½ΠΎΠ²ΠΈΡ‚ΡŒ экзСмпляр послС Ρ‚ΠΎΠ³ΠΎ, ΠΊΠ°ΠΊ импортированная функция Javascript Π²Ρ‹Π·Π²Π°Π»Π° ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠ΅?

НСт, Π² настоящСС врСмя это Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½ΠΎ. Π‘Ρ‚Π΅ΠΊ Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² отбрасываСтся ΠΏΡ€ΠΈ Π²ΠΎΠ·Π½ΠΈΠΊΠ½ΠΎΠ²Π΅Π½ΠΈΠΈ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΡ. Для этого Π²Π°ΠΌ Π½ΡƒΠΆΠ½ΠΎ Π½Π°ΡΡ‚Ρ€ΠΎΠΈΡ‚ΡŒ свой ΠΌΠΎΠ΄ΡƒΠ»ΡŒ Ρ‚Π°ΠΊ, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΠΎΠ½ позволял Ρ‚Π°ΠΊΠΎΠ΅ ΠΏΠΎΠ²Π΅Π΄Π΅Π½ΠΈΠ΅. ВСроятно, здСсь Ρ‚Π°ΠΊΠΆΠ΅ ΠΏΠΎΠΌΠΎΠ³ΡƒΡ‚ Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ ΠΈΠ· Ρ€Π°ΡΡˆΠΈΡ€Π΅Π½ΠΈΠΉ, обсуТдаСмых Π² ΠΏΡ€Π΅Π΄Π»ΠΎΠΆΠ΅Π½ΠΈΠΈ ΠΏΠΎ ΠΎΠ±Ρ€Π°Π±ΠΎΡ‚ΠΊΠ΅ ΠΈΡΠΊΠ»ΡŽΡ‡Π΅Π½ΠΈΠΉ .

ΠšΡƒΡ‡Π° содСрТится Π² Π±ΡƒΡ„Π΅Ρ€Π΅ памяти? Π― Π½Π΅ Π²ΠΈΠ΄Π΅Π» упоминания ΠΎΠ± этом Π² Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Π°Ρ†ΠΈΠΈ.
Π’Π°ΠΊΠΆΠ΅ каТСтся Π½Π΅Π²ΠΎΠ·ΠΌΠΎΠΆΠ½Ρ‹ΠΌ ΠΏΠΎΠ»ΡƒΡ‡ΠΈΡ‚ΡŒ доступ ΠΊ стСку Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² Π²Π½ΡƒΡ‚Ρ€ΠΈ ΠΈΠΌΠΏΠΎΡ€Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΠΎΠΉ Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΈ javascript Π±Π΅Π· инструмСнтария модуля WASM.

Π£ модуля WebAssembly Π½Π΅Ρ‚ ΠΊΡƒΡ‡ΠΈ, Ρƒ Π½Π΅Π³ΠΎ просто Π΅ΡΡ‚ΡŒ ΠΏΠ°ΠΌΡΡ‚ΡŒ, которая прСдставляСт собой плоский Π²Π΅ΠΊΡ‚ΠΎΡ€ Π±Π°ΠΉΡ‚ΠΎΠ². Когда Ρ‚Π°ΠΊΠΎΠΉ язык, ΠΊΠ°ΠΊ C ++, компилируСтся Π² WebAssembly, ΠΊΡƒΡ‡Π° сохраняСтся Π² памяти, ΠΊΠ°ΠΊ ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ Π΄Π°Π½Π½Ρ‹Π΅.

Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, стСк Π²Ρ‹Π·ΠΎΠ²ΠΎΠ² WebAssembly (ΠΊΠΎΡ‚ΠΎΡ€Ρ‹ΠΉ Π²ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ стСк Π²Ρ‹Π·Ρ‹Π²Π°Π΅ΠΌΡ‹Ρ… Ρ„ΡƒΠ½ΠΊΡ†ΠΈΠΉ ΠΈ ΠΈΡ… Π»ΠΎΠΊΠ°Π»ΡŒΠ½Ρ‹Π΅ ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅) Π½Π΅ хранится Π² памяти ΠΈ нСдоступСн. Но ΠΊΠΎΠ³Π΄Π° Ρ‚Π°ΠΊΠΎΠΉ язык, ΠΊΠ°ΠΊ C ++, компилируСтся Π² WebAssembly, Π½Π΅ΠΊΠΎΡ‚ΠΎΡ€Ρ‹Π΅ элСмСнты стСка C ++ ΠΌΠΎΠ³ΡƒΡ‚ Ρ…Ρ€Π°Π½ΠΈΡ‚ΡŒΡΡ Π² памяти. Как ΠΏΡ€Π°Π²ΠΈΠ»ΠΎ, это ΠΏΠ΅Ρ€Π΅ΠΌΠ΅Π½Π½Ρ‹Π΅ C ++ с адрСсом ΠΈ большиС массивы.

Ах, понятно, Ρ‚Π°ΠΊ Π²ΠΎΡ‚ для Ρ‡Π΅Π³ΠΎ Π½ΡƒΠΆΠ½Π° __heap_base!

Instance {
  exports: 
   { memory: Memory {},
     __heap_base: 66560,
     __data_end: 1024,
     main: [Function: 2],
     fac: [Function: 3] }
}

Π‘ΠΎΠ»ΡŒΡˆΠΎΠ΅ Ρ‚Π΅Π±Π΅ спасибо!

WebAssembly.Memory - это Ρ‚Π°ΠΊ называСмая ΠΊΡƒΡ‡Π°

Π‘Ρ‹Π»Π° Π»ΠΈ эта страница ΠΏΠΎΠ»Π΅Π·Π½ΠΎΠΉ?
0 / 5 - 0 Ρ€Π΅ΠΉΡ‚ΠΈΠ½Π³ΠΈ

Π‘ΠΌΠ΅ΠΆΠ½Ρ‹Π΅ вопросы

thysultan picture thysultan  Β·  4ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

nikhedonia picture nikhedonia  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

Artur-A picture Artur-A  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

dpw picture dpw  Β·  3ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ

beriberikix picture beriberikix  Β·  7ΠšΠΎΠΌΠΌΠ΅Π½Ρ‚Π°Ρ€ΠΈΠΈ