á¨áĽááľ á ááłáľ á ááľ, Fabrice Bellard
- áááľ ááá
- áŤá á¨ááá áá á¨ááĽáŤáľ á˝ááł
- á á áľá°ááá áááł á¨ááĽáŤáľ á˝ááł
- ááááąá á¨á áľá°ááá áĽá á¨áĽáááł á áááá˝ áĽááľ áľáá
á áŚáľá°áá ááĽáĽ á᪠ᣠá áá áĽá ááľááá ááĽáŤáŤáľ áĽá˝ááá á áĽááṠᣠá TCI áá᳠ᣠá¨áĽáááł áá˝á áááŞáŤá áĽáŤáłá¸á á áá°á°á¨ááá ᣠáá á¨áĽááą á¨á°ááá áŁááľ áŽáľ áá ᣠáá áá ááááąá á ááááĽá - áááááŁáľ áĽá Qemu á á á á˛áľ á ááá´áá¸á áŤááąáŁ áĽáľáá á¨ááᣠC compiler á á áá - áŽáľ áááŹá°á ááá ááá áá ááŤáá áá˝ááá˘
áĽá á ááᣠá ááť ááᏠááľáĽ ᨠQemu ááá áŽáľá á¨áááľ á ááľ á¨áá°áľáŠ á ááᣠá ááľ á¨áá°áŤ ááŽáśáłáá áłá¨áŁ á áá ááľáĽ á áľááľáá ááŽáĽ áá˝ááᣠáááłáᣠKolibri OSá˘
Emscript áááľá áá?
á á áá áá áĽá á áááŁáŞáá˝ á á, á¨áá¨á¨áťá áá¤áľ ááŤáľááŞááľ áá. á ááłááśášáŁ áá áĽáá° áľááŞááľ á áááľáŁ á ááááŞáŤ á¨á°áááąáľ ááľá áááá ááᥠááááľ ááᢠá á°ááłáłá áá Emscripten áŤááá C ááá C++ áŽáľ ááľá°á
á áłáš áá¨áłá á áá˝á á
á˝ áá ááá ááᢠá ááˇá
ááááŞáŤ ááá
á á á áááᣠQemuá áá° á፠áľááŞááľ á¨áááá ááłáĽ áŤááŁááľ á¨ááááŞáŤá á áá°áááᢠá Emscripten áá
ááťá áĽáá°áá á¨ReactOS ááľá¨á á á¨áᢠáá°á á˛á áĽááłá ááĽáŞáľ á¤áááľ á áá áĽááłá°á¨áá ááŹáá˝ áá አᣠáá áľá jslinux áá á ᣠáĽá áĽáľá¨áááá áľá¨áľ ᣠá áá¤áľ ááľáĽ á á á ááááá á áĽá
áááłáŤáľ á¨á°á°á¨á áá¨áŤ áá ᣠáĽá á¨áŁáś á¨á°áťáᢠá áá ᣠá¨áášáá x86 á°áá - áŤáá°áŁáአáááŽá˝ á áĽáą áá á°ááĽááá ᣠáĽá áĽáá°á°ááá¸á ᣠá¨ááľáá°á áľáá âáĽááá°áááľâ SeaBIOS áĽáá° firmware ááá áá á áľá˝ááłáᢠá á°á¨ááŞá Emscriptená á áá áá Qemu áá°áĽ áááľá¨á á˘áŤááľ á ááľ áá¨áŤ áá á - áá
á áááľá¨á áá¨ááŠ
áľááá
ᣠá¨áááľáá ᣠá¨ááá áŽáśá˝ áĽáá
á á ᣠáĽáá
Emscripten áá - ááá°áąáľ áĽá áŤá áá
áŠáľá˘ ááá áá áá á¨áááŤáŁá¸á á¤á°-ááťáááľ áĽá áĽáá፠á¤á°-ááťáááľ á¨á°ááŠáŁá¸á á¤á°-ááťáááľ ááá°á á á á¨ááá
á á ááą ááá˘
ááááŞáŤ áá ááłáĄ á ááá á¨ááĽáá ááľá á áá¤áľ ááťá áĽá áá°á á áá¨áŤáá˝á ááľá¨á áá á ᣠáá á áá¨á¨áť á¨áĽáá á áááľáľ áááá˝ á áá áŁáá áŽáľ áĽáá˛á°áŠ áĽáá´áľ áĽáá°áá°áŤ á፠ááŁá - áá ááľá¨á áĽá˝ááá ᣠáĽáá°ááąá˘ " á°ááŁáŤáą á áŁá á¨á°ááłá°á ááá áŤá áŤá
á á°á°áĽ áá? libffiá áá° áá á ááá´áá¸á ááá¨á´ áá á¨áĽáᣠááááľ ááťáá - áĽáá° áĽáľá ááᣠEmscripten áááąá áááŽáá˝ (á ááŤáľááŞáᾠᣠá á - áĽáŠ ᣠáá á ááá´áá¸á ᣠáĽáá°áá
áŤá á°áĽáłá˘) áĽá á áá áá á¨ááá¨áá áŽáľ á¨ááľáŹáľ á˝ááł á áá¸áᢠá á á áááᣠáá°áá°á áá á¨ááľá¨á-á°áŽá á¨ááĽá áááĽáŤáŽá˝ áá á¨á°áŁááአá ááᣠá¨á°áá°á á¨áá ááá áŽáľ á áááᣠáĽá áŁáá áá á¨ááááŞáŤ áá¨áŤ áá ááľáŠá˘ á¨ááááá áá°áá á¨á°áłáŤ áá áᢠáŚááá á¨áá
ááą - ááá áááľ á¨áá ᣠá¨ááááŞáŤá á
áá á°ááˇá - áĽá ᣠá ááá ááááźá á ááááŠá ᣠá°á¨ááŞáá á¨áľ áááá áĽááłááĽá áááááá áĽáá°áá á¨á°áááá áŽáľ ááá¨áľ ááŁá ᢠáĽáá
áááá°á áá ááá¤áľ ááŁá - á°ááŁáŹ áŤá°á¨áŠáľ áĽá¸áá ááá ááᢠffi_call
- á¨á°áłáŤ áĽáŞ ááá§áᢠáľáááá áĽáŞ á ááá á¨áᢠáĽáá ááááá áŚááááŤáľ áá¨áłá á¨áá˝ááá áľá
á°áľ áŤá¨ááá á¨ááááŞáŤ á¨ááá°áľ áĽáŤááŹá áᏠáá á - áĽááá°á ááĽáŽá˝ áĽáá°á፠ááááአá áááŁá a == b
áĽá áĽáá´áľ áĽááłá a - b < EPS
áááá áááłáľ á¨ááĽáá ᣠá áá áá፠0 ᨠ1/3 áá áĽáŠá áááá ... á á á ááá ᣠá áŁá ááá á¨áááľá áá°ááá˝ á¨ááŤáá á¨á°áá°á á¨ááĽá áá°áĽ á ááá ᣠáĽá ááἠá¨á°á ááá¨á áľ - á áľááá áĽáá°ááá áá°ááŠ, á¨á፠áĽá¨ááŤáá. áá° ááľ áľááá¨áľáŁ áĽáá° á°ááá ᣠá áááŁáŞá á ááĽá á°ááŁá á¨áá¨á¨áť áŽáľ ááľáĽ áĽááłá á ááŤá°á°á áĽáááá˘
ááá ááᣠáĽááłááŠáľáŁ á ááłááľ áá°áŚá˝ á áᣠáĽá á¨á°ááŤáŠ áŤáá°áááš áŁá áŞáŤáľ ááť á á ááá ááŤá¨áᣠá¨á áá á°áľ á¨ááá áŁá ᪠ááĽáˇá - á፠áľááŞááľ á ááľá áĽá áľááŞááľ á á፠áá á°á¨ áľááľáł áááá á áá°áááᢠá ááá á°á¨áᣠáá á á áĽááá áĽáŠ ááłáĽ á°áĽá áá ፠áá˝ááᣠááá áá áľá-á ááá á¨á˛á˝ áĽá¨áśá˝ áá á¨á°ááŤá áŽáľá áááľá°ááá á áá°ááᢠá á á ááá áá¨ááááľ á¨á፠á°áŤá°áá˝á á áá°áá áĽá¨áá¨á¨ ááᣠáĽá Emscripten ááĽááą á¨áá¨áľ á á°ááŁá á á ááᣠáá á áĽáą áá áĽáá ááá á ááááááᢠááᲠáľááŞáá á¨áá áŽáľ ááľ á ááľ áá ᏠáááŁáľ áá á¨áĽá - áááľá áአá¨áľ áĽáá°á°á¨áá° áááá ᣠá áá ááľá ááľáĽ á¨ááá°áá á¨áá á áŤá áá° á°áᨠá°ááŁá áŤáááłá áą áĽá áĽááá á á°ááŁáŤáľ á ááľ á á ááľ á¨ááá áá áá°ááá˘
ááá°á áá¨áŤ
á á ááľ áá
áľ, áááŽá˝ á ááá áĽááłá ááá˝ áá, áĽá á áŽáą áá°á¨áľ áľááłá áŤááá ááŤáá˝ ááááľ áá° áĽáŠ ááá áĽáá°ááá፠ááá˝ áá. áá áááŤ: ááŤáá˝áá˝á á¨áá¨áá áá°áľá á áá ááááľ áá°áŤááľ á áľááá áá. áľááá
, á ááŤá áá áľáŠáľ á¨áá á¨á áľáŞáľ 2.4.1, á°ááľáˇá (2.5.0 á áá°áá, ááááŤáąá, ááźá á áłááá, áĽáľáŤáá áŤáá°áŤá á¨á á˛áą áľáŞáľ áľá
á°áśá˝ áááŤá, áá á¨áĽá áľá
á°áśá˝ ááĽá á á áá¸á). ), áĽá á¨ááááŞáŤá ááá á á°á
á áĽáá°áá á°á˝áá thread-posix.c
. á°á
á ᣠáááľá ᣠáá áŤá
á á°á
áááą á¨á°á á á áá-á ááľ á°á áá° áááľ á¨ááŤááŤáá ááś áĽáá áááľá¨á á¨áá¨á¨ áá˛áŤáá á°ááŁáŠ á°á ááˇáᢠabort()
- á áĽááἠáá
áááá á˝ááŽá˝ á á ááľ áá á áááłá ᣠáá á˘áŤááľ á á¸áĽáł á¨ááἠá ááááŁá á á¨ááá á á¨á áá á áľá°áłá˝ ááá˘
á á á ááá á¨Emscripten á ááŤáŽá˝ áŽáľ áá° JS á ááľá°ááá áá áĽá áŤáááᢠ-s ASSERTIONS=1 -s SAFE_HEAP=1
- áá° áŤáá°áŁáᨠá áľáŤáť ááľá¨áľ áŤá á ááłááľ áŤáá°ááḠáŁá
áŞá áááá (áá
á á¨ááłá°ááľ á¨á°á°á¨áĄ áľááľáŽá˝ áŽáľ áá áá˝á á¨áááŁáŁá áá) HEAP32[addr >> 2] = 1
) ááá á¨á°ááŁá áĽáŞ á¨á°áłáłá° á¨áááŞáá˝ áĽááľ ááá˘
á áááŤá˝á áá á¨á á°ááá áľá á°áśá˝ á¨á°áᨠááłá áá¸á. á áľááľá áĽááłááŠáľ Qemu "Degenerate" TCI (áĽáá á áŽáľ á°ááá) á¨áá°ááá áŽáľ áľáááľ ááᣠá áá áĽá áĽáľáá á¨ááá C compiler Qemu á á á á˛áľ á ááá´áá¸á áááááŁáľ áĽá áááľáŹáľ á á áá ááá áááľ "áĽáľáá á¨ááá". ááľáá á ááá ááŠáᣠáĽá TCI áŁááľ áŽáľ á˛á°áá°á áŤáá°áŁáᨠááłá¨áťá áĽáá°áá áá áłááᢠáŤá áááľ á ááá ááááľ ARM áĽá ááá˝ á¨ááľ á¨á°áŁáŁá ááłá¨áť áŤáá¸á áŞá áŤá áá áŤá ááááŤáąá áá°á á ᨠTCG ááᣠáľááá¸á á¤á°á áŽáľ áŤáááŤáᣠááá áá TCI á áĽááą áá áá°áŤá áá áá áĽáŤá ááᢠááá ᣠáĽáá° á°ááá ᣠá°ááłáłá á¨áá ááá á TCI á°ááśá˝ ááľáĽ á ááá áłááˇáᢠá áá ááááŤáľáŁ á áá á¨áá ááá á¨á°áááľ áŤáá°ááŁá á ááŁáĽ á¨á°ááŁá áĽáŞáá˝ áá° áŽáľ á°á¨ááŠá˘
ááá ááľááľ
á áá¤áąá, á á˛á˛á á ááľáĽ áŤáá áŤáá°áŁáŁá ááłá¨áť á°áľá°áŤááá, ááá áá ááŽá°á°á, RCU, áĽá á á°áŤá á ááľ ááá á°áĽá áá áŤá. áĽá áĽáá
áĽá á¨á ááŤáŠ áá Qemu áĽá¨áŽáĽáŠ ááᢠ-d exec,in_asm,out_asm
, áá
á áááľ á¨áľááš á¨áŽáľ áĽááŽá˝ áĽáá°ááá¸á áááá áŤáľáááááłá, áĽá á áľááá áá, á¨áĽáááł áŽáľ áá áĽáá°áá, á¨á áľá°ááá
áŽáľ áá áĽáá° áá (á áá
ááłá áá áŁááľáŽáľ) ááťá. ááááŤáᣠá ááŤáł á¨áľááá áĽááŽá˝á áŤáľáá˝ááᣠá¨á°ááŠáľá á¨áá¨á áááĽááľ áá˝áá RCU á áá ááááŤá áĽá ... áá ááťáᢠabort()
á°ááŁá ááľáĽ free()
. á°ááŁáá á ááá¨áĽ free()
á¨á°áá°á á áá
á°á¨ áľááľáł á ááľ áŁááľ áľáááľ áŁááśá˝ ááľáĽ áŁáá á¨ááťáť ááŁáŤ áŤáľá ááľáĽ ᣠá áĽáá áá á ááá áĽáá°áá
áŤá ááá áááł ááťáť áĽáá°áá ᨠáááá
á˝ááá˘
áááá áá áá¸áľ - áĽáá´áľ áĽáŠ áá ... áĽáá°áá
áŁá áááł ááľáĽ á ááľ á áá ááłáŞáŤ á á - á¨á°ááłáłá áááŽá˝ (á¨á°áťá) á°ááá
áááľáŽá˝ áááᥠáĽá á áŤáááŞááľ áľá áŤáŤááąáľ. á¨áĽááľ áááł á áá, áááľáŽá˝ ááá áá á. á á°ááłáłáŠ á ááŤáŽá˝ áĽáŽáŁáá - á ááá á áááť áá áááľáá ᣠáłáá°áᾠᣠá áĽáááą á ááááᢠá°áľ á¨ááá áá ᣠá áĽááἠ- á á¨á
ᣠá¨ááá áŽáśá˝ á áľááá á°ááłáłá á ááá áŠá ᣠáá
á áŤáľáááá ᣠááááŤáąá áááá áĽááľ ááá˝ á ááŤáŽá˝á ááá á ááá ᣠáá áŤáááŞááľ á áá - ááááŞáŤ áá
áá áľá
á°áľ á áľá°áŤáááá ᣠáĽá á¨á፠ᣠáĽá á¨ááአᢠáĽáľáá áá ᣠááá áááŁáᢠáĽá áŤáááŞááľ áľá á°ááłáłá ááá áĽá¨áŽáĽáŠ áá ... Y-y-y, uh-uh, uh-uh, ááá¨, á áá°á áááľ á°ááᨠáĽá á¨á°áłáłá° áľááľáł ááłá¨áť á ááľ áá á ááľá ááá፠áŤá á¨ááááŞáŤáá áľá
á°áľ á áá, áľá ááľááľ áłáá á
áľ. áĽááą áĽáá°áááľáŁ á
áááľ ááá
á ááááá˝áá - á¨á°á áá˝ ááŽááŤá á áŤáááŞááľ áľá á˛ááá áá áá¸áą áŤáááᢠá¨ááá ááá áĽááá
áá˝ ááᢠá¨áĽá ááááľ á ááľ áá á áá áŁáá áááŞáŤ á áŤáŁá˘ áŁá áááť áá á¨á°á¨á°áą á áá ᣠgdb áĽáŤ á áłááˇá ᢠmemset
-á ááľá á áá áá á¨áá°áŤ á áá áŤáá mmx
, ááá xmm
áááááŁáᣠá¨á፠ááááŁáľ á¨áá á¨á á°ááá áľá
á°áľ áá áᣠááá áĽááłá á ááá áááá á¨áŁáľ ááá˘
áĽáşáŁ Valgrind áĽáá
áĽá¨á¨áł áŤá á áááľááᢠáĽá áĽáá
á áŁá á áľááŤáá ááá á°ááᨠ- ááá ááá ᣠá¨áááľáá ᣠá¨áááá¨á áĽááłá ᣠáá á áááŽáá˝ á¨ááá አáááŞáŤáá˝ á ááľ áá¨á°áľ á áá˝á ááľá°áľ ááááŤáľ áášá áŁááłáá ááááŤáśá˝ áááľááᢠáá¨áĽá áá, áĽáá´áľ ááłá°á áĽáá°ááťá áĽááłá ááá˝ á ááá á¨á. á áá¨á¨áťáŁ á ááá á°ááᏠáá¨á áá á¨áĽáᢠáŤáľáá áĽáá°áá á¨á°ááá áľá áá°á ááĽáŠ áĽáá°ááááľá ááááá á ááľ ááááľ áááľáŽá˝ áłáł áŤáłáŤáᢠáĽá áĽáá áĽá áĽáá ᣠáá
áááľáŽá˝ ááĽá¨ááá á ááá ááľáĽ ᨠBIOS áá á°áááˇá - áááľá ᣠá áá á á á áááł á áĽááá áááľ áááá á¨á°áťáá ááľ áááˇá ᣠáĽá ááá
ááľ á¨á°áťáá áĽááłá ááá
áá áᢠá°á
á ᣠá¨á፠áĽáá°áá
áŤá ááá - á Emscripten ááľáĽ ᣠáĽáá° áĽáľá áá ᣠá¨á áľáŤáťáá áŚáł á áááá° á áááĽáá ᣠá ááľáĄá ááá ááłáłáá˝ á¨áá ᣠáľááá
á áŽáą áá
ááľ ááἠááá áá á ááľ áŚáł ááá áá˝áá á¨áá¨á¨áťá áŠáŤ ᣠáááá¨áąá˘ á áá¨áá ááᣠá áááá áááá¨áąáŁ áĽá ፠áŤáá°ááá ᣠááá°áá°á áá¨á áŤááᢠáĽáááľ ááᣠá¨ááááá ááἠá áá ááááááľ áĽááľ á°áááá˝á áŤáłáááᣠáá áá ááľá¨á áá˝ááᢠá áá¤áąá, áŁáŽáľ (BIOS) á¨áááŤá ááľ áá° áĽáááł áá
á°á¨ áľááľáł á¨ááááĽáĽ á ááľ á¨á°áá°á ááľáá á°áááˇá - áĽá á áĽáááĽ, á áá áŁá ááŤá ááľáĽ á á áŚáł á ááá á¨á. á¨á፠áĽáááł ááľ á áľáŤáť ááá ááááľ á ááľ á°ááŁá á áľá¨áľááᢠqemu_anon_ram_alloc
á ááá ááľáĽ oslib-posix.c
- á ááááŽá áĽáá°áá¨á°áá áá á-á ááłááľ áá á áľáŤáťáá ᨠ2 áᣠáá á áŤáá ááá áá˝ áá áááŁá á á áá ááá áá˝áá ᣠááá
á áĽá áĽáá áááá ᢠmmap
á ááááŞáŤ áľáá˝ á°á¨ááŞ, áĽá á¨á፠á áĽááłáł á ááŤáááľ áľáááá ááááą munmap
. áĽá áĽáá°áá
á áááľ á á°ááá á¨ááŤáľááá á¨áá ᨠ2 áá áŁááľ ááá
áá¤áąá áĽáá áááá getpagesize()
- mmap
áá á ááá á¨á°áŁáŁá á áľáŤáť áá°áŁá ... áľááá
á Emscripten ááľáĽ mmap
áĽáť áá°áá malloc
, áĽá áŤ, á áĽáááĽ, á ááš áá á ááŁáŁáá. á á á áááᣠááááľ ááŤáľ áŤá áłá¨á áľá
á°áľ á ááἠá°áľá°áŤáááᢠдвŃŃ
ááľááŽá˝.
á¨áĽáŞ á°ááŁáŤáľ áŁá áŞáŤáľ
áĽá á áá ááŽá°á°á á ááľ ááá áĽá¨áá ᨠáá ᣠQemu á áá áá˝á ᣠáá áľááŞá á áá áŤá ᣠáĽá ááŽá°á°áŠ á áá¤áą á áááá á ááĽááľ ááá áśá˝á áŤá°áááᢠ-d exec,in_asm,out_asm
. á ááľ ááááľ áá áᥠá¨á°ááľ ááŁáŞ ááá¨áŚá˝ á áááĄá (á á°ááĽáŁ ááá á á á áááᣠááá ááá¨áŚá˝)ᢠáĽá á áĽááἠᣠááá¨áŚá˝ á á°áá°á ááááŤáśá˝ á¨á áŠáľ á¨á ááŹá á°ááá
áľáĽá°áŁ áŤáá°á¨áṠᣠá°ááłáłá ááľá á°áááˇáᢠáá áá
á ááá áááą á ááá á¨áᥠá¨áá áŤáá á ááŤá áá á¨ááĄáľá áąáŤáá˝ ááááá áĽáá°ááŤáłá¨á á¨ááľáá¸á፠ááááśá˝ áá°á áĽáá áááŤáŤáᢠáĽáá
áá á áľáááŞáá á áá áá á¨á°ááłáá áá
á
á áááአá áá áľ emrun
á¨áá¨á áá
ááľ á¨áááŁáł áá
ááľ áá á áľááá ááŤááŤá áá°áľ á áá°ááᢠá á áłáš ááľáĽ á¨áá°áŤá ááŽááŤá áĽáá´áľ áĽáá°áááá á áľááá á ááá
á emrun
, ááá áá á áá¤áą ááľáĽ áŤá á ááłááľ ááľááŽá˝ áĽáá°áá á°áľá°áŤááá ááááŁá, áľááá
á¨ááŠááą ááŠááľ áľáŤáŽá˝ á°ááŤáá°áá áĽá áááá ááááŤáľ á áá°áá. á á á ááá, áĽáá° áááŞáŤá ááá˝ áá ljmpl
áá° á°ááŤáŠ á áľáŤáťáá˝ á¨áá°á¨á á˝ááá á á, áĽá áŁááľáŽáľ á áá á¨áą á¨á°áᨠáá: á á áá°áá ááľáĽ á¨á¨áłáľ á°ááŁáŠá áááĽáŤáľ áááŞáŤ á á, á áááá áá á áá°áá. áááŞáŤáá á¨á°ááá¨áľá áĽá áĽááá
á áááŞáŤáá˝ á¨áá°á¨áááá áŽáľ áŤá á á áá ᣠá ááááŞáŤ ᣠá áááᥠááľáĽ á ááĽáł á¨áą á ááľ áĽáá°áá ᨠááá
áá ᢠcr0
áááἠá°á°áŤ - áĽáá˛áá á á¨áłáľ áĽáá - ááŽá°á°áŠá áá° á¨á°á á á áááł á ááľá°ááá áĽá á ááá°á á°á¨á ᨠjs áľáŞáľ áá° á¨á°á á á áááł á áá°ááá á. áĽáááłá áá ááá á¨Emscripten áŁá
᪠áĽáá° áááŞáŤ áľáá ፠áŽáľá áááá á ááá°á á áááá ááᢠcall
á TCI ááľáĽ á¨áľááá á°ááŁá á áá áá° á ááľ ááááľ ááĽáá long long f(int arg0, .. int arg9)
- á°ááŁáŤáľ á áľááááá á¨áááá áĽááľ áá áŤáľ á ááŁá¸áᢠáá
á°áἠá¨á°áŁá°, áĽáá° áá¨á á
áá
áśá˝, ááŽááŤá áááľáá (áĽáŠ áá), ááá á¨á°áłáłá°áá á°ááŁá á¨ááś áá°áá (áá
á ááá¨á á áłáá áááá). áŚáľá°áá á ááŤá á°áá á á - ááááŽá˝á á¨áá¨áአ/ á¨ááĽá áá á
ááŤáá˝á ááááᾠᣠáá á á á ááá áĽááá
áá á
ááŤáá˝ áĽá áŚáł áááľáłá ᣠááá áĽááłá á áĽáááą áĽá á¨ááś á áá áá á
ááŤáá˝ áĽáť áĽááááá ᢠáá
áĽáť á áŁá á áłáá áá, ááá áá áá áἠá¨áŁáľ á˝áá áá á°áá: áá° áá á
á፠á°ááŁáŤáľ á¨ááᨠáŽáľ ááľáĽ, ááááŽá˝ á°áááŻá-á¨á°ááá áá á, áĽáť ââá¨ááአááááŽá˝ áá á°ááŁá á ááłááľ áá á°áĽá á áá°áá - áááŤá, áá ááľáĽ. á¨áĽá á¨libffi á á°ááŁá áᢠáá¸áá á ááłááľ á¨áłáśá˝ á ááá á áá°áá°ááá˘
áĽáá° áĽáľá ááᣠQemu á áá˝á ááá ἠá¨áá˝á á¨á¨áłáśá˝ áááá áĽáá° áŤáľá ááá á ááá˘
DEF_HELPER_0(lock, void)
DEF_HELPER_0(unlock, void)
DEF_HELPER_3(write_eflags, void, env, tl, i32)
á áŁá á áľáá áĽá
á áá áááá: á ááááŞáŤ, áááŽáá˝ á áŁá á ááŤáľááá ááááľ áĽáá°áá á°ááá¸áá DEF_HELPER_n
, áĽá á¨á፠áŤáŤáľáą helper.h
. áĽáľá¨ áĽáááłá áľá¨áľ áááŽá áá° ááá
á áá᪠áĽá áá° áŽá á°ááááˇá ᣠáĽá á¨á፠áľááľá ááááťá ᣠáĽá á ááĽá¨ áááŽá˝ ááľá - #include <helper.h>
á áá¤áąá, á áá¨á¨áť á¤á°-áá˝áááąá áááá¨á ááááŤáľ á ááá
áĽá á áá, á¨á፠á áá, áá°á°áŠ áŤáá áááľáá. ááá áĽááłá memtest86+ á á¤á°á ááŁá¤ ááľáĽ ááľáŤáľ á˘á˝áá áľááŞá á ááŤá˝ áľááá°ááᨠáááľááᢠáĽáá
áá ᨠQemu áĽáá I/O áŽáľ á áŽáŽá˛á ááľáĽ ááťáá ááá˝ ááľá¨á áŤáľááááᢠEmscripten á¨áŤáą á áŁá á°ááŽáá á á°ááŁá á á ááᣠáá á ááá á Qemu áŽáľ ááľáĽ áá°áá á áá áľáŁ áĽá ááŽá°á°áŠá á áá áá¨á áá˝ááᥠQemu á ááŤáŽá˝á áá°áááᢠ-kernel
, -initrd
, -append
á ááááá á¨ááá ááłáŞáŤáá˝ áłáá áá ááááľá ááá áááłá memtest86+ ááľááłáľ áá˝ááᢠáá á˝áአáĽáá
á áᥠá á ááŹá ááŁá¤ ááľáĽ á ááľ á°á á¨ááááľ á¨ááá áá° áŽááśá á¨áááŁáá á ááŤá á¨á ááŤá áá áááá¨áľ áá˝ááᢠ-nographic
, áĽá á¨á áłáš áá° á°ááá¨á áľ á°áááá ááá áá¤áľ á¨áá emrun
ᣠá áááŁáᢠáááľá ᣠááá˝ á áá°áá-á áááŁáŁáŞá áĽá¨á°áŤ á áá°áá ááá á¨ááŤáááľ áá
ááľá˘ áĽá á¨á፠áľáá˝ áá á á
áłá¨áᢠâá áááŁáŁáŞá á°ááś áłááá á ááľáł áĽáá áľááá á¨ááâ áá á°áá áĽá á¨á ááľáľ á°áá á áá ááŹá áĽá áááĽááśá˝á áá° áŽááśá áá áŁáá áĽá á°áá ááĽá áá áᢠá ááá áŽáááá°á á á á ááá áĽáá°áá°áŤ ááá˝ áá áĽá ᨠSDL2 áá áááľáŤáľ áŽáąá áááá áŤáľáááááłáᢠáĽáá° á áááłá°á áá áá
á á¤á°-áá˝áááľ áĽáá´áľ áĽáá°áá áá á ááá
áᣠáľááá
á á ááłááľ áŚáłáá˝ á áááá° áĽááá ááá°áľ áá á¨áĽáᢠá á ááľ áá
áľáŁ ááľáአparallel0 á á°ááŤá áłáŤ áá á áľááŞá áá áĽáá áľááá áááᣠáá
á áá° á ááłááľ ááłáŚá˝ á ááŤá˘ á áá¤áąá, ááĽáĄ Qemu á á ááľ á áŤáá ááľáŽáľ ááľáĽ á ááŤáł áááŁá ááľáŽáśá˝á áá¨ááłá, á ááŤá¨áá¸á Ctrl-Alt-n á á áá áá áááŤá¨á áá˝áá-á á ááŹá ááŁá¤ ááľáĽ áá°áŤá, ááá áá á Emscripten ááľáĽ á áá°áá. á ááŤáŽá˝á á áá áá á ááľááá ááľáŽáśá˝á áŤáľáááą á áá -monitor none -parallel none -serial none
áĽá áľááŞá á áá á áĽáŤááłááą ááŹá áá áĽáá°áá áĽáá˛áá¨á˝ áááľáá°áľ áááŞáŤáá˝ á áľáááľ á°á°áŤá˘
áŽáŽá˛ááľ
áľááá
á á áłáš ááľáĽ ááŽá¨á
áá áŤá ᣠáá á á ááľ á˛áľá áá ááá á áľá°áłá˝ ááá á áĽáą ááľáĽ áááá á áá˝áá ᣠááááŤáąá I / O ááá áĽááł áľááá - ááŽáá˛áá˝ áľááá áá°áá á áŤáľáááááłáᢠQemu ááľáááá á ááŤáł á¨áŽááŚáłáá ááᣠá ááᣠááá áá á á፠áľááŞááľ áĽá á Emscripten áŽáľ áááŹá°á áአáŁá
áŞáá˝ ááááŤáľáŁ ááá áááŁá á áĽáť áááá á áá˝ááᢠ"ááá ááá á ááˇá, áááľá°á áĽá¨á°ááá° áá" áááľáá, ááá áá Emscripten ááá˘áá˝ áááá ááá á áľááľáá ááľá°áá. áá
á áŁá á áľáá áá á¨á°á°áá á¨áᥠáĽáá° á°ááŁá áĽáŞ áĽááĽáŤ emscripten_sleep
áĽá ááá˝ á ááŤáł á°áá˝ Asyncify áá´á á áá ááᣠáĽáá˛áá á áá áĽáŞáá˝ áĽá áĽáŞáá˝ áŤáááľ áááľ ááłáŽá˝ á ááą ááá áá áá°áá˝áá áľ ááááá á°ááŁáᢠáĽá á áá á¨áĽáŤááłááą á á áŤáŁáŞ áĽáŞ á ááľ á¨á áľáá á ááľ áĽááááŁáá áĽá á¨áĽáŞá á áá áá˛áŤáá áŤáá°ááłá°á áĽáŞ áá¨á°áąá áĽáááľáťáá ᣠáĽá áŤá ᣠá áá
á á˛áá á ááľ ááľáĽ áááá á¨á áŤáŁá˘ á°ááááŽá˝ áĽááľáááŁáá ᣠá¨áľááá á°ááŁá áŤááááąá˘ áááŁá áŞáŤáá áá° á áááá áááá á á áľááá á áááá áľ áá áááľá°ááá áĽá á áá áŤáá á°ááŁá áááĄá˘ áá¤áąá á¨ááĽááľ áá°á áĽá፠ááᢠ-O3
. á¨á°áá á¨áá áŽáľ á ááłááᣠáĽá Chromium áá
á°á¨ áľááľáłá áá áá áĽá áá ááťáᢠáŤá á á ááŁá ááááľ á¨ááááá á°ááá¨áľáŠá...áĽáş áá áá áᣠ500+ MB javascriptá á á áłá˘ááľ áĽááłá áá áĽáá˛áŤááťá˝ á¨á°á á¨á
áŠá á°áá áĽááááá˘
áĽáá° á áááłá°á áá á Asyncify á¨áľáá á¤á°-áá˝áááľ ááľáĽ áŤááľ áźáŽá˝ ááá°ááá˝ á ááá áŠá longjmp
-ami, á á¨áášáá ááŽá°á°á áŽáľ ááľáĽ áĽá
á áá á¨ááá, ááá áá áĽááá
á áźáŽá˝ á¨ááŤá°ááá áĽá ááá ááá áĽáŠ áĽáá°áá á áľááľáś á ááśá˝á á¨ááŤáľáľ áľáá˝ áááľá°á á áá, áŽáą á ááˇá. áĽá á¨á፠á ááľ áĽáááł ááá á°ááá¨áĄ á ááłááľ áá á¨áááłá°áŤ áŽáľ áźáŽá˝ áá°áŠ áá á - áĽáá° á áááá á áááᎠá¨áá áááľ áŤáá áľ áŽáąá á¨ááŤá áášáľ - á ááľ á°á ááľááá á¨á°áŤááá áá´ááľ áááŤá ááᎠáá áᢠáĽáá° áĽáľá áá, áá
á á°á¨áłáłá áŽáľ ááľáĽ ááááŤáłá á˝áá á áá°áá - áĽá á á¤ááľááŞááľ á¨áá°á áá áá°á ááá á¨áá áá á°ááŁá áĽáť á°á ááአᣠáá á ááłááľ áá áŤáá°ááłá°áá áĽáŞ ááááá áá á áá ááłá áĽá á á፠á
á˝á áľ á ááˇá ᢠsetTimeout
á¨ááá áá - áľááá
áŽáą á¨ááłáá áľáááá˝ áłááᣠáá° ááá áá°áľ ááŁá˘ ááá፠á ááá áá áá áĽáá°áá ááá áĽá emscripten_sleep
, áĽá ᨠmutex á˝ááŽá˝ áááá. áŽáą á¨á áá á ááááŽá á ááá - áááአᣠá áĽááṠᣠá¨áááĽááá á¨á ááá˝á ááŹá á¨ááŤááá
áŽáľ á¨ááá - ááŽá°á°áŠ á ááľ ááá á˛áŤá°á áĽá á፠ááš á á¨ááá ááťáťááᢠááá áá á˝ááŽáš á áá
áĽáť á ááááᥠá ááłááľ áá á¨á
á ááľáŤ áŤáááá ááŠááľ áĽá áľá
á°áľ á á¸áĽáł áŤá ááᢠá ááŤá áá á°áľá áááŹá áľ áá á ᣠáá áá° ááľ áľááá¨áľ ᣠá˝áአáá
áá áĽááá-á¨áŽáá˛á áŽáľ ᣠá áĽááṠᣠá áá ááá setTimeout
(á á°ááĽ, ááá á˘áŤááľ áĽááľá áĽáá°ááŤáľáĄáľ áĽá áá á áá°áá): á°ááŁá emscripten_yield
áá áŤáá°ááłá°á á¨áĽáŞ áŁáá˛áŤ áŤáááŁáᢠá¨á áá ፠ááᢠemscripten_coroutine_next
áŤáá°ááłá°á á°ááŁá á áá°ááᥠá¨ááľáĽáŁ áŁáá˛áŤáá áááľáťáᣠáłáá áŤáľááá¨á áĽá áááŁá áŞáŤáá áá° áľááááá áŚáł áŤáľá°ááááᢠáááľá á¨ááá áááłáľ áĽá፠áŤá ááᢠá˝áአáŤáá á¨áĽá
á-á áá-ááť á ááŁá á¨áŽáŽá˛á áá á˛á°áá¨á á áá á¨á áľ áá á áľááá á¨áá á¨áŽáľ ááľáá á¨ááŁáŠ á¨áŽááŚáłáá á°áá áľááááá áĽáŠ á°ááŁáŠ ááᢠqemu_in_coroutine
á áá¸áľ ááááľ á˛ááŁá áĽáááľ á°ááá°á˘ áá
á áĽáŞáá á á°á¨á° emscripten_yield
, á áአáá ááá ááá á ááá á¨á emscripten_coroutine_next
, ááá áĽáľá¨ áá á°ááááˇá, áá á áá°áá setTimeout
áĽááłááŠáľ áá¤ááá˘á˝á á ááá á¨áá˘
á¨ááŤáľááŞááľ áŽáľ áááá¨áľ
áĽá áĽáá ᣠá áĽááṠᣠá¨á°ááŁá áá âáĽááá áá° áá ááááľâ ááᢠáĽáááł á áá°áá. á áĽááἠQemu á á á áłáš ááľáĽ áĽá á ááľáĄá Node.js á áŤáľáŹáą ᣠá á°ááĽáŽ ᣠá Qemu ááľáĽ áŽáľ á¨á°áá ᨠá áá ᣠáá ááá á¨á°áᨠá፠áľááŞááľ áĽáááááᢠáá á ááá ᣠáá - á áá°áá ᣠáá á¨á°ááá˘áŚá˝ áááĽá˘
á ááááŞáŤáŁ Qemu áĽáá´áľ áĽáá°áá°áŤ áľáá˝á˘ áĽáŁááá áá˛áŤáá áá
ááł áŤáľááááᥠáĽá ááŽáá˝áá á¨áá ááᢠá áá°ááá áĽá áľááłáááź á áŚáłáá˝ áá á¨á°áłáłáą ááá áá˝ááᢠáĽááą áĽáá°áááľ, "á¨á°ááŞá á áľá°áŤá¨áľ á¨ááá
አá áľá°áŤá¨áľ, á¨áá á áá˛áŽáá˛ááľ áĽá á¨á፠ááľá°áá áá áĽáá˛áŁáŁá á ááá°áľá." Qemu á ááŤáł á¨áá°áá á¨áĽáááł á ááá´áá¸á á áá áĽá áĽáŤááłááłá¸á áĽáá° áá፠á áá¸áᢠtarget-i386
. á ááááĄá áľ áá, ááĽá á¨áĽáááł á ááá´áá¸á áľááá áááá˝ áá˝áá, ááá áá áá¤áą áĽááľ áááľáŽá˝ áĽáť áááá. á¨áĽáááł á ááá´áá¸áá á¨áá°áá áŽáľ á á áŠá á ááłááľ ááľáŁá ᨠQemu áľáŤáá˝á áŤáááŤáᣠáá
á TCG (áĽáá
á áŽáľ áááŹá°á) á áľááľá áá° á áľá°ááá
á ááá´áá¸á áá˝á áŽáľ ááá¨áŤáᢠá tcg áá፠ááľáĽ áŁáá ᨠreadme ááá áá áĽáá°á°ááá¸áᣠáĽáą á ááááŞáŤ á¨áá°á á C áá áá¨áŞáŤ á áŤá áá áᣠáĽáąá ááá áᲠá°áľá°áŤáááᢠáľááá
ᣠáááłáᣠá¨áá
á°ááľ á ááá á˘áá á ááá´áá¸á áĽáááł á áá°ááᣠáá á áľá°ááá
á ááá´áá¸á ááᢠá á ááľ áá
áľ, áá á áŤá áłá¨ - áĽáá
á áŽáľ á°ááá (á˛á˛á á) , áĽáąá áŽáľ (á ááľ á áááľ á¨ááľáĽ áľáŤáá˝ áááľ ááťáá) áá ááľ á¨á°áá°á á áľá°ááá
á ááá´áá¸á áŽáľ áááŹá°á á ááá áľ áááł áá¨ááá á áá áľ. áĽáá° áĽáááą á¨áá, á°ááśáš áĽáá°ááá, áá
á áľá°ááá ááááá áĽáá° JIT áŽáľ áááŹá°á ááá°áŤ áá˝áá, á ááĽá áĽáť áłááá á áĽáŤáľá ááá. ááá áĽááłá á¨áĽáą ááá፠áá á áá áá
áłá áľáááá áĽááá á á áá°áááá˘
ááááŞáŤ áá áá ᨠTCG ááᣠáááľáŤáľ áá¨áአᣠáá á ááĽááľ á ááá áŽáśá˝ áĽá á áŁáá´áŽáľ áááŞáŤá áá áá á áá ááá áŤááá ááá፠á፠á°ááŁá ᣠáľáááá ᨠTCI á áľá°ááááá ááá á áá áá°áአᢠáá á á ááľ áá á ááŤáł áĽá áá˝á á°áĽáˇá-
- á¨áŽáľ áááŹá°áá á áá°áá áá áľ áá á¨áááŞáŤáá ááá፠áłááá á¨á áľá°ááááá áŽáľ áááá¨áľ ááťá áá áá˘
- ááĽáŤááłááą á¨á°ááá á¨áľááá áĽááł á°ááŁáŤáľá áááá¨áľ ááťáá ᣠáá áááłá ᣠá¨ááśá ááľáŤ á áá áĽáťá˘
- á á°áá á¨á áŽáľ áá ááἠá áá¨á°áľá áľ áá (áĽá áá ᣠáĽáá°ááłá¨á ᣠá¨ááťá áá ᣠá¨ááá áá áá á áŤááľ á°ááŁáŤáľ á áááá) á¨á°áá á¨áá ᨠJS áŽáľ ááľá ááľá¨á á ááĽá ᣠáá á˘áŤááľ áĽáąá ááá°áľ á ááľ ááá ááá¨áá ᢠá¨
áŚáľá°ááá ááĽáĽ á á°ááá¨á°áŁ áŽáą áááááŞáŤ áá á¨á°áá¸á á áá ááłá á áĽáá°ááťá áĽááá á á áá°áááᣠááá áá á¨ááááŞáŤááš áááľ ááĽáŚá˝ á á áá¸áá˘
ááááŞáŤ áá áŽáą á¨á°áá á¨á á ááá á¨áŁáá´áŽáľ áááŞáŤ á áľáŤáť á áľáá ááá¨áŞáŤ ááá áá ááŁááá áá áľá á¤ááľááŞáá°á á
ááá á ááľáłááľáŁ á¨áá á¨áá JS áááťá¸áľ áĽá áĽáá°áá áááᣠá¨á áá á¨á°á áŽáľ ááááá¨áľ áá°ááŠáŁá á°ááá á emmpirically áá° á¨áľááá áĽááłá áĽá¸áá á¨ááá˘áŤ ááĽáĄ á
áá áĽáá°áá á°á¨ááá§áᢠáĽáá áłáááᣠá¨áľáá˝ áá á áá áŽáľ á¨ááŤááá áŽáľ áááŹá°á á ááá á ifs (ááá áĽááłá áŤá loops)ᢠááá áá ááĽáá ááľá áá¸áá ááľá áááŞáŤá á¨á°áłáłá° ááááľ áĽááłáá áááĽááľ á°áĽáˇáᢠá áá
áááł, á áá
á¨ááľáá á°á¨á á¨áá¨á¨áťá áááŞáŤ áá á brcond
. á°á
áᣠá¨áá
á áááŞáŤ áľáááľ á¨á°á°ááá áĽáŞ á ááľ áĽá á áá á ááľ á áááľ áźá áĽá¨ááŤááᣠáĽá ... á ááłá¸áá á áá°áá¸áá ᣠáá á¨á°áá¨á¨ á áá ᣠáá¨áááŤá á ááá ááľááᢠá áá¨á¨áť ᣠá¨á°áá á¨áá áŽáľ á¨áá¨ááአá áá ᣠá¨á°áá¨á¨á á áá ᣠá áá áŤáá áááŞáŤ á ááá á¨ááá áĽáá°áá áĽáá°á°áŤá áĽá ááááŁáľá á á°áá á¨á á¨á፠áľááŞááľ áŽáľ á¨á°á áḠáááá á°ááááĽáŠá˘ áĽáá°ááŤá ááᢠááąá á¨á ááľ áááŁááľ áá° á áľá ááłá°á áá° ááá ááá á áááŤá ᣠáĽá á¨áŽáľ áááŹá°á á áá ἠááľáĽ áĽá¨á°áŤ ááá ááá
ááᢠá áá áŤáá á¨á˛á˘ áá°á á ááá á ááááłá˝áá áá¨ááἠáá á¨áĽáᣠáĽá áŤá°á¨áá á¨ááŁáŠá á˛á˘ á áľáŤáť á ááááľ ááááľ áľá á ááľáŤáá áĽáááĽáᢠá á°á¨ááŞá, áá
á˝ááŠá áááłá "áá
á¨áŁáá´áŽáľ ááŤá á¨á°áá¨á¨ ááá°á¨á á¨áľááš á¨ááአá°ááŁáŤáľ?" - á¨áá
á¨áľááá áĽááł áá á¨áááá°áá á°ááŁá áĽáť áá áá¸áľ áŤáľáááááłáᢠá áááŤá˝á áá á Chromium ááľáĽ áŤááá ááá áá áŁá áá (áá¨ááááľá áľááá áá ââáĽá ááá¨áŤ á¨á°áᨠá áłá˝ ááá áá áľáááááá) áá¨áááᾠᨠasm.js áľáłááłááľ áá á°áłááááśá˝á áĽááłáľá°áŤáá á¨áľáśááᣠá¨á፠á áá áŽáą á ááľáĽ á ááĽááľ ááľáŤáľ ááá¨á˘ Chromium
á¨ááᨠáŽáľ ááłá
Compiling 0x15b46d0:
CompiledTB[0x015b46d0] = function(stdlib, ffi, heap) {
"use asm";
var HEAP8 = new stdlib.Int8Array(heap);
var HEAP16 = new stdlib.Int16Array(heap);
var HEAP32 = new stdlib.Int32Array(heap);
var HEAPU8 = new stdlib.Uint8Array(heap);
var HEAPU16 = new stdlib.Uint16Array(heap);
var HEAPU32 = new stdlib.Uint32Array(heap);
var dynCall_iiiiiiiiiii = ffi.dynCall_iiiiiiiiiii;
var getTempRet0 = ffi.getTempRet0;
var badAlignment = ffi.badAlignment;
var _i64Add = ffi._i64Add;
var _i64Subtract = ffi._i64Subtract;
var Math_imul = ffi.Math_imul;
var _mul_unsigned_long_long = ffi._mul_unsigned_long_long;
var execute_if_compiled = ffi.execute_if_compiled;
var getThrew = ffi.getThrew;
var abort = ffi.abort;
var qemu_ld_ub = ffi.qemu_ld_ub;
var qemu_ld_leuw = ffi.qemu_ld_leuw;
var qemu_ld_leul = ffi.qemu_ld_leul;
var qemu_ld_beuw = ffi.qemu_ld_beuw;
var qemu_ld_beul = ffi.qemu_ld_beul;
var qemu_ld_beq = ffi.qemu_ld_beq;
var qemu_ld_leq = ffi.qemu_ld_leq;
var qemu_st_b = ffi.qemu_st_b;
var qemu_st_lew = ffi.qemu_st_lew;
var qemu_st_lel = ffi.qemu_st_lel;
var qemu_st_bew = ffi.qemu_st_bew;
var qemu_st_bel = ffi.qemu_st_bel;
var qemu_st_leq = ffi.qemu_st_leq;
var qemu_st_beq = ffi.qemu_st_beq;
function tb_fun(tb_ptr, env, sp_value, depth) {
tb_ptr = tb_ptr|0;
env = env|0;
sp_value = sp_value|0;
depth = depth|0;
var u0 = 0, u1 = 0, u2 = 0, u3 = 0, result = 0;
var r0 = 0, r1 = 0, r2 = 0, r3 = 0, r4 = 0, r5 = 0, r6 = 0, r7 = 0, r8 = 0, r9 = 0;
var r10 = 0, r11 = 0, r12 = 0, r13 = 0, r14 = 0, r15 = 0, r16 = 0, r17 = 0, r18 = 0, r19 = 0;
var r20 = 0, r21 = 0, r22 = 0, r23 = 0, r24 = 0, r25 = 0, r26 = 0, r27 = 0, r28 = 0, r29 = 0;
var r30 = 0, r31 = 0, r41 = 0, r42 = 0, r43 = 0, r44 = 0;
r14 = env|0;
r15 = sp_value|0;
START: do {
r0 = HEAPU32[((r14 + (-4))|0) >> 2] | 0;
r42 = 0;
result = ((r0|0) != (r42|0))|0;
HEAPU32[1445307] = r0;
HEAPU32[1445321] = r14;
if(result|0) {
HEAPU32[1445322] = r15;
return 0x0345bf93|0;
}
r0 = HEAPU32[((r14 + (16))|0) >> 2] | 0;
r42 = 8;
r0 = ((r0|0) - (r42|0))|0;
HEAPU32[(r14 + (16)) >> 2] = r0;
r1 = 8;
HEAPU32[(r14 + (44)) >> 2] = r1;
r1 = r0|0;
HEAPU32[(r14 + (40)) >> 2] = r1;
r42 = 4;
r0 = ((r0|0) + (r42|0))|0;
r2 = HEAPU32[((r14 + (24))|0) >> 2] | 0;
HEAPU32[1445307] = r0;
HEAPU32[1445308] = r1;
HEAPU32[1445309] = r2;
HEAPU32[1445321] = r14;
HEAPU32[1445322] = r15;
qemu_st_lel(env|0, r0|0, r2|0, 34, 22759218);
if(getThrew() | 0) abort();
r0 = 3241038392;
HEAPU32[1445307] = r0;
r0 = qemu_ld_leul(env|0, r0|0, 34, 22759233)|0;
if(getThrew() | 0) abort();
HEAPU32[(r14 + (24)) >> 2] = r0;
r1 = HEAPU32[((r14 + (12))|0) >> 2] | 0;
r2 = HEAPU32[((r14 + (40))|0) >> 2] | 0;
HEAPU32[1445307] = r0;
HEAPU32[1445308] = r1;
HEAPU32[1445309] = r2;
qemu_st_lel(env|0, r2|0, r1|0, 34, 22759265);
if(getThrew() | 0) abort();
r0 = HEAPU32[((r14 + (24))|0) >> 2] | 0;
HEAPU32[(r14 + (40)) >> 2] = r0;
r1 = 24;
HEAPU32[(r14 + (52)) >> 2] = r1;
r42 = 0;
result = ((r0|0) == (r42|0))|0;
if(result|0) {
HEAPU32[1445307] = r0;
HEAPU32[1445308] = r1;
}
HEAPU32[1445307] = r0;
HEAPU32[1445308] = r1;
return execute_if_compiled(22759392|0, env|0, sp_value|0, depth|0) | 0;
return execute_if_compiled(23164080|0, env|0, sp_value|0, depth|0) | 0;
break;
} while(1); abort(); return 0|0;
}
return {tb_fun: tb_fun};
}(window, CompilerFFI, Module.buffer)["tb_fun"]
áá°áá°ááŤ
áľááá
, áľáŤá á ááá á áá°á áááá, ááá áá áá
áá á¨á¨á
á áá áááŁáł ááá ááá
á ááľáĽá, áĽá á áá¤áŤáá. áĽáá áĽáľáŤáá áŤááá áááá á áá°ááŠá˘ áŽáą á áŚáłáá˝ á áľá᪠áá, ááááŤáąá áá¨áŤ áá, áĽá áá áá°á¨á áĽááłáá áľ á áľááľá ááá˝ á áá°áá. ááááŁáľáŁ á¨á፠á á ááłááľ á°á¨á᪠áááá ᨠQemu áľáŞáľ áá áá°á á á¨á áśáá á°ááśá˝á ááľá áľ á ááŚáľá˘ áĽáľá¨ááŤá áľá¨áľ á áĽáá á
áááľ ááľáĽ á ááľ ááľáĽ á
áááŤá á á-á áŠá˛áŤá áááá ááá፠ááĽáŤááłááą á áá ááááľ âá°á¨áâ á°á¨ááŻá ᢠáĽáá° áĽáááą á¨áá, áá
á˝áá á á¨áá°á á°á¨á á¨áá°áá°ááŤáá áĽáá°áá áá°á¨á áá git log
.
áááá ááá¨á áá˝áá
á áľááľá á¨áá°áŤá ááááĄ-
- x86 áááŁá ááŽá°á°á áĽá¨á°áŤ ááá˘
- á¨áá˝á áŽáľ áá° ááŤáľááŞááľ á¨áá áᲠáŽáľ áááŹá°á á¨áá°áŤ ááŽáśáłáá á áá˘
- ááá˝ áŁá 32-á˘áľ á¨áĽáááł á ááá´áá¸á áááááŁáľ áŁáś á áᥠá áá áá¤áá ááá¤áľ á ááá´áá¸á á ááááľ ááľááť á°á¨á áá á á áłáš ááľáĽ áŤááá ááá áá ፠ááľáá áá˝ááá˘
áá áá ááľá¨á ááťáá
- ááľáá°áá ááá áᢠá áá áᲠáááłá á˘áá á¨á¨áášáá x86 áááá áááľáá (ááá áá áĽá á¨á°áá°á áááľáá áĽá á ááá´áá¸á áŤáá áá Qemu ááá áá˝áá)
- áá°á á á áááá˝ ááľáŠ - á¨áĽá á¨áľá ááᢠᣠáĽáááąá ááááá ᣠá áŁá - á áŁá áá ᣠáľáááá áá áá á¨áťááŠáľá áá°á ááá á¨á˘ááľááŞááľ ááá áĽáá°áá áááááá˘
- áá áἠááľáĽáľáĽ á¨Qemu áŁá áŞáŤáľá ááááľ áááአ- á ááłá¨ áá¨áĽáŁ VM ááá°áľáŁ ááá°á˘
- á¨á°ááá: áá°á á˛á á¨áá áĽá ááá˝ ááŽáááśá˝ á á¨áá˝ áĽááłá°á¨ááľ áĽááľ áĽáľááśá˝áá áĽá á¨áłá፠áŞáááśá˝á áEmscripten áá°áá ááľá áľ áŤáľáááááłáᢠáEmscripten áŤá°á¨ááľá á áľá°áá á á á°ááá᪠áĽáá° á°ááŁáŤá¸á ááá áá áľááľáťááľ áĽááá°ááááá˘
ááá: hab.com