just realized that the WASM page size, 64 kbytes, perfectly matches the 8086 segment size, so you could use segment registers to index into the WASM linear memory
WebAssembly used to have runtime function to figure out page size. It was changed to a constant in this commit:
https://github.com/WebAssembly/design/pull/442…
and a future "large page support" item was created.
As with many wasm things, lots of the early context isn't in GitHub but its outcomes are.
iOS on 64-bit only supports 16k pages, so supporting only 4k wouldn't be portable to a major target.
They started out with 16k in userspace while still using 4k physical pages (A7, A8) before they migrated to actually using 16k pages. Sounds like that memory mapping restriction.