Код Wasm не может напрямую обращаться к физической памяти ни внутри самого движка Wasm, ни где-либо еще в процессе.Он может получить доступ к памяти только в пределах объявленного массива «линейной памяти», что похоже на доступ к массиву больших байтов.
За пределами доступа к этому массиву не возникает ошибка сегмента.Вместо этого выполнение Wasm будет прервано с так называемой ловушкой, своего рода исключением на уровне Wasm.Двигатели могут реализовывать проверки границ любым удобным для них способом.На 32-битных архитектурах это обычно сравнение реальных адресов.На 64-битных архитектурах движки могут использовать более эффективные методы виртуальной памяти, которые вызывают аппаратный сигнал, который затем ловит движок и преобразует его в ловушку.Однако аппаратная ошибка в этом случае является деталью реализации и не наблюдается кодом Wasm.