JIT เชธเชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ Qemu.js: เชธเซเชŸเชซเชฟเช‚เช— เชนเชœเซ เชชเชฃ เชชเชพเช›เซเช‚ เชซเซ‡เชฐเชตเซ€ เชถเช•เชพเชฏ เช›เซ‡

เชฅเซ‹เชกเชพ เชตเชฐเซเชทเซ‹ เชชเชนเซ‡เชฒเชพ เชซเซ‡เชฌเซเชฐเชฟเชธ เชฌเซ‡เชฒเชพเชฐเซเชก jslinux เชฆเซเชตเชพเชฐเชพ เชฒเช–เชพเชฏเซ‡เชฒ เชœเชพเชตเชพเชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒ เชชเซ€เชธเซ€ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ เช›เซ‡. เชคเซ‡ เชชเช›เซ€ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชตเชงเซ เชนเชคเซเช‚ เชตเชฐเซเชšเซเชฏเซเช…เชฒ x86. เชชเชฐเช‚เชคเซ เชคเซ‡ เชฌเชงเชพ, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เชœเชพเชฃเซเช‚ เช›เซเช‚, เชฆเซเชญเชพเชทเชฟเชฏเชพ เชนเชคเชพ, เชœเซเชฏเชพเชฐเซ‡ Qemu, เชœเซ‡ เช–เซ‚เชฌ เชชเชนเซ‡เชฒเชพ เชธเชฎเชพเชจ เชซเซ‡เชฌเซเชฐเชฟเชธ เชฌเซ‡เชฒเชพเชฐเซเชก เชฆเซเชตเชพเชฐเชพ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚, เช…เชจเซ‡, เช•เชฆเชพเชš, เช•เซ‹เชˆเชชเชฃ เชธเซเชตเชพเชญเชฟเชฎเชพเชจเซ€ เช†เชงเซเชจเชฟเช• เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเชฐ, เชนเซ‹เชธเซเชŸ เชธเชฟเชธเซเชŸเชฎ เช•เซ‹เชกเชฎเชพเช‚ เช—เซ‡เชธเซเชŸ เช•เซ‹เชกเชจเชพ JIT เชธเช‚เช•เชฒเชจเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชฎเชจเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚ เช•เซ‡ เชฌเซเชฐเชพเช‰เชเชฐเซเชธ เชœเซ‡ เชนเชฒ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡เชจเชพ เชธเช‚เชฌเช‚เชงเชฎเชพเช‚ เชตเชฟเชชเชฐเซ€เชค เช•เชพเชฐเซเชฏเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชจเซ‹ เชธเชฎเชฏ เช†เชตเซ€ เช—เชฏเซ‹ เช›เซ‡: JavaScript เชฎเชพเช‚ เชฎเชถเซ€เชจ เช•เซ‹เชกเชจเซเช‚ JIT เชธเช‚เช•เชฒเชจ, เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชคเซ‡ Qemu เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชธเซŒเชฅเซ€ เชตเชงเซ เชคเชพเชฐเซเช•เชฟเช• เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เช•เซ‡เชฎ เช•เซ‡เชฎเซ, เชคเซเชฏเชพเช‚ เชธเชฐเชณ เช…เชจเซ‡ เชตเชชเชฐเชพเชถเช•เชฐเซเชคเชพ เชฎเซˆเชคเซเชฐเซ€เชชเซ‚เชฐเซเชฃ เชเชฎเซเชฏเซเชฒเซ‡เชŸเชฐเซเชธ เช›เซ‡ - เชธเชฎเชพเชจ เชตเชฐเซเชšเซเชฏเซเช…เชฒเชฌเซ‹เช•เซเชธ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡ - เช‡เชจเซเชธเซเชŸเซ‹เชฒ เช•เชฐเซ‡เชฒเซเช‚ เช…เชจเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เช•เซเชฏเซเชฎเซเชฎเชพเช‚ เช˜เชฃเซ€ เชฐเชธเชชเซเชฐเชฆ เชธเซเชตเชฟเชงเชพเช“ เช›เซ‡

  • เช–เซเชฒเซเชฒเชพ เชธเซเชคเซเชฐเซ‹เชค
  • เช•เชฐเซเชจเชฒ เชกเซเชฐเชพเช‡เชตเชฐ เชตเชฟเชจเชพ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ
  • เชฆเซเชญเชพเชทเชฟเชฏเชพ เชฎเซ‹เชกเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ
  • เชนเซ‹เชธเซเชŸ เช…เชจเซ‡ เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฌเช‚เชจเซ‡ เชฎเชพเชŸเซ‡ เชฎเซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เช†เชงเชพเชฐ

เชคเซเชฐเซ€เชœเชพ เชฎเซเชฆเซเชฆเชพ เชตเชฟเชถเซ‡, เชนเซเช‚ เชนเชตเซ‡ เชธเชฎเชœเชพเชตเซ€ เชถเช•เซเช‚ เช›เซเช‚ เช•เซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚, TCI เชฎเซ‹เชกเชฎเชพเช‚, เชคเซ‡ เช—เซ‡เชธเซเชŸ เชฎเชถเซ€เชจเชจเซ€ เชธเซ‚เชšเชจเชพเช“ เชจเชฅเซ€ เชœเซ‡เชจเซเช‚ เช…เชฐเซเชฅเช˜เชŸเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชฎเซ‡เชณเชตเซ‡เชฒ เชฌเชพเช‡เชŸเช•เซ‹เชก, เชชเชฐเช‚เชคเซ เช† เชธเชพเชฐ เชฌเชฆเชฒเชคเซเช‚ เชจเชฅเซ€ - เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡. เชจเชตเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชชเชฐ Qemu, เชœเซ‹ เชคเชฎเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เช›เซ‹, เชคเซ‹ A C เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡ - เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ เชฒเช–เชตเชพเชจเซเช‚ เชฎเซเชฒเชคเชตเซ€ เชฐเชพเช–เซ€ เชถเช•เชพเชฏ เช›เซ‡.

เช…เชจเซ‡ เชนเชตเซ‡, เชฎเชพเชฐเชพ เชซเซเชฐเซ€ เชŸเชพเช‡เชฎเชฎเชพเช‚ เช•เซเชฏเซเชฎเซ เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช†เชฐเชพเชฎเชฅเซ€ เชŸเชฟเช‚เช•เชฐ เช•เชฐเซเชฏเชพเชจเชพ เชฌเซ‡ เชตเชฐเซเชท เชชเช›เซ€, เชเช• เช•เชพเชฐเซเชฏเช•เชพเชฐเซ€ เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เชฆเซ‡เช–เชพเชฏเซ‹, เชœเซ‡เชฎเชพเช‚ เชคเชฎเซ‡ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชšเชฒเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช•เซ‹เชฒเชฟเชฌเซเชฐเซ€ เช“เชเชธ.

Emscripten เชถเซเช‚ เช›เซ‡

เช†เชœเช•เชพเชฒ, เช˜เชฃเชพ เช•เชฎเซเชชเชพเช‡เชฒเชฐเซเชธ เชฆเซ‡เช–เชพเชฏเชพ เช›เซ‡, เชœเซ‡เชจเซเช‚ เช…เช‚เชคเชฟเชฎ เชชเชฐเชฟเชฃเชพเชฎ JavaScript เช›เซ‡. เช•เซ‡เชŸเชฒเชพเช•, เชœเซ‡เชฎ เช•เซ‡ เชŸเชพเชˆเชช เชธเซเช•เซเชฐเชฟเชชเซเชŸ, เชฎเซ‚เชณ เชฐเซ€เชคเซ‡ เชตเซ‡เชฌ เชฎเชพเชŸเซ‡ เชฒเช–เชตเชพเชจเซ€ เชถเซเชฐเซ‡เชทเซเช  เชฐเซ€เชค เชฌเชจเชตเชพเชจเซ‹ เชนเซ‡เชคเซ เชนเชคเซ‹. เชคเซ‡ เชœ เชธเชฎเชฏเซ‡, Emscripten เช เชนเชพเชฒเชจเชพ C เช…เชฅเชตเชพ C++ เช•เซ‹เชก เชฒเซ‡เชตเชพ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐ-เชตเชพเช‚เชšเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เชธเซเชตเชฐเซ‚เชชเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพเชจเซ€ เชเช• เชฐเซ€เชค เช›เซ‡. เชšเชพเชฒเซ เช† เชชเซƒเชทเซเช  เช…เชฎเซ‡ เชœเชพเชฃเซ€เชคเชพ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเซเชธเชจเชพ เช˜เชฃเชพ เชฌเช‚เชฆเชฐเซ‹ เชเช•เชคเซเชฐเชฟเชค เช•เชฐเซเชฏเชพ เช›เซ‡: เช…เชนเซ€เช‚เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชคเชฎเซ‡ PyPy เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹ - เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชคเซ‡เช“ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ JIT เชนเซ‹เชตเชพเชจเซ‹ เชฆเชพเชตเซ‹ เช•เชฐเซ‡ เช›เซ‡. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชฆเชฐเซ‡เช• เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎเชจเซ‡ เชซเช•เซเชค เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒ เช…เชจเซ‡ เชšเชฒเชพเชตเซ€ เชถเช•เชพเชคเซ‹ เชจเชฅเซ€ - เชคเซเชฏเชพเช‚ เชเช• เชจเช‚เชฌเชฐ เช›เซ‡ เชตเชฟเชถเซ‡เชทเชคเชพ, เชœเซ‡ เชคเชฎเชพเชฐเซ‡ เชฎเซ‚เช•เชตเซเช‚ เชชเชกเชถเซ‡, เชคเซ‡เชฎ เช›เชคเชพเช‚, เชคเซ‡ เชœ เชชเซƒเชทเซเช  เชชเชฐ เชถเชฟเชฒเชพเชฒเซ‡เช– เช•เชนเซ‡ เช›เซ‡ เช•เซ‡ "Emscripten เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชฒเช—เชญเช— เช•เซ‹เชˆเชชเชฃ เช•เชฎเซเชชเชพเชˆเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡. เชชเซ‹เชฐเซเชŸเซ‡เชฌเชฒ JavaScript เชฎเชพเชŸเซ‡ C/C++ เช•เซ‹เชก." เชเชŸเชฒเซ‡ เช•เซ‡, เชคเซเชฏเชพเช‚ เชธเช‚เช–เซเชฏเชพเชฌเช‚เชง เช‘เชชเชฐเซ‡เชถเชจเซเชธ เช›เซ‡ เชœเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เช…เชจเซเชธเชพเชฐ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชจ เช›เซ‡, เชชเชฐเช‚เชคเซ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ x86 เชชเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ - เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชšเชฒเซ‹เชจเซ€ เช…เชธเช‚เชฌเช‚เชงเชฟเชค เชเช•เซเชธเซ‡เชธ, เชœเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชชเชฐ เชชเซเชฐเชคเชฟเชฌเช‚เชงเชฟเชค เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ , Qemu เชเช• เช•เซเชฐเซ‹เชธ-เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช›เซ‡ เช…เชจเซ‡ , เชนเซเช‚ เชฎเชพเชจเชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช˜เชฃเซ€ เชฌเชงเซ€ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชฃเซ‚เช• เชจเชฅเซ€ - เชคเซ‡เชจเซ‡ เชฒเซ‹ เช…เชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‹, เชชเช›เซ€ JIT เชธเชพเชฅเซ‡ เชฅเซ‹เชกเซเช‚ เชŸเชฟเช‚เช•เชฐ เช•เชฐเซ‹ - เช…เชจเซ‡ เชคเชฎเซ‡ เชชเซ‚เชฐเซเชฃ เช•เชฐเซ€ เชฒเซ‹! เชชเชฐเช‚เชคเซ เชคเซ‡ เชจเชฅเซ€ เช•เซ‡เชธ...

เชชเซเชฐเชฅเชฎ เชชเซเชฐเชฏเชพเชธ

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, Qemu เชจเซ‡ JavaScript เชชเชฐ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เชธเชพเชฅเซ‡ เช†เชตเชจเชพเชฐ เชนเซเช‚ เชชเซเชฐเชฅเชฎ เชตเซเชฏเช•เซเชคเชฟ เชจเชฅเซ€. ReactOS เชซเซ‹เชฐเชฎ เชชเชฐ เชเช• เชชเซเชฐเชถเซเชจ เชชเซ‚เช›เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ เช•เซ‡ เชถเซเช‚ Emscripten เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช† เชถเช•เซเชฏ เชนเชคเซเช‚. เช…เช—เชพเช‰ เชชเชฃ, เชเชตเซ€ เช…เชซเชตเชพเช“ เชนเชคเซ€ เช•เซ‡ เชซเซ‡เชฌเซเชฐเชฟเชธ เชฌเซ‡เชฒเชพเชฐเซเชกเซ‡ เช† เชตเซเชฏเช•เซเชคเชฟเช—เชค เชฐเซ€เชคเซ‡ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚, เชชเชฐเช‚เชคเซ เช…เชฎเซ‡ jslinux เชตเชฟเชถเซ‡ เชตเชพเชค เช•เชฐเซ€ เชฐเชนเซเชฏเชพ เชนเชคเชพ, เชœเซ‡, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชฎเชจเซ‡ เช–เชฌเชฐ เช›เซ‡, JS เชฎเชพเช‚ เชฎเซ‡เชจเซเชฏเซเช…เชฒเซ€ เชชเชฐเซเชฏเชพเชชเซเชค เชชเซเชฐเชฆเชฐเซเชถเชจ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพเชจเซ‹ เชฎเชพเชคเซเชฐ เชเช• เชชเซเชฐเชฏเชพเชธ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชถเชฐเซ‚เช†เชคเชฅเซ€ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เชชเชพเช›เชณเชฅเซ€, เชตเชฐเซเชšเซเชฏเซเช…เชฒ x86 เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ - เชคเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เช…เชธเซเชชเชทเซเชŸ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชชเซ‹เชธเซเชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ, เช…เชจเซ‡, เชœเชฃเชพเชตเซเชฏเชพ เชฎเซเชœเชฌ, เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจเชจเชพ เชฎเซ‹เชŸเชพ "เชตเชพเชธเซเชคเชตเชฟเช•เชตเชพเชฆ" เช เชซเชฐเซเชฎเชตเซ‡เชฐ เชคเชฐเซ€เช•เซ‡ SeaBIOS เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชจเซเช‚ เชถเช•เซเชฏ เชฌเชจเชพเชตเซเชฏเซเช‚. เชตเชงเซเชฎเชพเช‚, Emscripten เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ Qemu เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพเชจเซ‹ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ‹ เชเช• เชชเซเชฐเชฏเชพเชธ เชนเชคเซ‹ - เชฎเซ‡เช‚ เช† เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹ เชธเซ‹เช•เซ‡เชŸเชชเซ‡เชฐ, เชชเชฐเช‚เชคเซ เชตเชฟเช•เชพเชธ, เชœเซเชฏเชพเช‚ เชธเซเชงเซ€ เชนเซเช‚ เชธเชฎเชœเซเช‚ เช›เซเช‚, เชธเซเชฅเชฟเชฐ เชนเชคเซ‹.

เชคเซ‡เชฅเซ€, เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡, เช…เชนเซ€เช‚ เชธเซเชคเซเชฐเซ‹เชคเซ‹ เช›เซ‡, เช…เชนเซ€เช‚ Emscripten เช›เซ‡ - เชคเซ‡เชจเซ‡ เชฒเซ‹ เช…เชจเซ‡ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‹. เชชเชฐเช‚เชคเซ เชเชตเซ€ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เชชเชฃ เช›เซ‡ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เช•เซเชฏเซเชฎเซ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡, เช…เชจเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช•เซ‡ เชœเซ‡เชจเชพ เชชเชฐ เชคเซ‡ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เช“ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡, เชตเช—เซ‡เชฐเซ‡, เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เช›เซ‡. libffi, เชœเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เซ‡ เช›เซ‡. เชˆเชจเซเชŸเชฐเชจเซ‡เชŸ เชชเชฐ เชเชตเซ€ เช…เชซเชตเชพเช“ เชนเชคเซ€ เช•เซ‡ เชเชฎเชธเซเช•เซเชฐเซ€เชชเซเชŸเชจ เชฎเชพเชŸเซ‡ เชชเซเชธเซเชคเช•เชพเชฒเชฏเซ‹เชจเชพ เชฌเช‚เชฆเชฐเซ‹เชจเชพ เชตเชฟเชถเชพเชณ เชธเช‚เช—เซเชฐเชนเชฎเชพเช‚ เชเช• เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชฎเชพเชจเชตเซเช‚ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชฎเซเชถเซเช•เซ‡เชฒ เชนเชคเซเช‚: เชชเซเชฐเชฅเชฎ, เชคเซ‡ เชเช• เชจเชตเซเช‚ เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชฌเชจเชตเชพเชจเซ‹ เชˆเชฐเชพเชฆเซ‹ เชจเชนเซ‹เชคเซ‹, เชฌเซ€เชœเซเช‚, เชคเซ‡ เช–เซ‚เชฌ เชจเซ€เชšเชพ เชธเซเชคเชฐเชจเซเช‚ เชนเชคเซเช‚. เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เชซเช•เซเชค เช‰เชชเชพเชกเชตเชพ เชฎเชพเชŸเซ‡, เช…เชจเซ‡ JS เชชเชฐ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡. เช…เชจเซ‡ เชคเซ‡ เชฎเชพเชคเซเชฐ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เช‡เชจเซเชธเชฐเซเชŸเชจเซ€ เชฌเชพเชฌเชค เชจเชฅเซ€ - เช•เชฆเชพเชš, เชœเซ‹ เชคเชฎเซ‡ เชคเซ‡เชจเซ‡ เชŸเซเชตเชฟเชธเซเชŸ เช•เชฐเซ‹ เช›เซ‹, เชคเซ‹ เช•เซ‡เชŸเชฒเชพเช• เช•เซ‰เชฒเชฟเช‚เช— เชธเช‚เชฎเซ‡เชฒเชจเซ‹ เชฎเชพเชŸเซ‡ เชคเชฎเซ‡ เชธเซเชŸเซ‡เช• เชชเชฐ เชœเชฐเซ‚เชฐเซ€ เชฆเชฒเซ€เชฒเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชจเซ‡ เชคเซ‡เชจเชพ เชตเชฟเชจเชพ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹. เชชเชฐเช‚เชคเซ Emscripten เช เชเช• เชฎเซเชถเซเช•เซ‡เชฒ เชฌเชพเชฌเชค เช›เซ‡: เชฌเซเชฐเชพเช‰เชเชฐ JS เชเชจเซเชœเชฟเชจ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเชฐเชจเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ เช•เซ‹เชกเชจเซ‡ เชชเชฐเชฟเชšเชฟเชค เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เช•เซ‡เชŸเชฒเซ€เช• เชฏเซเช•เซเชคเชฟเช“เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช–เชพเชธ เช•เชฐเซ€เชจเซ‡, เช•เชนเซ‡เชตเชพเชคเชพ เชฐเซ€เชฒเซ‚เชชเชฟเช‚เช— - เช…เชฎเซเช• เช…เชฎเซ‚เชฐเซเชค เชธเช‚เช•เซเชฐเชฎเชฃ เชธเซ‚เชšเชจเชพเช“ เชธเชพเชฅเซ‡ เชชเซเชฐเชพเชชเซเชค เชฅเชฏเซ‡เชฒ LLVM IR เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ เชฌเซเชฆเซเชงเชฟเช—เชฎเซเชฏ ifs, เชฒเซ‚เชชเซเชธ เชตเช—เซ‡เชฐเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‡ เช›เซ‡. เชธเชพเชฐเซเช‚, เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เชฆเชฒเซ€เชฒเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเชธเชพเชฐ เชฅเชพเชฏ เช›เซ‡? เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡, JS เชซเช‚เช•เซเชถเชจเซเชธเชจเซ€ เชฆเชฒเซ€เชฒเซ‹ เชคเชฐเซ€เช•เซ‡, เชเชŸเชฒเซ‡ เช•เซ‡, เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹, เชธเซเชŸเซ‡เช• เชฆเซเชตเชพเชฐเชพ เชจเชนเซ€เช‚.

เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชซเช•เซเชค JS เชธเชพเชฅเซ‡ libffi เชฎเชพเชŸเซ‡ เชฐเชฟเชชเซเชฒเซ‡เชธเชฎเซ‡เชจเซเชŸ เชฒเช–เชตเชพเชจเซ‹ เช…เชจเซ‡ เชชเซเชฐเชฎเชพเชฃเชญเซ‚เชค เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชšเชฒเชพเชตเชตเชพเชจเซ‹ เชตเชฟเชšเชพเชฐ เช†เชตเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เช…เช‚เชคเซ‡ เชนเซเช‚ เชฎเชพเชฐเซ€ เชนเซ‡เชกเชฐ เชซเชพเช‡เชฒเซ‹ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชฌเชจเชพเชตเชตเซ€ เชคเซ‡ เช…เช‚เช—เซ‡ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชชเชกเซ€ เช—เชฏเซ‹ เชœเซ‡เชฅเซ€ เชคเซ‡เช“ เชนเชพเชฒเชจเชพ เช•เซ‹เชก เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเซ‡ - เชนเซเช‚ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซเช‚, เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, "เชถเซเช‚ เช•เชพเชฐเซเชฏเซ‹ เชเชŸเชฒเชพ เชœเชŸเชฟเชฒ เช›เซ‡ "เชถเซเช‚ เช†เชชเชฃเซ‡ เชเชŸเชฒเชพ เชฎเซ‚เชฐเซเช– เช›เซ€เช?" เชฎเชพเชฐเซ‡ เชฒเชฟเชฌเซเชซเซ€เชจเซ‡ เชฌเซ€เชœเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชฎเชพเช‚ เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚, เชคเซ‡เชฅเซ€ เชตเชพเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ - เชธเชฆเชจเชธเซ€เชฌเซ‡, Emscripten เชชเชพเชธเซ‡ เช‡เชจเชฒเชพเช‡เชจ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชฎเชพเชŸเซ‡ เชฌเช‚เชจเซ‡ เชฎเซ‡เช•เซเชฐเซ‹ เช›เซ‡ (เชœเชพเชตเชพเชธเซเช•เซเชฐเชฟเชชเซเชŸเชฎเชพเช‚, เชนเชพ - เชธเชพเชฐเซเช‚, เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช—เชฎเซ‡ เชคเซ‡ เชนเซ‹เชฏ, เชคเซ‹ เชเชธเซ‡เชฎเซเชฌเชฒเชฐ), เช…เชจเซ‡ เชซเซเชฒเชพเชฏ เชชเชฐ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ เช•เซ‹เชก เชšเชฒเชพเชตเชตเชพเชจเซ€ เช•เซเชทเชฎเชคเชพ. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช•เซ‡เชŸเชฒเชพเช• เชธเชฎเชฏ เชฎเชพเชŸเซ‡ เชชเซเชฒเซ‡เชŸเชซเซ‹เชฐเซเชฎ-เช†เชงเชพเชฐเชฟเชค เชฒเชฟเชฌเซเชซเซ€ เชŸเซเช•เชกเชพเช“ เชธเชพเชฅเซ‡ เชŸเชฟเช‚เช•เชฐเชฟเช‚เช— เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชธเช‚เช•เชฒเชจ เช•เชฐเซ€ เชถเช•เชพเชฏ เชคเซ‡เชตเชพ เช•เซ‹เชก เชฎเชณเซเชฏเชพ เช…เชจเซ‡ เชคเซ‡ เชชเซเชฐเชฅเชฎ เช•เชธเซ‹เชŸเซ€ เชชเชฐ เชšเชฒเชพเชตเซเชฏเซ‹ เชœเซ‡ เชนเซเช‚ เชฎเชณเซเชฏเซ‹ เชนเชคเซ‹. เชฎเชพเชฐเชพ เช†เชถเซเชšเชฐเซเชฏ เชฎเชพเชŸเซ‡, เชชเชฐเซ€เช•เซเชทเชฃ เชธเชซเชณ เชฅเชฏเซเช‚. เชฎเชพเชฐเซ€ เชชเซเชฐเชคเชฟเชญเชพเชฅเซ€ เชฆเช‚เช— เชฐเชนเซ€ เช—เชฏเซ‹ - เช•เซ‹เชˆ เชฎเชœเชพเช• เชจเชนเซ€เช‚, เชคเซ‡ เชชเซเชฐเชฅเชฎ เชฒเซ‹เชจเซเชšเชฅเซ€ เชœ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡ - เชนเซเช‚, เชนเชœเซ€ เชชเชฃ เชฎเชพเชฐเซ€ เช†เช‚เช–เซ‹ เชชเชฐ เชตเชฟเชถเซเชตเชพเชธ เชจ เช•เชฐเชคเซ‹, เชชเชฐเชฟเชฃเชพเชฎเซ€ เช•เซ‹เชกเชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชœเซ‹เชตเชพ เช—เชฏเซ‹, เช†เช—เชณ เช•เซเชฏเชพเช‚ เช–เซ‹เชฆเชตเซเช‚ เชคเซ‡เชจเซเช‚ เชฎเซ‚เชฒเซเชฏเชพเช‚เช•เชจ เช•เชฐเชตเชพ เช—เชฏเซ‹. เช…เชนเซ€เช‚ เชนเซเช‚ เชฌเซ€เชœเซ€ เชตเชพเชฐ เชจเชŸเช–เชŸ เชฅเชˆ เช—เชฏเซ‹ - เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เชฎเชพเชคเซเชฐ เชเช• เชœ เชตเชธเซเชคเซ เชนเชคเซ€ ffi_call - เช† เชเช• เชธเชซเชณ เช•เซ‰เชฒเชจเซ€ เชœเชพเชฃ เช•เชฐเซ€. เชชเซ‹เชคเซ‡ เช•เซ‹เชˆ เช•เซ‹เชฒ เชจเชนเซ‹เชคเซ‹. เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ เชฎเชพเชฐเซ€ เชชเซเชฐเชฅเชฎ เชชเซเชฒ เชตเชฟเชจเช‚เชคเซ€ เชฎเซ‹เช•เชฒเซ€, เชœเซ‡เชฃเซ‡ เช•เซ‹เชˆเชชเชฃ เช“เชฒเชฟเชฎเซเชชเชฟเชฏเชพเชกเชจเชพ เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€ เชฎเชพเชŸเซ‡ เชธเซเชชเชทเซเชŸ เชนเซ‹เชฏ เชคเซ‡เชตเชพ เชชเชฐเซ€เช•เซเชทเชฃเชฎเชพเช‚ เชญเซ‚เชฒ เชธเซเชงเชพเชฐเซ€ เชนเชคเซ€ - เชตเชพเชธเซเชคเชตเชฟเช• เชธเช‚เช–เซเชฏเชพเช“เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เช† เชฐเซ€เชคเซ‡ เชฅเชตเซ€ เชœเซ‹เชˆเช เชจเชนเซ€เช‚ a == b เช…เชจเซ‡ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชชเชฃ a - b < EPS - เชคเชฎเชพเชฐเซ‡ เชฎเซ‹เชกเซเชฏเซเชฒเชจเซ‡ เชชเชฃ เชฏเชพเชฆ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡, เช…เชจเซเชฏเชฅเชพ 0 1/3 เชจเซ€ เชฌเชฐเชพเชฌเชฐ เชนเชถเซ‡... เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชนเซเช‚ libffi เชจเชพ เชšเซ‹เช•เซเช•เชธ เชชเซ‹เชฐเซเชŸ เชธเชพเชฅเซ‡ เช†เชตเซเชฏเซ‹ เช›เซเช‚, เชœเซ‡ เชธเซŒเชฅเซ€ เชธเชฐเชณ เชชเชฐเซ€เช•เซเชทเชฃเซ‹ เชชเชพเชธ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ glib เช›เซ‡. เชธเช‚เช•เชฒเชฟเชค - เชฎเซ‡เช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚ เช•เซ‡ เชคเซ‡ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เชนเซเช‚ เชคเซ‡เชจเซ‡ เชชเช›เซ€เชฅเซ€ เช‰เชฎเซ‡เชฐเซ€เชถ. เช†เช—เชณ เชœเซ‹เชˆเชจเซ‡, เชนเซเช‚ เช•เชนเซ€เชถ เช•เซ‡, เชœเซ‡เชฎ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡, เช•เชฎเซเชชเชพเชˆเชฒเชฐ เช เช…เช‚เชคเชฟเชฎ เช•เซ‹เชกเชฎเชพเช‚ libffi เชซเช‚เช•เซเชถเชจเชจเซ‹ เชชเชฃ เชธเชฎเชพเชตเซ‡เชถ เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€.

เชชเชฐเช‚เชคเซ, เชœเซ‡เชฎ เชฎเซ‡เช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชนเซเชฏเซเช‚ เช›เซ‡, เชคเซเชฏเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชฎเชฐเซเชฏเชพเชฆเชพเช“ เช›เซ‡, เช…เชจเซ‡ เชตเชฟเชตเชฟเชง เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชจเชจเชพ เชฎเชซเชค เช‰เชชเชฏเซ‹เช— เชตเชšเซเชšเซ‡, เชเช• เชตเชงเซ เช…เชชเซเชฐเชฟเชฏ เชฒเช•เซเชทเชฃ เช›เซเชชเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡ - เชกเชฟเชเชพเช‡เชจ เชฆเซเชตเชพเชฐเชพ JavaScript เชถเซ‡เชฐ เช•เชฐเซ‡เชฒเซ€ เชฎเซ‡เชฎเชฐเซ€ เชธเชพเชฅเซ‡ เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเชฟเช‚เช—เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเชคเซเช‚ เชจเชฅเซ€. เชธเซˆเชฆเซเชงเชพเช‚เชคเชฟเช• เชฐเซ€เชคเซ‡, เช†เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เชเช• เชธเชพเชฐเซ‹ เชตเชฟเชšเชพเชฐ เชชเชฃ เช•เชนเซ€ เชถเช•เชพเชฏ, เชชเชฐเช‚เชคเซ เชชเซ‹เชฐเซเชŸเชฟเช‚เช— เช•เซ‹เชก เชฎเชพเชŸเซ‡ เชจเชนเซ€เช‚ เชœเซ‡เชจเซเช‚ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ C เชฅเซเชฐเซ‡เชกเซ‹ เชธเชพเชฅเซ‡ เชœเซ‹เชกเชพเชฏเซ‡เชฒเซเช‚ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช•เชนเซ€เช เชคเซ‹, เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธ เชตเชนเซ‡เช‚เชšเชพเชฏเซ‡เชฒ เช•เชพเชฎเชฆเชพเชฐเซ‹เชจเซ‡ เชŸเซ‡เช•เซ‹ เช†เชชเชตเชพ เชธเชพเชฅเซ‡ เชชเซเชฐเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เช…เชจเซ‡ เชเชฎเชธเซเช•เซเชฐเซ€เชชเซเชŸเชจ เชชเชพเชธเซ‡ เชคเซ‡เชฎเชจเชพ เชฎเชพเชŸเซ‡ เชเช• pthread เช…เชฎเชฒเซ€เช•เชฐเชฃ เช›เซ‡, เชชเชฐเช‚เชคเซ เชนเซเช‚ เชคเซ‡เชจเชพ เชชเชฐ เช†เชงเชพเชฐ เชฐเชพเช–เชตเชพ เชฎเชพเช‚เช—เชคเซ‹ เชจ เชนเชคเซ‹. เชฎเชพเชฐเซ‡ Qemu เช•เซ‹เชกเชฎเชพเช‚เชฅเซ€ เชฎเชฒเซเชŸเชฟเชฅเซเชฐเซ‡เชกเชฟเช‚เช—เชจเซ‡ เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡ เชฐเซเชŸ เช†เช‰เชŸ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚ - เชเชŸเชฒเซ‡ เช•เซ‡, เชฅเซเชฐเซ‡เชกเซ‹ เช•เซเชฏเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเชพ เช›เซ‡ เชคเซ‡ เชถเซ‹เชงเซ‹, เช† เชฅเซเชฐเซ‡เชกเชฎเชพเช‚ เชšเชพเชฒเชคเชพ เชฒเซ‚เชชเชจเชพ เชฎเซเช–เซเชฏ เชญเชพเช—เชจเซ‡ เชเช• เช…เชฒเช— เชซเช‚เช•เซเชถเชจเชฎเชพเช‚ เช–เชธเซ‡เชกเซ‹, เช…เชจเซ‡ เชฎเซเช–เซเชฏ เชฒเซ‚เชชเชฎเชพเช‚เชฅเซ€ เชเช• เชชเช›เซ€ เชเช• เช†เชตเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ‹.

เชฌเซ€เชœเซ‹ เชชเซเชฐเชฏเชพเชธ

เช…เชฎเซเช• เชธเชฎเชฏเซ‡, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เชธเชฎเชธเซเชฏเชพ เชนเชœเซ€ เชชเชฃ เชคเซเชฏเชพเช‚ เชœ เช›เซ‡, เช…เชจเซ‡ เช•เซ‹เชกเชจเซ€ เช†เชœเซเชฌเชพเชœเซ เช†เชกเซ‡เชงเชก เชฐเซ€เชคเซ‡ เชนเชฒเชพเชตเชตเชพเชฅเซ€ เช•เซ‹เชˆ เชธเชพเชฐเซเช‚ เชฅเชถเซ‡ เชจเชนเซ€เช‚. เชจเชฟเชทเซเช•เชฐเซเชท: เช†เชชเชฃเซ‡ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เช•เซเชฐเซ‡เชš เช‰เชฎเซ‡เชฐเชตเชพเชจเซ€ เชชเซเชฐเช•เซเชฐเชฟเชฏเชพเชจเซ‡ เชตเซเชฏเชตเชธเซเชฅเชฟเชค เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซ‡เชฅเซ€, เชธเช‚เชธเซเช•เชฐเชฃ 2.4.1, เชœเซ‡ เชคเซ‡ เชธเชฎเชฏเซ‡ เชคเชพเชœเซเช‚ เชนเชคเซเช‚, เชฒเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ (2.5.0 เชจเชนเซ€เช‚, เช•เชพเชฐเชฃ เช•เซ‡, เช•เซ‹เชฃ เชœเชพเชฃเซ‡ เช›เซ‡, เชจเชตเชพ เชธเช‚เชธเซเช•เชฐเชฃเชฎเชพเช‚ เชเชตเซ€ เชญเซ‚เชฒเซ‹ เชนเชถเซ‡ เชœเซ‡ เชนเชœเซ€ เชธเซเชงเซ€ เชชเช•เชกเชพเชˆ เชจเชฅเซ€, เช…เชจเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชฎเชพเชฐเซ€ เชชเซ‹เชคเชพเชจเซ€ เชญเซ‚เชฒเซ‹ เชชเซ‚เชฐเชคเซ€ เช›เซ‡. ), เช…เชจเซ‡ เชชเซเชฐเชฅเชฎ เชตเชธเซเชคเซ เชคเซ‡เชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฐเซ€เชคเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชจเซเช‚ เชนเชคเซเช‚ thread-posix.c. เช เซ€เช• เช›เซ‡, เชคเซ‡ เช›เซ‡, เชธเชฒเชพเชฎเชค เช›เซ‡: เชœเซ‹ เช•เซ‹เชˆเช เช…เชตเชฐเซ‹เชง เชคเชฐเชซ เชฆเซ‹เชฐเซ€เชจเซ‡ เช‘เชชเชฐเซ‡เชถเชจ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชคเซ‹ เชซเช‚เช•เซเชถเชจเชจเซ‡ เชคเชฐเชค เชœ เช•เซ‰เชฒ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ abort() - เช…เชฒเชฌเชคเซเชค, เช†เชจเชพเชฅเซ€ เชฌเชงเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชเช• เชœ เชธเชฎเชฏเซ‡ เชนเชฒ เชฅเชˆ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชคเซ‡ เชถเชพเช‚เชคเชฟเชฅเซ€ เช…เชธเช‚เช—เชค เชกเซ‡เชŸเชพ เชชเซเชฐเชพเชชเซเชค เช•เชฐเชตเชพ เช•เชฐเชคเชพเช‚ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชตเชงเซ เชธเซเช–เชฆ เชนเชคเซเช‚.

เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, JS เชชเชฐ เช•เซ‹เชก เชชเซ‹เชฐเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ Emscripten เชตเชฟเช•เชฒเซเชชเซ‹ เช–เซ‚เชฌ เชœ เชฎเชฆเชฆเชฐเซ‚เชช เชฅเชพเชฏ เช›เซ‡ -s ASSERTIONS=1 -s SAFE_HEAP=1 - เชคเซ‡เช“ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเชพ เช…เชตเซเชฏเชพเช–เซเชฏเชพเชฏเชฟเชค เชตเชฐเซเชคเชจเชจเซ‡ เชชเช•เชกเซ‡ เช›เซ‡, เชœเซ‡เชฎ เช•เซ‡ เช…เชธเช‚เชฐเซ‡เช–เชฟเชค เชธเชฐเชจเชพเชฎเชพเช‚ เชชเชฐ เช•เซ‰เชฒ (เชœเซ‡ เชŸเชพเช‡เชช เช•เชฐเซ‡เชฒ เชเชฐเซ‡ เชฎเชพเชŸเซ‡เชจเชพ เช•เซ‹เชก เชธเชพเชฅเซ‡ เชฌเชฟเชฒเช•เซเชฒ เชธเซเชธเช‚เช—เชค เชจเชฅเซ€ เชœเซ‡เชฎ เช•เซ‡ HEAP32[addr >> 2] = 1) เช…เชฅเชตเชพ เชฆเชฒเซ€เชฒเซ‹เชจเซ€ เช–เซ‹เชŸเซ€ เชธเช‚เช–เซเชฏเชพ เชธเชพเชฅเซ‡ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเซเช‚.

เชฎเชพเชฐเซเช— เชฆเซเชตเชพเชฐเชพ, เชธเช‚เชฐเซ‡เช–เชฃ เชญเซ‚เชฒเซ‹ เช เชเช• เช…เชฒเช— เชฎเซเชฆเซเชฆเซ‹ เช›เซ‡. เชฎเซ‡เช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชนเซเชฏเซเช‚ เชคเซ‡เชฎ, เช•เซ‹เชก เชœเชจเชฐเซ‡เชถเชจ TCI (เชจเชพเชจเชพ เช•เซ‹เชก เชˆเชจเซเชŸเชฐเชชเซเชฐเซ€เชŸเชฐ) เชฎเชพเชŸเซ‡ Qemu เชชเชพเชธเซ‡ "เชกเชฟเชœเชจเชฐเซ‡เชŸ" เช…เชฐเซเชฅเช˜เชŸเชจเชพเชคเซเชฎเช• เชฌเซ‡เช•เชเชจเซเชก เช›เซ‡, เช…เชจเซ‡ เชจเชตเชพ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชชเชฐ Qemu เชฌเชจเชพเชตเชตเชพ เช…เชจเซ‡ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡, เชœเซ‹ เชคเชฎเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เช›เซ‹, เชคเซ‹ C เช•เชฎเซเชชเชพเชˆเชฒเชฐ เชชเซ‚เชฐเชคเซเช‚ เช›เซ‡. เช•เซ€เชตเชฐเซเชกเซเชธ "เชœเซ‹ เชคเชฎเซ‡ เชจเชธเซ€เชฌเชฆเชพเชฐ เช›เซ‹". เชนเซเช‚ เช•เชฎเชจเชธเซ€เชฌ เชนเชคเซ‹, เช…เชจเซ‡ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ TCI เชคเซ‡เชจเชพ เชฌเชพเช‡เชŸเช•เซ‹เชกเชจเซ‡ เชชเชพเชฐเซเชธ เช•เชฐเชคเซ€ เชตเช–เชคเซ‡ เช…เชธเช‚เชฐเซ‡เช–เชฟเชค เชเช•เซเชธเซ‡เชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชคเชฎเชพเชฎ เชชเซเชฐเช•เชพเชฐเชจเชพ เชเช†เชฐเชเชฎ เช…เชจเซ‡ เช…เชจเซเชฏ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเซเชธ เชชเชฐ เชœเชฐเซ‚เชฐเซ€ เชธเซเชคเชฐเซ€เชฏ เชเช•เซเชธเซ‡เชธ เชธเชพเชฅเซ‡, เช•เซเชฏเซเชฎเซ เช•เชฎเซเชชเชพเช‡เชฒ เช•เชฐเซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡เชฎเชจเซ€ เชชเชพเชธเซ‡ เชธเชพเชฎเชพเชจเซเชฏ TCG เชฌเซ‡เช•เชเชจเซเชก เช›เซ‡ เชœเซ‡ เชฎเซ‚เชณ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ TCI เชคเซ‡เชฎเชจเชพ เชชเชฐ เช•เชพเชฎ เช•เชฐเชถเซ‡ เช•เซ‡ เช•เซ‡เชฎ เชคเซ‡ เชฌเซ€เชœเซ‹ เชชเซเชฐเชถเซเชจ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เชคเซ‡เชฎ, TCI เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เช•เช‚เชˆเช• เชธเชฎเชพเชจ เชธเซ‚เชšเชตเซ‡ เช›เซ‡. เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช•เซ‹เชกเชฎเชพเช‚ เช…เชธเช‚เชฐเซ‡เช–เชฟเชค เชตเชพเช‚เชšเชจ เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจ เช•เซ‹เชฒเซเชธ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเชพ เชนเชคเชพ, เชœเซ‡ เช•เซเชฏเซเชฎเซเชจเชพ เชฌเซ€เชœเชพ เชญเชพเช—เชฎเชพเช‚ เชœเซ‹เชตเชพ เชฎเชณเซเชฏเชพ เชนเชคเชพ.

เชขเช—เชฒเซ‹ เชตเชฟเชจเชพเชถ

เชชเชฐเชฟเชฃเชพเชฎเซ‡, TCI เชจเซ€ เช…เชธเช‚เชฌเช‚เชงเชฟเชค เชเช•เซเชธเซ‡เชธเชจเซ‡ เช เซ€เช• เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€, เชเช• เชฎเซเช–เซเชฏ เชฒเซ‚เชช เชฌเชจเชพเชตเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ เชœเซ‡เชจเซ‡ เชฌเชฆเชฒเชพเชฎเชพเช‚ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ, RCU เช…เชจเซ‡ เช…เชจเซเชฏ เช•เซ‡เชŸเชฒเซ€เช• เชจเชพเชจเซ€ เชตเชธเซเชคเซเช“ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชนเซเช‚ เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ Qemu เชฒเซ‹เชจเซเชš เช•เชฐเซเช‚ เช›เซเช‚ -d exec,in_asm,out_asm, เชœเซ‡เชจเซ‹ เช…เชฐเซเชฅ เช›เซ‡ เช•เซ‡ เชคเชฎเชพเชฐเซ‡ เช•เชนเซ‡เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เช•เซ‡ เช•เซ‹เชกเชจเชพ เช•เชฏเชพ เชฌเซเชฒเซ‹เช•เซเชธ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชˆ เชฐเชนเซเชฏเชพ เช›เซ‡, เช…เชจเซ‡ เชชเซเชฐเชธเชพเชฐเชฃ เชธเชฎเชฏเซ‡ เช—เซ‡เชธเซเชŸ เช•เซ‹เชก เช•เชฏเซ‹ เชนเชคเซ‹, เช•เชฏเซ‹ เชนเซ‹เชธเซเชŸ เช•เซ‹เชก เชฌเชจเซเชฏเซ‹ (เช† เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชฌเชพเชฏเชŸเซ‡เช•เซ‹เชก) เชฒเช–เชตเชพ เชฎเชพเชŸเซ‡. เชคเซ‡ เชถเชฐเซ‚ เชฅเชพเชฏ เช›เซ‡, เช•เซ‡เชŸเชฒเชพเช• เช…เชจเซเชตเชพเชฆ เชฌเซเชฒเซ‹เช•เซเชธเชจเซ‡ เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เช•เชฐเซ‡ เช›เซ‡, เชกเชฟเชฌเช—เซ€เช‚เช— เชฎเซ‡เชธเซ‡เชœ เชฒเช–เซ‡ เช›เซ‡ เชœเซ‡ เชฎเซ‡เช‚ เช›เซ‹เชกเซเชฏเซ‹ เชนเชคเซ‹ เช•เซ‡ RCU เชนเชตเซ‡ เชถเชฐเซ‚ เชฅเชถเซ‡ เช…เชจเซ‡... เช•เซเชฐเซ‡เชถ abort() เช•เชพเชฐเซเชฏเชจเซ€ เช…เช‚เชฆเชฐ free(). เช•เชพเชฐเซเชฏ เชธเชพเชฅเซ‡ เชŸเชฟเช‚เช•เชฐเชฟเช‚เช— เชฆเซเชตเชพเชฐเชพ free() เช…เชฎเซ‡ เช เชถเซ‹เชงเชตเชพเชฎเชพเช‚ เชตเซเชฏเชตเชธเซเชฅเชพเชชเชฟเชค เชฅเชฏเชพ เช•เซ‡ เชขเช—เชฒเชพ เชฌเซเชฒเซ‹เช•เชจเชพ เชนเซ‡เชกเชฐเชฎเชพเช‚, เชœเซ‡ เชซเชพเชณเชตเซ‡เชฒ เชฎเซ‡เชฎเชฐเซ€เชจเซ€ เชชเชนเซ‡เชฒเชพเชจเซ€ เช†เช  เชฌเชพเช‡เชŸเซเชธเชฎเชพเช‚ เช†เชตเซ‡เชฒเซเช‚ เช›เซ‡, เชฌเซเชฒเซ‹เช•เชจเชพ เช•เชฆเชจเซ‡ เชฌเชฆเชฒเซ‡ เช…เชฅเชตเชพ เชคเซ‡เชจเชพ เชœเซ‡เชตเซเช‚ เช•เช‚เชˆเช•, เชคเซเชฏเชพเช‚ เช•เชšเชฐเซ‹ เชนเชคเซ‹.

เชขเช—เชฒเชพเชจเซ‹ เชตเชฟเชจเชพเชถ - เช•เซ‡เชŸเชฒเซ‹ เชธเซเช‚เชฆเชฐ... เช†เชตเชพ เช•เชฟเชธเซเชธเชพเชฎเชพเช‚, เชเช• เช‰เชชเชฏเซ‹เช—เซ€ เช‰เชชเชพเชฏ เช›เซ‡ - (เชœเซ‹ เชถเช•เซเชฏ เชนเซ‹เชฏ เชคเซ‹) เชธเชฎเชพเชจ เชธเซเชคเซเชฐเซ‹เชคเซ‹เชฎเชพเช‚เชฅเซ€, เชฎเซ‚เชณ เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเซ‹ เช…เชจเซ‡ เชคเซ‡เชจเซ‡ Valgrind เชนเซ‡เช เชณ เชšเชฒเชพเชตเซ‹. เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€, เชฌเชพเชˆเชจเชฐเซ€ เชคเซˆเชฏเชพเชฐ เชฅเชˆ เช—เชˆ. เชนเซเช‚ เชคเซ‡เชจเซ‡ เชธเชฎเชพเชจ เชตเชฟเช•เชฒเซเชชเซ‹ เชธเชพเชฅเซ‡ เชฒเซ‰เชจเซเชš เช•เชฐเซเช‚ เช›เซเช‚ - เชคเซ‡ เชตเชพเชธเซเชคเชตเชฎเชพเช‚ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชธเซเชงเซ€ เชชเชนเซ‹เช‚เชšเชคเชพ เชชเชนเซ‡เชฒเชพ, เช†เชฐเช‚เชญ เชฆเชฐเชฎเชฟเชฏเชพเชจ เชชเชฃ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชคเซ‡ เช…เชชเซเชฐเชฟเชฏ เช›เซ‡, เช…เชฒเชฌเชคเซเชค - เชฆเซ‡เช–เซ€เชคเซ€ เชฐเซ€เชคเซ‡, เชธเซเชคเซเชฐเซ‹เชคเซ‹ เชฌเชฐเชพเชฌเชฐ เชธเชฎเชพเชจ เชจ เชนเชคเชพ, เชœเซ‡ เช†เชถเซเชšเชฐเซเชฏเชœเชจเช• เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชฐเซ‚เชชเชฐเซ‡เช–เชพเช‚เช•เชฟเชคเชฎเชพเช‚ เชฅเซ‹เชกเชพ เช…เชฒเช— เชตเชฟเช•เชฒเซเชชเซ‹ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ Valgrind เช›เซ‡ - เชชเซเชฐเชฅเชฎ เชนเซเช‚ เช† เชญเซ‚เชฒเชจเซ‡ เช เซ€เช• เช•เชฐเซ€เชถ, เช…เชจเซ‡ เชชเช›เซ€, เชœเซ‹ เชนเซเช‚ เชจเชธเซ€เชฌเชฆเชพเชฐ เช›เซเช‚ , เชฎเซ‚เชณ เชฆเซ‡เช–เชพเชถเซ‡. เชนเซเช‚ เชคเซ‡ เชœ เชตเชธเซเชคเซ Valgrind เชนเซ‡เช เชณ เชšเชฒเชพเชตเซ€ เชฐเชนเซเชฏเซ‹ เช›เซเช‚... Y-y-y, y-y-y, เช‰เชน-เช‰เชน, เชคเซ‡ เชถเชฐเซ‚ เชฅเชฏเซเช‚, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡ เช†เชฐเช‚เชญเชฎเชพเช‚เชฅเซ€ เชชเชธเชพเชฐ เชฅเชฏเซเช‚ เช…เชจเซ‡ เช–เซ‹เชŸเซ€ เชฎเซ‡เชฎเชฐเซ€ เชเช•เซเชธเซ‡เชธ เชตเชฟเชถเซ‡ เชเช• เชชเชฃ เชšเซ‡เชคเชตเชฃเซ€ เช†เชชเซเชฏเชพ เชตเชฟเชจเชพ เชฎเซ‚เชณ เชฌเช—เชฎเชพเช‚เชฅเซ€ เช†เช—เชณ เชตเชงเซเชฏเซ‹, เชซเซ‹เชฒเซเชธ เชตเชฟเชถเซ‡ เช‰เชฒเซเชฒเซ‡เช– เชจ เช•เชฐเชตเซ‹. เชœเซ€เชตเชจ, เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, เชฎเชจเซ‡ เช† เชฎเชพเชŸเซ‡ เชคเซˆเชฏเชพเชฐ เช•เชฐเซเชฏเซ‹ เชจเชฅเซ€ - เชœเซเชฏเชพเชฐเซ‡ เชตเซ‹เชฒเช—เซเชฐเชฟเชจเซเชก เชนเซ‡เช เชณ เชฒเซ‹เช‚เชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เชคเซเชฏเชพเชฐเซ‡ เช•เซเชฐเซ‡เชถเชฟเช‚เช— เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซเชฐเซ‡เชถ เชฅเชตเชพเชจเซเช‚ เชฌเช‚เชง เช•เชฐเซ‡ เช›เซ‡. เชคเซ‡ เชถเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เชเช• เชฐเชนเชธเซเชฏ เช›เซ‡. เชฎเชพเชฐเซ€ เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ เช เช›เซ‡ เช•เซ‡ เชเช•เชตเชพเชฐ เชชเซเชฐเชพเชฐเช‚เชญ เชฆเชฐเชฎเชฟเชฏเชพเชจ เช•เซเชฐเซ‡เชถ เชฅเชฏเชพ เชชเช›เซ€ เชตเชฐเซเชคเชฎเชพเชจ เชธเซ‚เชšเชจเชพเชจเซ€ เชจเชœเซ€เช•เชฎเชพเช‚, gdb เช เช•เชพเชฎ เชฌเชคเชพเชตเซเชฏเซเช‚ memset-เชเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฎเชพเชจเซเชฏ เชชเซ‹เช‡เชจเซเชŸเชฐ เชธเชพเชฅเซ‡ mmx, เช…เชฅเชตเชพ xmm เชฐเชœเซ€เชธเซเชŸเชฐ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เช•เชฆเชพเชš เชคเซ‡ เชธเช‚เชฐเซ‡เช–เชฃเชจเซ€ เช•เซ‹เชˆ เชชเซเชฐเช•เชพเชฐเชจเซ€ เชญเซ‚เชฒ เชนเชคเซ€, เชœเซ‹ เช•เซ‡ เชคเซ‡ เชนเชœเซ เชชเชฃ เชฎเชพเชจเชตเซเช‚ เชฎเซเชถเซเช•เซ‡เชฒ เช›เซ‡.

เช เซ€เช• เช›เซ‡, Valgrind เช…เชนเซ€เช‚ เชฎเชฆเชฆ เช•เชฐเชถเซ‡ เชเชตเซเช‚ เชฒเชพเช—เชคเซเช‚ เชจเชฅเซ€. เช…เชจเซ‡ เช…เชนเซ€เช‚ เชธเซŒเชฅเซ€ เช˜เซƒเชฃเชพเชธเซเชชเชฆ เชตเชธเซเชคเซ เชถเชฐเซ‚ เชฅเชˆ - เชฌเชงเซเช‚ เชœ เชถเชฐเซ‚ เชฅเชฏเซเช‚ เชนเซ‹เชฏ เชคเซ‡เชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชฒเชพเช–เซ‹ เชธเซ‚เชšเชจเชพเช“ เชชเชนเซ‡เชฒเชพ เชฌเชจเซ€ เชถเช•เซ‡ เชคเซ‡เชตเซ€ เช˜เชŸเชจเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เชเช•เชฆเชฎ เช…เชœเชพเชฃเซเชฏเชพ เช•เชพเชฐเชฃเซ‹เชธเชฐ เช•เซเชฐเซ‡เชถ เชฅเชพเชฏ เช›เซ‡. เชฒเชพเช‚เชฌเชพ เชธเชฎเชฏ เชธเซเชงเซ€, เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เชธเช‚เชชเชฐเซเช• เช•เชฐเชตเซ‹ เชคเซ‡ เชชเชฃ เชธเซเชชเชทเซเชŸ เชจ เชนเชคเซเช‚. เช…เช‚เชคเซ‡, เชฎเชพเชฐเซ‡ เชนเชœเซ€ เชฌเซ‡เชธเซ€เชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚. เชนเซ‡เชกเชฐเชจเซ‡ เชœเซ‡ เชธเชพเชฅเซ‡ เชซเชฐเซ€เชฅเซ€ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡ เช›เชพเชชเชตเชพเชฅเซ€ เชคเซ‡ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เชคเซ‡ เชธเช‚เช–เซเชฏเชพ เชœเซ‡เชตเซ‹ เชฆเซ‡เช–เชพเชคเซ‹ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซ‹ เชฌเชพเชˆเชจเชฐเซ€ เชกเซ‡เชŸเชพ เช›เซ‡. เช…เชจเซ‡, เชœเซเช“ เช…เชจเซ‡ เชœเซเช“, เช† เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชถเชฌเซเชฆเชฎเชพเชณเชพ BIOS เชซเชพเช‡เชฒเชฎเชพเช‚ เชฎเชณเซ€ เชนเชคเซ€ - เชเชŸเชฒเซ‡ เช•เซ‡, เชนเชตเซ‡ เชตเชพเชœเชฌเซ€ เชตเชฟเชถเซเชตเชพเชธ เชธเชพเชฅเซ‡ เช•เชนเซ‡เชตเซเช‚ เชถเช•เซเชฏ เชนเชคเซเช‚ เช•เซ‡ เชคเซ‡ เชฌเชซเชฐ เช“เชตเชฐเชซเซเชฒเซ‹ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เช›เซ‡ เช•เซ‡ เชคเซ‡ เช† เชฌเชซเชฐ เชชเชฐ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚. เช เซ€เช• เช›เซ‡, เชคเซ‹ เชชเช›เซ€ เช•เช‚เชˆเช• เช†เชจเชพ เชœเซ‡เชตเซเช‚ - Emscripten เชฎเชพเช‚, เชธเชฆเชญเชพเช—เซเชฏเซ‡, เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ€ เชœเช—เซเชฏเชพเชจเซเช‚ เช•เซ‹เชˆ เชฐเซ‡เชจเซเชกเชฎเชพเช‡เชเซ‡เชถเชจ เชจเชฅเซ€, เชคเซ‡เชฎเชพเช‚ เช•เซ‹เชˆ เช›เชฟเชฆเซเชฐเซ‹ เชชเชฃ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชคเชฎเซ‡ เช›เซ‡เชฒเซเชฒเซ€ เชฒเซ‹เชจเซเชšเชฅเซ€ เชชเซ‹เช‡เชจเซเชŸเชฐ เชฆเซเชตเชพเชฐเชพ เชกเซ‡เชŸเชพ เช†เช‰เชŸเชชเซเชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชกเชจเซ€ เชฎเชงเซเชฏเชฎเชพเช‚ เช•เซเชฏเชพเช‚เช• เชฒเช–เซ€ เชถเช•เซ‹ เช›เซ‹, เชกเซ‡เชŸเชพ เชœเซเช“, เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชœเซเช“ เช…เชจเซ‡, เชœเซ‹ เชคเซ‡ เชฌเชฆเชฒเชพเชฏเซ‹ เชจเชฅเซ€, เชคเซ‹ เชตเชฟเชšเชพเชฐ เชฎเชพเชŸเซ‡ เช–เซ‹เชฐเชพเช• เชฎเซ‡เชณเชตเซ‹. เชธเชพเชšเซเช‚, เช•เซ‹เชˆเชชเชฃ เชซเซ‡เชฐเชซเชพเชฐ เชชเช›เซ€ เชฒเชฟเช‚เช• เช•เชฐเชตเชพเชฎเชพเช‚ เชฅเซ‹เชกเซ€ เชฎเชฟเชจเชฟเชŸเซ‹ เชฒเชพเช—เซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‹? เชชเชฐเชฟเชฃเชพเชฎเซ‡, เชเช• เชšเซ‹เช•เซเช•เชธ เชฒเชพเช‡เชจ เชฎเชณเซ€ เช†เชตเซ€ เชนเชคเซ€ เชœเซ‡เชฃเซ‡ BIOS เชจเซ‡ เช…เชธเซเชฅเชพเชฏเซ€ เชฌเชซเชฐเชฎเชพเช‚เชฅเซ€ เช—เซ‡เชธเซเชŸ เชฎเซ‡เชฎเชฐเซ€เชฎเชพเช‚ เช•เซ‰เชชเชฟ เช•เชฐเซ€ เชนเชคเซ€ - เช…เชจเซ‡, เช–เชฐเซ‡เช–เชฐ, เชฌเชซเชฐเชฎเชพเช‚ เชชเซ‚เชฐเชคเซ€ เชœเช—เซเชฏเชพ เชจเชนเซ‹เชคเซ€. เชคเซ‡ เชตเชฟเชšเชฟเชคเซเชฐ เชฌเชซเชฐ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‹ เชธเซเชคเซเชฐเซ‹เชค เชถเซ‹เชงเชตเชพเชจเซเช‚ เช•เชพเชฐเซเชฏ เชชเชฐเชฟเชฃเชฎเซเชฏเซเช‚ qemu_anon_ram_alloc เชซเชพเช‡เชฒเชฎเชพเช‚ oslib-posix.c - เชคเซเชฏเชพเช‚ เชคเชฐเซเช• เช† เชนเชคเซ‹: เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชคเซ‡ 2 MB เช•เชฆเชจเชพ เชตเชฟเชถเชพเชณ เชชเซƒเชทเซเช  เชชเชฐ เชธเชฐเชจเชพเชฎเชพเช‚เชจเซ‡ เชธเช‚เชฐเซ‡เช–เชฟเชค เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช‰เชชเชฏเซ‹เช—เซ€ เชฅเชˆ เชถเช•เซ‡ เช›เซ‡, เช† เชฎเชพเชŸเซ‡ เช…เชฎเซ‡ เชชเซ‚เช›เซ€เชถเซเช‚ mmap เชชเชนเซ‡เชฒเชพ เชฅเซ‹เชกเซ€ เชตเชงเซ, เช…เชจเซ‡ เชชเช›เซ€ เช…เชฎเซ‡ เชฎเชฆเชฆ เชธเชพเชฅเซ‡ เชตเชงเชพเชฐเชพเชจเซ€ เชฐเช•เชฎ เชชเชฐเชค เช•เชฐเซ€เชถเซเช‚ munmap. เช…เชจเซ‡ เชœเซ‹ เช†เชตเชพ เชธเช‚เชฐเซ‡เช–เชฃเชจเซ€ เชœเชฐเซ‚เชฐ เชจเชฅเซ€, เชคเซ‹ เช…เชฎเซ‡ 2 MB เชจเซ‡ เชฌเชฆเชฒเซ‡ เชชเชฐเชฟเชฃเชพเชฎ เชธเซ‚เชšเชตเซ€เชถเซเช‚ getpagesize() - mmap เชคเซ‡ เชนเชœเซ เชชเชฃ เชธเช‚เชฐเซ‡เช–เชฟเชค เชธเชฐเชจเชพเชฎเซเช‚ เช†เชชเชถเซ‡... เชคเซ‡เชฅเซ€ เชเชฎเซเชธเซเช•เซเชฐเซ€เชชเซเชŸเชจเชฎเชพเช‚ mmap เชฎเชพเชคเซเชฐ เช•เซ‹เชฒ เช•เชฐเซ‡ เช›เซ‡ malloc, เชชเชฐเช‚เชคเซ เช…เชฒเชฌเชคเซเชค เชคเซ‡ เชชเซƒเชทเซเช  เชชเชฐ เชธเช‚เชฐเซ‡เช–เชฟเชค เชฅเชคเซเช‚ เชจเชฅเซ€. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชเช• เชฌเช— เช•เซ‡ เชœเซ‡เชฃเซ‡ เชฎเชจเซ‡ เชฅเซ‹เชกเชพ เชฎเชนเชฟเชจเชพเช“ เชฎเชพเชŸเซ‡ เชจเชฟเชฐเชพเชถ เช•เชฐเซเชฏเซ‹ เชนเชคเซ‹ เชคเซ‡เชฎเชพเช‚ เชซเซ‡เชฐเชซเชพเชฐ เชฆเซเชตเชพเชฐเชพ เชธเซเชงเชพเชฐเชพเชˆ เชนเชคเซ€ ะดะฒัƒั… เชฐเซ‡เช–เชพเช“

เช•เซ‰เชฒเชฟเช‚เช— เช•เชพเชฐเซเชฏเซ‹เชจเซ€ เชธเซเชตเชฟเชงเชพเช“

เช…เชจเซ‡ เชนเชตเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เช‚เชˆเช• เช—เชฃเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เช•เซเชฏเซเชฎเซ เช•เซเชฐเซ‡เชถ เชฅเชคเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชธเซเช•เซเชฐเซ€เชจ เชšเชพเชฒเซ เชฅเชคเซ€ เชจเชฅเซ€, เช…เชจเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช†เช‰เชŸเชชเซเชŸ เชฆเซเชตเชพเชฐเชพ เชจเช•เซเช•เซ€ เช•เชฐเซ€เชจเซ‡ เชเชกเชชเชฅเซ€ เชฒเซ‚เชชเซเชธเชฎเชพเช‚ เชœเชพเชฏ เช›เซ‡. -d exec,in_asm,out_asm. เชเช• เชชเซ‚เชฐเซเชตเชงเชพเชฐเชฃเชพ เช‰เชญเชฐเซ€ เช†เชตเซ€ เช›เซ‡: เชŸเชพเชˆเชฎเชฐ เชตเชฟเช•เซเชทเซ‡เชชเซ‹ (เช…เชฅเชตเชพ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชฌเชงเชพ เชตเชฟเช•เซเชทเซ‡เชชเซ‹) เช†เชตเชคเชพ เชจเชฅเซ€. เช…เชจเซ‡ เช–เชฐเซ‡เช–เชฐ, เชœเซ‹ เชคเชฎเซ‡ เชฎเซ‚เชณ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชฎเชพเช‚เชฅเซ€ เชตเชฟเช•เซเชทเซ‡เชชเซ‹เชจเซ‡ เชธเซเช•เซเชฐเซ‚ เช•เชพเชขเซ€ เชจเชพเช–เซ‹, เชœเซ‡ เช•เซ‹เชˆ เช•เชพเชฐเชฃเซ‹เชธเชฐ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชคเซ‹ เชคเชฎเชจเซ‡ เชธเชฎเชพเชจ เชšเชฟเชคเซเชฐ เชฎเชณเชถเซ‡. เชชเชฐเช‚เชคเซ เช† เชฌเชฟเชฒเช•เซเชฒ เชœเชตเชพเชฌ เชจ เชนเชคเซ‹: เช‰เชชเชฐเซ‹เช•เซเชค เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ เชœเชพเชฐเซ€ เช•เชฐเชพเชฏเซ‡เชฒเชพ เชจเชฟเชถเชพเชจเซ‹เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ เชฆเชฐเซเชถเชพเชตเซ‡ เช›เซ‡ เช•เซ‡ เช…เชฎเชฒเชจเชพ เชฎเชพเชฐเซเช—เซ‹ เช–เซ‚เชฌ เชœ เชตเชนเซ‡เชฒเชพ เช…เชฒเช— เชฅเชˆ เช—เชฏเชพ เชนเชคเชพ. เช…เชนเซ€เช‚ เชคเซ‡ เช•เชนเซ‡เชตเซเช‚ เช†เชตเชถเซเชฏเช• เช›เซ‡ เช•เซ‡ เชฒเซ‰เชจเซเชšเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชถเซเช‚ เชฐเซ‡เช•เซ‹เชฐเซเชก เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ เชคเซ‡เชจเซ€ เชธเชฐเช–เชพเชฎเชฃเซ€ emrun เชจเซ‡เชŸเซ€เชต เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชจเชพ เช†เช‰เชŸเชชเซเชŸ เชธเชพเชฅเซ‡ เชกเซ€เชฌเช—เซ€เช‚เช— เช†เช‰เชŸเชชเซเชŸ เช เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฏเชพเช‚เชคเซเชฐเชฟเช• เชชเซเชฐเช•เซเชฐเชฟเชฏเชพ เชจเชฅเซ€. เชฎเชจเซ‡ เชฌเชฐเชพเชฌเชฐ เช–เชฌเชฐ เชจเชฅเซ€ เช•เซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เชšเชพเชฒเชคเซ‹ เชชเซเชฐเซ‹เช—เซเชฐเชพเชฎ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชจเซ‡เช•เซเชŸ เชฅเชพเชฏ เช›เซ‡ emrun, เชชเชฐเช‚เชคเซ เช†เช‰เชŸเชชเซเชŸเชฎเชพเช‚ เช•เซ‡เชŸเชฒเซ€เช• เชฐเซ‡เช–เชพเช“ เชซเชฐเซ€เชฅเซ€ เช—เซ‹เช เชตเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡, เชคเซ‡เชฅเซ€ เชคเชซเชพเชตเชคเชฎเชพเช‚ เชคเชซเชพเชตเชค เชนเชœเซ เชธเซเชงเซ€ เชเชตเซเช‚ เชฎเชพเชจเซ€ เชฒเซ‡เชตเชพเชจเซเช‚ เช•เชพเชฐเชฃ เชจเชฅเซ€ เช•เซ‡ เชŸเซเชฐเซ‡เชœเซ‡เช•เชŸเซเชฐเซ€เช เช…เชฒเช— เชฅเชˆ เช—เชˆ เช›เซ‡. เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เชธเซ‚เชšเชจเชพเช“ เช…เชจเซเชธเชพเชฐ ljmpl เช…เชฒเช—-เช…เชฒเช— เชธเชฐเชจเชพเชฎเชพเช‚เช“ เชชเชฐ เชธเช‚เช•เซเชฐเชฎเชฃ เช›เซ‡, เช…เชจเซ‡ เชœเชจเชฐเซ‡เชŸ เชฅเชฏเซ‡เชฒ เชฌเชพเชˆเชŸเช•เซ‹เชก เชฎเซ‚เชณเชญเซ‚เชค เชฐเซ€เชคเซ‡ เช…เชฒเช— เช›เซ‡: เชเช•เชฎเชพเช‚ เชนเซ‡เชฒเซเชชเชฐ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเชตเชพเชจเซ€ เชธเซ‚เชšเชจเชพ เช›เซ‡, เชฌเซ€เชœเชพเชฎเชพเช‚ เชจเชฅเซ€. เชธเซ‚เชšเชจเชพเช“เชจเซ‡ เช—เซ‚เช—เชฒ เช•เชฐเซเชฏเชพ เชชเช›เซ€ เช…เชจเซ‡ เช† เชธเซ‚เชšเชจเชพเช“เชจเซ‹ เช…เชจเซเชตเชพเชฆ เช•เชฐเชคเชพ เช•เซ‹เชกเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡, เชธเซŒ เชชเซเชฐเชฅเชฎ, เชฐเชœเชฟเชธเซเชŸเชฐเชฎเชพเช‚ เชคเซ‡เชจเซ€ เชชเชนเซ‡เชฒเชพเช‚ เชคเชฐเชค เชœ cr0 เชเช• เชฐเซ‡เช•เซ‹เชฐเซเชกเชฟเช‚เช— เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ - เชธเชนเชพเชฏเช•เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชชเชฃ - เชœเซ‡เชฃเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‡ เชธเซเชฐเช•เซเชทเชฟเชค เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซเชฏเซเช‚, เช…เชจเซ‡ เชฌเซ€เชœเซเช‚, เช•เซ‡ เชœเซ‡เชเชธ เชธเช‚เชธเซเช•เชฐเชฃ เช•เซเชฏเชพเชฐเซ‡เชฏ เชธเซเชฐเช•เซเชทเชฟเชค เชฎเซ‹เชก เชชเชฐ เชธเซเชตเชฟเชš เช•เชฐเซเชฏเซเช‚ เชจเชฅเซ€. เชชเชฐเช‚เชคเซ เชนเช•เซ€เช•เชค เช เช›เซ‡ เช•เซ‡ เชเชฎเซเชธเซเช•เซเชฐเซ€เชชเซเชŸเชจเชจเซ€ เชฌเซ€เชœเซ€ เชตเชฟเชถเซ‡เชทเชคเชพ เช เช›เซ‡ เช•เซ‡ เชธเซ‚เชšเชจเชพเช“เชจเชพ เช…เชฎเชฒเซ€เช•เชฐเชฃ เชœเซ‡เชตเชพ เช•เซ‹เชกเชจเซ‡ เชธเชนเชจ เช•เชฐเชตเชพเชฎเชพเช‚ เชคเซ‡เชจเซ€ เช…เชจเชฟเชšเซเช›เชพ 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> เชชเชฐเชฟเชฃเชพเชฎเซ‡, เช†เช–เชฐเซ‡ เชฎเชจเซ‡ เช•เชพเชฎ เชชเชฐ เชชเซเชธเซเชคเช•เชพเชฒเชฏ เช…เชœเชฎเชพเชตเชตเชพเชจเซ€ เชคเช• เชฎเชณเซ€ pyparsing, เช…เชจเซ‡ เชเช• เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชฒเช–เชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ เชœเซ‡ เชฌเชฐเชพเชฌเชฐ เชคเซ‡ เช†เชตเชฐเชฃเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‡เชจเชพ เชฎเชพเชŸเซ‡ เชคเซ‡เช“ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡.

เช…เชจเซ‡ เชคเซ‡เชฅเซ€, เชคเซ‡ เชชเช›เซ€ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เชพเชฎ เช•เชฐเชคเซเช‚ เชฒเชพเช—เชคเซเช‚ เชนเชคเซเช‚. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชธเซเช•เซเชฐเซ€เชจเชจเซ‡ เช•เซเชฏเชพเชฐเซ‡เชฏ เชชเซเชฐเชพเชฐเช‚เชญ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชจ เชนเชคเซ‹, เชœเซ‹ เช•เซ‡ memtest86+ เชจเซ‡เชŸเซ€เชต เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชฎเชพเช‚ เชšเชฒเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ เชธเช•เซเชทเชฎ เชนเชคเซเช‚. เช…เชนเซ€เช‚ เช เชธเซเชชเชทเซเชŸ เช•เชฐเชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡ เช•เซ‡ Qemu เชฌเซเชฒเซ‹เช• I/O เช•เซ‹เชก เช•เซ‹เชฐเซ‹เชŸเซ€เชจเชฎเชพเช‚ เชฒเช–เชพเชฏเซ‡เชฒเซ‹ เช›เซ‡. Emscriptenเชจเซเช‚ เชชเซ‹เชคเชพเชจเซเช‚ เช–เซ‚เชฌ เชœ เชฎเซเชถเซเช•เซ‡เชฒ เช…เชฎเชฒเซ€เช•เชฐเชฃ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเซ‡ เชนเชœเซ เชชเชฃ Qemu เช•เซ‹เชกเชฎเชพเช‚ เชธเชฎเชฐเซเชฅเชฟเชค เชนเซ‹เชตเซเช‚ เชœเชฐเซ‚เชฐเซ€ เช›เซ‡, เช…เชจเซ‡ เชคเชฎเซ‡ เชนเชตเซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐเชจเซ‡ เชกเซ€เชฌเช— เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹: Qemu เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‡ เชธเชชเซ‹เชฐเซเชŸ เช•เชฐเซ‡ เช›เซ‡ -kernel, -initrd, -append, เชœเซ‡เชจเซ€ เชธเชพเชฅเซ‡ เชคเชฎเซ‡ Linux เชจเซ‡ เชฌเซเชŸ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชฅเชตเชพ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, memtest86+, เชฌเซเชฒเซ‹เช• เช‰เชชเช•เชฐเชฃเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเชฏเชพ เชตเชฟเชจเชพ. เชชเชฐเช‚เชคเซ เช…เชนเซ€เช‚ เชธเชฎเชธเซเชฏเชพ เช›เซ‡: เชฎเซ‚เชณ เชเชธเซ‡เชฎเซเชฌเชฒเซ€เชฎเชพเช‚ เชคเชฎเซ‡ เชตเชฟเช•เชฒเซเชช เชธเชพเชฅเซ‡ เช•เชจเซเชธเซ‹เชฒ เชชเชฐ Linux เช•เชฐเซเชจเชฒ เช†เช‰เชŸเชชเซเชŸ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹. -nographic, เช…เชจเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฅเซ€ เชŸเชฐเซเชฎเชฟเชจเชฒ เชชเชฐ เช•เซ‹เชˆ เช†เช‰เชŸเชชเซเชŸ เชจเชฅเซ€ เชœเซเชฏเชพเช‚เชฅเซ€ เชคเซ‡ เชฒเซ‹เชจเซเชš เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเชคเซเช‚ emrun, เช†เชตเซเชฏเซ‹ เชจเชฅเซ€. เชเชŸเชฒเซ‡ เช•เซ‡, เชคเซ‡ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€: เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เชจเชฅเซ€ เช…เชฅเชตเชพ เช—เซเชฐเชพเชซเชฟเช•เซเชธ เช†เช‰เชŸเชชเซเชŸ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เชจเชฅเซ€. เช…เชจเซ‡ เชชเช›เซ€ เชฎเชจเซ‡ เชฅเซ‹เชกเซ€ เชฐเชพเชน เชœเซ‹เชตเชพเชจเซเช‚ เชฎเชจ เชฅเชฏเซเช‚. เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ "เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชธเซ‚เชˆ เชฐเชนเซเชฏเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชงเซ€เชฎเซ‡ เชงเซ€เชฎเซ‡ เชเชฌเช•เชคเซเช‚ เชนเชคเซเช‚," เช…เชจเซ‡ เชฒเช—เชญเช— เชชเชพเช‚เชš เชฎเชฟเชจเชฟเชŸ เชชเช›เซ€ เช•เชฐเซเชจเชฒเช เช•เชจเซเชธเซ‹เชฒ เชชเชฐ เชธเช‚เชฆเซ‡เชถเชพเช“เชจเซ‹ เชธเชฎเซ‚เชน เชซเซ‡เช‚เช•เซ€ เชฆเซ€เชงเซ‹ เช…เชจเซ‡ เช…เชŸเช•เชตเชพเชจเซเช‚ เชšเชพเชฒเซ เชฐเชพเช–เซเชฏเซเช‚. เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ, เชธเชพเชฎเชพเชจเซเชฏ เชฐเซ€เชคเซ‡, เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เช…เชจเซ‡ เช…เชฎเชจเซ‡ SDL2 เชธเชพเชฅเซ‡ เช•เชพเชฎ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เซ‹เชกเชฎเชพเช‚ เชกเชฟเช— เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เช•เชฎเชจเชธเซ€เชฌเซ‡, เชฎเชจเซ‡ เช† เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชฐเชตเซ‹ เชคเซ‡ เช–เชฌเชฐ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เช•เซ‡เชŸเชฒเซ€เช• เชœเช—เซเชฏเชพเช เชฎเชพเชฐเซ‡ เชฐเซ‡เชจเซเชกเชฎ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเชตเซเช‚ เชชเชกเซเชฏเซเช‚. เช…เชฎเซเช• เชธเชฎเชฏเซ‡, เชตเชพเชฆเชณเซ€ เชชเซƒเชทเซเช เชญเซ‚เชฎเชฟ เชชเชฐ เชธเซเช•เซเชฐเซ€เชจ เชชเชฐ เชธเชฎเชพเช‚เชคเชฐ0 เชฐเซ‡เช–เชพ เชšเชฎเช•เชคเซ€ เชนเชคเซ€, เชœเซ‡เชฃเซ‡ เช•เซ‡เชŸเชฒเชพเช• เชตเชฟเชšเชพเชฐเซ‹ เชธเซ‚เชšเชตเซเชฏเชพ เชนเชคเชพ. เช…เช‚เชคเซ‡, เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช•เซ‡ เชธเชฎเชธเซเชฏเชพ เช เชนเชคเซ€ เช•เซ‡ Qemu เชเช• เชญเซŒเชคเชฟเช• เชตเชฟเช‚เชกเซ‹เชฎเชพเช‚ เช˜เชฃเซ€ เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชตเชฟเชจเซเชกเซ‹ เช–เซ‹เชฒเซ‡ เช›เซ‡, เชœเซ‡เชจเซ€ เชตเชšเซเชšเซ‡ เชคเชฎเซ‡ Ctrl-Alt-n เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชธเซเชตเชฟเชš เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹: เชคเซ‡ เชฎเซ‚เชณ เชฌเชฟเชฒเซเชกเชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ Emscripten เชฎเชพเช‚ เชจเชนเซ€เช‚. เชตเชฟเช•เชฒเซเชชเซ‹เชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€เชจเซ‡ เชฌเชฟเชจเชœเชฐเซ‚เชฐเซ€ เชตเชฟเช‚เชกเซ‹เชเชฅเซ€ เช›เซเชŸเช•เชพเชฐเซ‹ เชฎเซ‡เชณเชตเซเชฏเชพ เชชเช›เซ€ -monitor none -parallel none -serial none เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชซเซเชฐเซ‡เชฎ เชชเชฐ เช†เช–เซ€ เชธเซเช•เซเชฐเซ€เชจเชจเซ‡ เชฌเชณเชชเซ‚เชฐเซเชตเช• เชซเชฐเซ€เชฅเซ€ เชฆเซ‹เชฐเชตเชพเชจเซ€ เชธเซ‚เชšเชจเชพเช“, เชฌเชงเซเช‚ เช…เชšเชพเชจเช• เช•เชพเชฎ เช•เชฐเซ€ เช—เชฏเซเช‚.

เช•เซ‹เชฐเซ‹เชŸเซ€เชจเซเชธ

เชคเซ‡เชฅเซ€, เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡, เชชเชฐเช‚เชคเซ เชคเชฎเซ‡ เชคเซ‡เชฎเชพเช‚ เช•เช‚เชˆเชชเชฃ เชฐเชธเชชเซเชฐเชฆ เชธเชฟเช‚เช—เชฒ-เชซเซเชฒเซ‹เชชเซ€ เชšเชฒเชพเชตเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เช•เชพเชฐเชฃ เช•เซ‡ เชคเซเชฏเชพเช‚ เช•เซ‹เชˆ เชฌเซเชฒเซ‹เช• I/O เชจเชฅเซ€ - เชคเชฎเชพเชฐเซ‡ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸ เชฒเชพเช—เซ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. Qemu เชชเชพเชธเซ‡ เชชเชนเซ‡เชฒเชพเชฅเซ€ เชœ เช˜เชฃเชพ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชฌเซ‡เช•เชเชจเซเชก เช›เซ‡, เชชเชฐเช‚เชคเซ JavaScript เช…เชจเซ‡ Emscripten เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซ€ เชชเซเชฐเช•เซƒเชคเชฟเชจเซ‡ เชฒเซ€เชงเซ‡, เชคเชฎเซ‡ เชฎเชพเชคเซเชฐ เชœเชพเชฆเซเช—เชฐเซ€ เชธเซเชŸเซ‡เช•เซเชธ เชถเชฐเซ‚ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€. เชเชตเซเช‚ เชฒเชพเช—เซ‡ เช›เซ‡ เช•เซ‡ "เชฌเชงเซเช‚ เชœเชคเซเช‚ เชฐเชนเซเชฏเซเช‚ เช›เซ‡, เชชเซเชฒเชพเชธเซเชŸเชฐ เชฆเซ‚เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡," เชชเชฐเช‚เชคเซ Emscripten เชตเชฟเช•เชพเชธเช•เชฐเซเชคเชพเช“เช เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชฌเชงเซเช‚ เชธเช‚เชญเชพเชณเซ€ เชฒเซ€เชงเซเช‚ เช›เซ‡. เช† เชคเชฆเซเชฆเชจ เชฐเชฎเซเชœเซ€ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡: เชšเชพเชฒเซ‹ เช† เชถเช‚เช•เชพเชธเซเชชเชฆ เชœเซ‡เชตเชพ เชซเช‚เช•เซเชถเชจ เช•เซ‰เชฒเชจเซ‡ เช•เซ‰เชฒ เช•เชฐเซ€เช emscripten_sleep เช…เชจเซ‡ เช…เชจเซเชฏ เช˜เชฃเชพ เชฒเซ‹เช•เซ‹ Asyncify เชฎเชฟเช•เซ‡เชจเชฟเชเชฎเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ‡ เช›เซ‡, เชคเซ‡เชฎเชœ เชชเซ‹เชˆเชจเซเชŸเชฐ เช•เซ‹เชฒเซเชธ เช…เชจเซ‡ เช•เซ‹เชˆเชชเชฃ เชซเช‚เช•เซเชถเชจ เชฎเชพเชŸเซ‡ เช•เซ‹เชฒเซเชธ เชœเซเชฏเชพเช‚ เชชเชนเซ‡เชฒเชพเชจเชพ เชฌเซ‡ เช•เซ‡เชธเชฎเชพเช‚เชฅเซ€ เชเช• เชธเซเชŸเซ‡เช•เชจเซ€ เชจเซ€เชšเซ‡ เช†เชตเซ€ เชถเช•เซ‡ เช›เซ‡. เช…เชจเซ‡ เชนเชตเซ‡, เชฆเชฐเซ‡เช• เชถเช‚เช•เชพเชธเซเชชเชฆ เช•เซ‰เชฒ เชชเชนเซ‡เชฒเชพเช‚, เช…เชฎเซ‡ เชเช• เช…เชธเชฟเช‚เช• เชธเช‚เชฆเชฐเซเชญ เชชเชธเช‚เชฆ เช•เชฐเซ€เชถเซเช‚, เช…เชจเซ‡ เช•เซ‰เชฒ เชชเช›เซ€ เชคเชฐเชค เชœ, เช…เชฎเซ‡ เชคเชชเชพเชธ เช•เชฐเซ€เชถเซเช‚ เช•เซ‡ เช…เชธเซเชฎเซ‡เชณ เช•เซ‰เชฒ เช†เชตเซเชฏเซ‹ เช›เซ‡ เช•เซ‡ เช•เซ‡เชฎ, เช…เชจเซ‡ เชœเซ‹ เชคเซ‡ เชนเชถเซ‡, เชคเซ‹ เช…เชฎเซ‡ เช† เช…เชธเชฟเช‚เช• เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชคเชฎเชพเชฎ เชธเซเชฅเชพเชจเชฟเช• เชšเชฒเซ‹เชจเซ‡ เชธเชพเชšเชตเซ€เชถเซเช‚, เชœเซ‡ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เช•เซ‡ เช•เชฏเซเช‚ เช•เชพเชฐเซเชฏ เชœเซเชฏเชพเชฐเซ‡ เช…เชฎเชจเซ‡ เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเชฐเซ‡ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเชตเชพ เช…เชจเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เช•เชพเชฐเซเชฏเชฎเชพเช‚เชฅเซ€ เชฌเชนเชพเชฐ เชจเซ€เช•เชณเชตเชพ เชฎเชพเชŸเซ‡. เช† เชคเซ‡ เช›เซ‡ เชœเซเชฏเชพเช‚ เช…เชธเชฐเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพเชจเซ‹ เช…เชตเช•เชพเชถ เช›เซ‡ เช—เซเชฎเชพเชตเชตเซ เช…เชธเซเชฎเซ‡เชณ เช•เซ‰เชฒเชฎเชพเช‚เชฅเซ€ เชชเชพเช›เชพ เชซเชฐเซเชฏเชพ เชชเช›เซ€ เช•เซ‹เชก เชเช•เซเชเชฟเช•เซเชฏเซเชถเชจ เชšเชพเชฒเซ เชฐเชพเช–เชตเชพเชจเซ€ เชœเชฐเซ‚เชฐเชฟเชฏเชพเชคเซ‹ เชฎเชพเชŸเซ‡, เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชถเช‚เช•เชพเชธเซเชชเชฆ เช•เซ‰เชฒ เชชเช›เซ€ เชถเชฐเซ‚ เชฅเชคเชพ เชซเช‚เช•เซเชถเชจเชจเชพ "เชธเซเชŸเชฌเซเชธ" เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ โ€” เชœเซ‡เชฎ เช•เซ‡: เชœเซ‹ เชคเซเชฏเชพเช‚ n เชถเช‚เช•เชพเชธเซเชชเชฆ เช•เซ‰เชฒเซเชธ เชนเซ‹เชฏ, เชคเซ‹ เชซเช‚เช•เซเชถเชจเชจเซ‡ เช•เซเชฏเชพเช‚เช• n/2 เชฎเชพเช‚ เชตเชฟเชธเซเชคเซƒเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเชถเซ‡. เชตเช–เชค โ€” เช† เชนเชœเซ เชชเชฃ เช›เซ‡, เชœเซ‹ เชจเชนเซ€เช‚ เชคเซ‹ เชงเซเชฏเชพเชจเชฎเชพเช‚ เชฐเชพเช–เซ‹ เช•เซ‡ เชฆเชฐเซ‡เช• เชธเช‚เชญเชตเชฟเชค เช…เชธเซเชฎเซ‡เชณ เช•เซ‰เชฒ เชชเช›เซ€, เชคเชฎเชพเชฐเซ‡ เชฎเซ‚เชณ เช•เชพเชฐเซเชฏเชฎเชพเช‚ เช•เซ‡เชŸเชฒเชพเช• เชธเซเชฅเชพเชจเชฟเช• เชšเชฒเซ‹เชจเซ‡ เชธเชพเชšเชตเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชคเซเชฏเชพเชฐเชฌเชพเชฆ, เชฎเชพเชฐเซ‡ เชชเชพเชฏเชฅเซ‹เชจเชฎเชพเช‚ เชเช• เชธเชฐเชณ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชชเชฃ เชฒเช–เชตเซ€ เชชเชกเซ€, เชœเซ‡, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เชตเชงเซ เชชเชกเชคเชพ เช‰เชชเชฏเซ‹เช—เชฎเชพเช‚ เชฒเซ‡เชตเชพเชคเชพ เช•เชพเชฐเซเชฏเซ‹เชจเชพ เช†เชชเซ‡เชฒ เชธเซ‡เชŸ เชชเชฐ เช†เชงเชพเชฐเชฟเชค เช›เซ‡ เชœเซ‡ เชฎเชพเชจเชตเชพเชฎเชพเช‚ เช†เชตเซ‡ เช›เซ‡ เช•เซ‡ "เช…เชธเซเชฎเซ‡เชณเชจเซ‡ เชชเซ‹เชคเชพเชจเซ‡ เชชเชธเชพเชฐ เชฅเชตเชพ เชฆเซ‡เชคเชพ เชจเชฅเซ€" (เชเชŸเชฒเซ‡ โ€‹โ€‹โ€‹โ€‹เช•เซ‡, เชธเซเชŸเซ‡เช• เชชเซเชฐเชฎเซ‹เชถเชจ เช…เชจเซ‡ เชฎเซ‡เช‚ เชนเชฎเชฃเชพเช‚ เชœ เชตเชฐเซเชฃเชตเซ‡เชฒ เชฌเชงเซเช‚ เชจเชฅเซ€. เชคเซ‡เชฎเชพเช‚ เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡), เชชเซ‹เช‡เช‚เชŸเชฐเซเชธ เชฆเซเชตเชพเชฐเชพ เช•เซ‹เชฒเซเชธ เชธเซ‚เชšเชตเซ‡ เช›เซ‡ เชœเซ‡เชฎเชพเช‚ เช•เชฎเซเชชเชพเช‡เชฒเชฐ เชฆเซเชตเชพเชฐเชพ เชซเช‚เช•เซเชถเชจเซเชธเชจเซ‡ เช…เชตเช—เชฃเชตเชพ เชœเซ‹เชˆเช เชœเซ‡เชฅเซ€ เช† เชซเช‚เช•เซเชถเชจเซเชธเชจเซ‡ เช…เชธเชฟเช‚เช•เซเชฐเซ‹เชจเชธ เช—เชฃเชตเชพเชฎเชพเช‚ เชจ เช†เชตเซ‡. เช…เชจเซ‡ เชชเช›เซ€ 60 MB เชนเซ‡เช เชณเชจเซ€ JS เชซเชพเชˆเชฒเซ‹ เชธเซเชชเชทเซเชŸเชชเชฃเซ‡ เช–เซ‚เชฌ เชตเชงเชพเชฐเซ‡ เช›เซ‡ - เชšเชพเชฒเซ‹ เช•เชนเซ€เช เช•เซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซ€ 30. เชœเซ‹เช•เซ‡, เชเช•เชตเชพเชฐ เชนเซเช‚ เชเชธเซ‡เชฎเซเชฌเชฒเซ€ เชธเซเช•เซเชฐเชฟเชชเซเชŸ เชธเซ‡เชŸ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹, เช…เชจเซ‡ เช†เช•เชธเซเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชฒเชฟเช‚เช•เชฐ เชตเชฟเช•เชฒเซเชชเซ‹ เชซเซ‡เช‚เช•เซ€ เชฆเซ€เชงเชพ, เชœเซ‡เชฎเชพเช‚เชฅเซ€ -O3. เชนเซเช‚ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ เช•เซ‹เชก เชšเชฒเชพเชตเซเช‚ เช›เซเช‚, เช…เชจเซ‡ เช•เซเชฐเซ‹เชฎเชฟเชฏเชฎ เชฎเซ‡เชฎเชฐเซ€ เช…เชจเซ‡ เช•เซเชฐเซ‡เชถเชจเซ‡ เช–เชพเชˆ เชœเชพเชฏ เช›เซ‡. เชชเช›เซ€ เชฎเซ‡เช‚ เช†เช•เชธเซเชฎเชฟเช• เชฐเซ€เชคเซ‡ เชœเซ‹เชฏเซเช‚ เช•เซ‡ เชคเซ‡ เชถเซเช‚ เชกเชพเช‰เชจเชฒเซ‹เชก เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹... เชธเชพเชฐเซเช‚, เชนเซเช‚ เชถเซเช‚ เช•เชนเซ€ เชถเช•เซเช‚, เชœเซ‹ เชฎเชจเซ‡ 500+ MB Javascript เชตเชฟเชšเชพเชฐเชชเซ‚เชฐเซเชตเช• เช…เชญเซเชฏเชพเชธ เช•เชฐเชตเชพ เช…เชจเซ‡ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เช เช•เชฐเชตเชพเชจเซเช‚ เช•เชนเซ‡เชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชนเซ‹เชค เชคเซ‹ เชนเซเช‚ เชชเชฃ เชธเซเชฅเชฟเชฐ เชฅเชˆ เช—เชฏเซ‹ เชนเซ‹เชค.

เช•เชฎเชจเชธเซ€เชฌเซ‡, Asyncify เชธเชชเซ‹เชฐเซเชŸ เชฒเชพเช‡เชฌเซเชฐเซ‡เชฐเซ€ เช•เซ‹เชกเชฎเชพเช‚เชจเชพ เชšเซ‡เช• เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชฎเซˆเชคเซเชฐเซ€เชชเซ‚เชฐเซเชฃ เชจ เชนเชคเชพ longjmp-s เชœเซ‡เชจเซ‹ เช‰เชชเชฏเซ‹เช— เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เช•เซ‹เชกเชฎเชพเช‚ เชฅเชพเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชจเชพเชจเชพ เชชเซ‡เชš เช•เซ‡ เชœเซ‡ เช† เชคเชชเชพเชธเชจเซ‡ เช…เช•เซเชทเชฎ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเช‚เชฆเชฐเซเชญเซ‹เชจเซ‡ เชฌเชณเชชเซ‚เชฐเซเชตเช• เชชเซเชจเชƒเชธเซเชฅเชพเชชเชฟเชค เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชชเช›เซ€ เชฌเชงเซเช‚ เชฌเชฐเชพเชฌเชฐ เชนเชคเซเช‚, เช•เซ‹เชก เช•เชพเชฎ เช•เชฐเซ‡ เช›เซ‡. เช…เชจเซ‡ เชชเช›เซ€ เชเช• เชตเชฟเชšเชฟเชคเซเชฐ เชตเชธเซเชคเซ เชถเชฐเซ‚ เชฅเชˆ: เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เชธเชฟเช‚เช•เซเชฐเชจเชพเช‡เชเซ‡เชถเชจ เช•เซ‹เชกเชฎเชพเช‚ เชคเชชเชพเชธเซ‹ เชŸเซเชฐเชฟเช—เชฐ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซ€ เชนเชคเซ€ - เชคเซ‡ เชœ เชœเซ‡ เช•เซ‹เชกเชจเซ‡ เช•เซเชฐเซ‡เชถ เช•เชฐเซ‡ เช›เซ‡ เชœเซ‹, เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เชฒเซ‹เชœเชฟเช• เช…เชจเซเชธเชพเชฐ, เชคเซ‡เชจเซ‡ เช…เชตเชฐเซ‹เชงเชฟเชค เช•เชฐเชตเซ‹ เชœเซ‹เชˆเช - เช•เซ‹เชˆเช เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เซ‡เชชเซเชšเชฐ เช•เชฐเซ‡เชฒ เชฎเซเชฏเซเชŸเซ‡เช•เซเชธเชจเซ‡ เชชเช•เชกเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹. เชธเชฆเชญเชพเช—เซเชฏเซ‡, เชธเซ€เชฐเซ€เชฏเชฒเชพเชˆเชเซเชก เช•เซ‹เชกเชฎเชพเช‚ เช† เช•เซ‹เชˆ เชคเชพเชฐเซเช•เชฟเช• เชธเชฎเชธเซเชฏเชพ เชจ เชนเซ‹เชตเชพเชจเซเช‚ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ - เชนเซเช‚ เชซเช•เซเชค Emscripten เชฆเซเชตเชพเชฐเชพ เชชเซ‚เชฐเซ€ เชชเชพเชกเชตเชพเชฎเชพเช‚ เช†เชตเซ‡เชฒ เชฎเชพเชจเช• เชฎเซเช–เซเชฏ เชฒเซ‚เชช เช•เชพเชฐเซเชฏเช•เซเชทเชฎเชคเชพเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซ€ เชฐเชนเซเชฏเซ‹ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ เช…เชธเซเชฎเซ‡เชณ เช•เซ‰เชฒ เชธเซเชŸเซ‡เช•เชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เซ‹เชฒเซ€ เชจเชพเช–เซ‡ เช›เซ‡, เช…เชจเซ‡ เชคเซ‡ เช•เซเชทเชฃเซ‡ เชคเซ‡ เชจเชฟเชทเซเชซเชณ เชœเชถเซ‡. setTimeout เชฎเซเช–เซเชฏ เชฒเซ‚เชชเชฎเชพเช‚เชฅเซ€ - เช†เชฎ, เช•เซ‹เชก เช…เช—เชพเช‰เชจเชพ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเชจเซ‡ เช›เซ‹เชกเซเชฏเชพ เชตเชฟเชจเชพ เชฎเซเช–เซเชฏ เชฒเซ‚เชช เชชเซเชจเชฐเชพเชตเชฐเซเชคเชจเชฎเชพเช‚ เชฆเชพเช–เชฒ เชฅเชฏเซ‹. เช…เชจเช‚เชค เชฒเซ‚เชช เชชเชฐ เชซเชฐเซ€เชฅเซ€ เชฒเช–เซ‹ เช…เชจเซ‡ emscripten_sleep, เช…เชจเซ‡ เชฎเซเชฏเซเชŸเซ‡เช•เซเชธ เชธเชพเชฅเซ‡เชจเซ€ เชธเชฎเชธเซเชฏเชพเช“ เชฌเช‚เชง เชฅเชˆ เช—เชˆ. เช•เซ‹เชก เชตเชงเซ เชคเชพเชฐเซเช•เชฟเช• เชฌเชจเซ€ เช—เชฏเซ‹ เช›เซ‡ - เช›เซ‡เชตเชŸเซ‡, เชนเช•เซ€เช•เชคเชฎเชพเช‚, เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชˆ เช•เซ‹เชก เชจเชฅเซ€ เชœเซ‡ เช†เช—เชพเชฎเซ€ เชเชจเชฟเชฎเซ‡เชถเชจ เชซเซเชฐเซ‡เชฎ เชคเซˆเชฏเชพเชฐ เช•เชฐเซ‡ เช›เซ‡ - เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชซเช•เซเชค เช•เช‚เชˆเช• เช—เชฃเชคเชฐเซ€ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชธเซเช•เซเชฐเซ€เชจ เชธเชฎเชฏเชพเช‚เชคเชฐเซ‡ เช…เชชเชกเซ‡เชŸ เชฅเชพเชฏ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชธเชฎเชธเซเชฏเชพเช“ เชคเซเชฏเชพเช‚ เช…เชŸเช•เซ€ เชจ เชนเชคเซ€: เช•เซ‡เชŸเชฒเซ€เช•เชตเชพเชฐ Qemu เชเช•เซเชเซ‡เช•เซเชฏเซเชถเชจ เช•เซ‹เชˆเชชเชฃ เช…เชชเชตเชพเชฆเซ‹ เช…เชฅเชตเชพ เชญเซ‚เชฒเซ‹ เชตเชฟเชจเชพ เชถเชพเช‚เชคเชฟเชฅเซ€ เชธเชฎเชพเชชเซเชค เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เชคเซ‡ เช•เซเชทเชฃเซ‡ เชฎเซ‡เช‚ เชคเซ‡เชจเซ‡ เช›เซ‹เชกเซ€ เชฆเซ€เชงเซเช‚, เชชเชฐเช‚เชคเซ, เช†เช—เชณ เชœเซ‹เชคเชพเช‚, เชนเซเช‚ เช•เชนเซ€เชถ เช•เซ‡ เชธเชฎเชธเซเชฏเชพ เช† เชนเชคเซ€: เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เช•เซ‹เชก, เชนเช•เซ€เช•เชคเชฎเชพเช‚, เช‰เชชเชฏเซ‹เช— เช•เชฐเชคเซเช‚ เชจเชฅเซ€ setTimeout (เช…เชฅเชตเชพ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชคเชฎเซ‡ เชœเซ‡เชŸเชฒเซ€ เชตเชพเชฐ เชตเชฟเชšเชพเชฐเซ€ เชถเช•เซ‹ เชคเซ‡เชŸเชฒเซ€ เชตเชพเชฐ เชจเชนเซ€เช‚): เช•เชพเชฐเซเชฏ emscripten_yield เชซเช•เซเชค เช…เชธเซเชฎเซ‡เชณ เช•เซ‹เชฒ เชงเซเชตเชœ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เชธเชฎเช—เซเชฐ เชฎเซเชฆเซเชฆเซ‹ เช เช›เซ‡ เช•เซ‡ emscripten_coroutine_next เช…เชธเซเชฎเซ‡เชณ เช•เชพเชฐเซเชฏ เชจเชฅเซ€: เช†เช‚เชคเชฐเชฟเช• เชฐเซ€เชคเซ‡ เชคเซ‡ เชงเซเชตเชœเชจเซ‡ เชคเชชเชพเชธเซ‡ เช›เซ‡, เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชธเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡ เช…เชจเซ‡ เชœเซเชฏเชพเช‚ เชคเซ‡เชจเซ€ เชœเชฐเซ‚เชฐ เชนเซ‹เชฏ เชคเซเชฏเชพเช‚ เชจเชฟเชฏเช‚เชคเซเชฐเชฃ เชธเซเชฅเชพเชจเชพเช‚เชคเชฐเชฟเชค เช•เชฐเซ‡ เช›เซ‡. เชเชŸเชฒเซ‡ เช•เซ‡, เชธเซเชŸเซ‡เช•เชจเซเช‚ เชชเซเชฐเชฎเซ‹เชถเชจ เชคเซเชฏเชพเช‚ เชธเชฎเชพเชชเซเชค เชฅเชพเชฏ เช›เซ‡. เชธเชฎเชธเซเชฏเชพ เช เชนเชคเซ€ เช•เซ‡ เช‰เชชเชฏเซ‹เช—-เช†เชซเซเชŸเชฐ-เชซเซเชฐเซ€ เชนเซ‹เชตเชพเชจเซ‡ เช•เชพเชฐเชฃเซ‡, เชœเซ‡ เชฆเซ‡เช–เชพเชฏ เช›เซ‡ เชœเซเชฏเชพเชฐเซ‡ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชชเซ‚เชฒ เช…เช•เซเชทเชฎ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ เชคเซ‡ เชนเช•เซ€เช•เชคเชจเซ‡ เช•เชพเชฐเชฃเซ‡ เช•เซ‡ เชฎเซ‡เช‚ เชตเชฐเซเชคเชฎเชพเชจ เช•เซ‹เชฐเซ‹เชŸเซ€เชจ เชฌเซ‡เช•เชเชจเซเชกเชฎเชพเช‚เชฅเซ€ เช•เซ‹เชกเชจเซ€ เชฎเชนเชคเซเชตเชชเซ‚เชฐเซเชฃ เชฒเชพเช‡เชจเชจเซ€ เชจเช•เชฒ เช•เชฐเซ€ เชจเชฅเซ€, เช•เชพเชฐเซเชฏ qemu_in_coroutine เชธเชพเชšเซเช‚ เชชเชพเช›เซเช‚ เช†เชตเซเชฏเซเช‚ เชœเซเชฏเชพเชฐเซ‡ เชนเช•เซ€เช•เชคเชฎเชพเช‚ เชคเซ‡ เช–เซ‹เชŸเซเช‚ เชชเชพเช›เซเช‚ เช†เชตเชตเซเช‚ เชœเซ‹เชˆเช. เชœเซ‡เชจเชพ เช•เชพเชฐเชฃเซ‡ เชซเซ‹เชจ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹ emscripten_yield, เชœเซ‡เชจเซ€ เช‰เชชเชฐ เชธเซเชŸเซ‡เช• เชชเชฐ เช•เซ‹เชˆ เชจเชนเซ‹เชคเซเช‚ emscripten_coroutine_next, เชธเซเชŸเซ‡เช• เช–เซ‚เชฌ เชŸเซ‹เชš เชชเชฐ unfolded, เชชเชฐเช‚เชคเซ เชจเชพ setTimeout, เชฎเซ‡เช‚ เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เช•เชนเซเชฏเซเช‚ เชคเซ‡เชฎ, เชชเซเชฐเชฆเชฐเซเชถเชฟเชค เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เชจ เชนเชคเซเช‚.

JavaScript เช•เซ‹เชก เชœเชจเชฐเซ‡เชถเชจ

เช…เชจเซ‡ เช…เชนเซ€เช‚, เชนเช•เซ€เช•เชคเชฎเชพเช‚, "เชจเชพเชœเซเช•เชพเชˆเชจเชพ เชฎเชพเช‚เชธเชจเซ‡ เชชเชพเช›เซเช‚ เชซเซ‡เชฐเชตเชตเชพเชจเซเช‚" เชตเชšเชจ เช†เชชเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เช–เชฐเซ‡เช–เชฐ เชจเชฅเซ€. เช…เชฒเชฌเชคเซเชค, เชœเซ‹ เช†เชชเชฃเซ‡ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ Qemu เช…เชจเซ‡ เชคเซ‡เชฎเชพเช‚ Node.js เชšเชฒเชพเชตเซ€เช, เชคเซ‹ เชธเซเชตเชพเชญเชพเชตเชฟเช• เชฐเซ€เชคเซ‡, Qemuเชฎเชพเช‚ เช•เซ‹เชก เชœเชจเชฐเซ‡เชถเชจ เชชเช›เซ€ เช†เชชเชฃเชจเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เช–เซ‹เชŸเซ€ JavaScript เชฎเชณเชถเซ‡. เชชเชฐเช‚เชคเซ เชนเชœเซ เชชเชฃ, เช…เชฎเซเช• เชชเซเชฐเช•เชพเชฐเชจเซเช‚ เชตเชฟเชชเชฐเซ€เชค เชชเชฐเชฟเชตเชฐเซเชคเชจ.

เชชเซเชฐเชฅเชฎ, เช•เซเชฏเซเชฎเซ เช•เซ‡เชตเซ€ เชฐเซ€เชคเซ‡ เช•เชพเชฐเซเชฏ เช•เชฐเซ‡ เช›เซ‡ เชคเซ‡ เชตเชฟเชถเซ‡ เชฅเซ‹เชกเซเช‚. เช•เซƒเชชเชพ เช•เชฐเซ€เชจเซ‡ เชฎเชจเซ‡ เชคเชฐเชค เชœ เชฎเชพเชซ เช•เชฐเซ‹: เชนเซเช‚ เชตเซเชฏเชพเชตเชธเชพเชฏเชฟเช• Qemu เชกเซ‡เชตเชฒเชชเชฐ เชจเชฅเซ€ เช…เชจเซ‡ เชฎเชพเชฐเชพ เชคเชพเชฐเชฃเซ‹ เช•เซ‡เชŸเชฒเซ€เช• เชœเช—เซเชฏเชพเช เชญเซ‚เชฒเชญเชฐเซ‡เชฒเชพ เชนเซ‹เชˆ เชถเช•เซ‡ เช›เซ‡. เชœเซ‡เชฎ เชคเซ‡เช“ เช•เชนเซ‡ เช›เซ‡, "เชตเชฟเชฆเซเชฏเชพเชฐเซเชฅเซ€เชจเซ‹ เช…เชญเชฟเชชเซเชฐเชพเชฏ เชถเชฟเช•เซเชทเช•เชจเชพ เช…เชญเชฟเชชเซเชฐเชพเชฏ, เชชเซ€เช†เชจเซ‹เชจเชพ เชธเซเชตเชคเชƒเชถเชพเชธเซเชคเซเชฐ เช…เชจเซ‡ เชธเชพเชฎเชพเชจเซเชฏ เชœเซเชžเชพเชจ เชธเชพเชฅเซ‡ เชธเซเชธเช‚เช—เชค เชนเซ‹เชตเซ‹ เชœเชฐเซ‚เชฐเซ€ เชจเชฅเซ€." Qemu เชชเชพเชธเซ‡ เชšเซ‹เช•เซเช•เชธ เชธเช‚เช–เซเชฏเชพเชฎเชพเช‚ เชธเชฎเชฐเซเชฅเชฟเชค เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช›เซ‡ เช…เชจเซ‡ เชฆเชฐเซ‡เช• เชฎเชพเชŸเซ‡ เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€ เชœเซ‡เชตเซ€ เช›เซ‡ target-i386. เชฌเชฟเชฒเซเชกเซ€เช‚เช— เช•เชฐเชคเซ€ เชตเช–เชคเซ‡, เชคเชฎเซ‡ เช•เซ‡เชŸเชฒเชพเช• เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเซ‹ เชฎเชพเชŸเซ‡ เชธเชชเซ‹เชฐเซเชŸเชจเซ‹ เช‰เชฒเซเชฒเซ‡เช– เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹, เชชเชฐเช‚เชคเซ เชชเชฐเชฟเชฃเชพเชฎ เชซเช•เซเชค เช•เซ‡เชŸเชฒเชพเช• เชฆเซเชตเชฟเชธเช‚เช—เซ€ เชนเชถเซ‡. เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เชŸเซ‡เช•เซ‹ เช†เชชเชตเชพ เชฎเชพเชŸเซ‡เชจเซ‹ เช•เซ‹เชก, เชฌเชฆเชฒเชพเชฎเชพเช‚, เช•เซ‡เชŸเชฒเชพเช• เช†เช‚เชคเชฐเชฟเช• Qemu เช‘เชชเชฐเซ‡เชถเชจเซเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡, เชœเซ‡ TCG (เชจเชพเชจเชพ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ) เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชœ เชนเซ‹เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เชฎเชถเซ€เชจ เช•เซ‹เชกเชฎเชพเช‚ เชซเซ‡เชฐเชตเซ‡ เช›เซ‡. tcg เชกเชฟเชฐเซ‡เช•เซเชŸเชฐเซ€เชฎเชพเช‚ เชธเซเชฅเชฟเชค เชฐเซ€เชกเชฎเซ€ เชซเชพเช‡เชฒเชฎเชพเช‚ เชœเชฃเชพเชตเซเชฏเชพ เชฎเซเชœเชฌ, เช† เชฎเซ‚เชณเชฐเซ‚เชชเซ‡ เชจเชฟเชฏเชฎเชฟเชค C เช•เชฎเซเชชเชพเช‡เชฒเชฐเชจเซ‹ เชญเชพเช— เชนเชคเซ‹, เชœเซ‡ เชชเชพเช›เชณเชฅเซ€ JIT เชฎเชพเชŸเซ‡ เชธเซเชตเซ€เช•เชพเชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹. เชคเซ‡เชฅเซ€, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เช† เชฆเชธเซเชคเชพเชตเซ‡เชœเชจเซ€ เชฆเซเชฐเชทเซเชŸเชฟเช เชฒเช•เซเชทเซเชฏ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชนเชตเซ‡ เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชนเซ‹เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เช›เซ‡. เช…เชฎเซเช• เชธเชฎเชฏเซ‡, เช…เชจเซเชฏ เช˜เชŸเช• เชฆเซ‡เช–เชพเชฏเซ‹ - เชจเชพเชจเซ‹ เช•เซ‹เชก เชˆเชจเซเชŸเชฐเชชเซเชฐเซ€เชŸเชฐ (TCI), เชœเซ‡ เชšเซ‹เช•เซเช•เชธ เชนเซ‹เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชฎเชพเชŸเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซ€ เช—เซ‡เชฐเชนเชพเชœเชฐเซ€เชฎเชพเช‚ เช•เซ‹เชก (เชฒเช—เชญเช— เชธเชฎเชพเชจ เช†เช‚เชคเชฐเชฟเช• เช•เชพเชฎเช—เซ€เชฐเซ€) เชšเชฒเชพเชตเชตเซ‹ เชœเซ‹เชˆเช. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เชคเซ‡เชจเชพ เชฆเชธเซเชคเชพเชตเซ‡เชœเซ‹ เชœเชฃเชพเชตเซ‡ เช›เซ‡ เชคเซ‡เชฎ, เช† เชฆเซเชญเชพเชทเชฟเชฏเชพ เชนเช‚เชฎเซ‡เชถเชพ JIT เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ เชคเชฐเซ€เช•เซ‡ เชธเชพเชฐเซ€ เช•เชพเชฎเช—เซ€เชฐเซ€ เช•เชฐเซ€ เชถเช•เชคเซเช‚ เชจเชฅเซ€, เชฎเชพเชคเซเชฐ เช—เชคเชฟเชจเชพ เชธเช‚เชฆเชฐเซเชญเชฎเชพเช‚ เชœ เชจเชนเซ€เช‚, เชชเชฃ เช—เซเชฃเชพเชคเซเชฎเช• เชฐเซ€เชคเซ‡ เชชเชฃ. เชคเซ‡เชฎ เช›เชคเชพเช‚ เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เชคเซ‡เชจเซเช‚ เชตเชฐเซเชฃเชจ เชธเช‚เชชเซ‚เชฐเซเชฃเชชเชฃเซ‡ เชธเซเชธเช‚เช—เชค เช›เซ‡.

เชถเชฐเซ‚เช†เชคเชฎเชพเช‚ เชฎเซ‡เช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชตเชฟเชงเชพเชฏเซเช•เซเชค TCG เชฌเซ‡เช•เชเชจเซเชก เชฌเชจเชพเชตเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซเชฏเซ‹, เชชเชฐเช‚เชคเซ เชธเซ‹เชฐเซเชธ เช•เซ‹เชก เช…เชจเซ‡ เชฌเชพเช‡เชŸเช•เซ‹เชก เชธเซ‚เชšเชจเชพเช“เชจเซเช‚ เชธเช‚เชชเซ‚เชฐเซเชฃ เชธเซเชชเชทเซเชŸ เชตเชฐเซเชฃเชจ เชจ เชนเซ‹เชตเชพเชฅเซ€ เชเชกเชชเชฅเซ€ เชฎเซ‚เช‚เชเชตเชฃเชฎเชพเช‚ เชชเชกเซ€ เช—เชฏเซ‹, เชคเซ‡เชฅเซ€ เชฎเซ‡เช‚ TCI เชฆเซเชญเชพเชทเชฟเชฏเชพเชจเซ‡ เชฒเชชเซ‡เชŸเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช†เชจเชพเชฅเซ€ เช˜เชฃเชพ เชซเชพเชฏเชฆเชพ เชฅเชฏเชพ:

  • เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซ‡ เช…เชฎเชฒเชฎเชพเช‚ เชฎเซ‚เช•เชคเซ€ เชตเช–เชคเซ‡, เชคเชฎเซ‡ เชธเซ‚เชšเชจเชพเช“เชจเชพ เชตเชฐเซเชฃเชจเชจเซ‡ เชจเชนเซ€เช‚, เชชเชฐเช‚เชคเซ เชฆเซเชญเชพเชทเชฟเชฏเชพ เช•เซ‹เชกเชจเซ‡ เชœเซ‹เชˆ เชถเช•เซ‹ เช›เซ‹
  • เชคเชฎเซ‡ เช…เชจเซเชญเชตเซ‡เชฒเชพ เชฆเชฐเซ‡เช• เช…เชจเซเชตเชพเชฆ เชฌเซเชฒเซ‹เช• เชฎเชพเชŸเซ‡ เชซเช‚เช•เซเชถเชจเซเชธ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ€ เชถเช•เชคเชพ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ, เช‰เชฆเชพเชนเชฐเชฃ เชคเชฐเซ€เช•เซ‡, เชธเซ‹เชฎเชพ เช…เชฎเชฒ เชชเช›เซ€ เชœ
  • เชœเซ‹ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ เช•เซ‹เชก เชฌเชฆเชฒเชพเชฏ เช›เซ‡ (เช…เชจเซ‡ เช† เชถเช•เซเชฏ เชฒเชพเช—เซ‡ เช›เซ‡, เชถเชฌเซเชฆ เชชเซ‡เชš เชงเชฐเชพเชตเชคเชพ เชจเชพเชฎเซ‹ เชธเชพเชฅเซ‡เชจเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช†เชงเชพเชฐเซ‡), เชฎเชพเชฐเซ‡ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ JS เช•เซ‹เชกเชจเซ‡ เช…เชฎเชพเชจเซเชฏ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชชเชฐเช‚เชคเซ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชคเซ‡เชจเซ‡ เชซเชฐเซ€เชฅเซ€ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เช•เช‚เชˆเช• เชนเชถเซ‡.

เชคเซเชฐเซ€เชœเชพ เชฎเซเชฆเซเชฆเชพ เชตเชฟเชถเซ‡, เชฎเชจเซ‡ เช–เชพเชคเชฐเซ€ เชจเชฅเซ€ เช•เซ‡ เช•เซ‹เชก เชชเซเชฐเชฅเชฎ เชตเช–เชค เชเช•เซเชเชฟเช•เซเชฏเซเชŸ เชฅเชฏเชพ เชชเช›เซ€ เชชเซ‡เชšเชฟเช‚เช— เชถเช•เซเชฏ เช›เซ‡, เชชเชฐเช‚เชคเซ เชชเซเชฐเชฅเชฎ เชฌเซ‡ เชชเซ‹เชˆเชจเซเชŸ เชชเซ‚เชฐเชคเชพ เช›เซ‡.

เชถเชฐเซ‚เช†เชคเชฎเชพเช‚, เชฎเซ‚เชณ เชฌเชพเชˆเชŸเช•เซ‹เชก เชธเซ‚เชšเชจเชพเชจเชพ เชธเชฐเชจเชพเชฎเชพ เชชเชฐ เช•เซ‹เชก เชฎเซ‹เชŸเชพ เชธเซเชตเชฟเชšเชจเชพ เชฐเซ‚เชชเชฎเชพเช‚ เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชชเช›เซ€, Emscripten, เชœเชจเชฐเซ‡เชŸเซ‡เชก JSเชจเซเช‚ เช‘เชชเซเชŸเชฟเชฎเชพเช‡เชเซ‡เชถเชจ เช…เชจเซ‡ เชฐเชฟเชฒเซ‚เชชเชฟเช‚เช— เชตเชฟเชถเซ‡เชจเชพ เชฒเซ‡เช–เชจเซ‡ เชฏเชพเชฆ เชฐเชพเช–เซ€เชจเซ‡, เชฎเซ‡เช‚ เชตเชงเซ เชฎเชพเชจเชต เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚, เช–เชพเชธ เช•เชฐเซ€เชจเซ‡ เช•เชพเชฐเชฃ เช•เซ‡ เชคเซ‡ เช…เชจเซเชญเชตเชพเชคเซเชฎเช• เชฐเซ€เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚ เช›เซ‡ เช•เซ‡ เช…เชจเซเชตเชพเชฆ เชฌเซเชฒเซ‹เช•เชฎเชพเช‚ เชเช•เชฎเชพเชคเซเชฐ เชชเซเชฐเชตเซ‡เชถ เชฌเชฟเช‚เชฆเซ เชคเซ‡เชจเซ€ เชถเชฐเซ‚เช†เชค เช›เซ‡. เชœเชฒเชฆเซ€ เช•เชนเซเชฏเซเช‚ เช•เซ‡ เชฅเชˆ เช—เชฏเซเช‚, เชฅเซ‹เชกเชพ เชธเชฎเชฏ เชชเช›เซ€ เช…เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ เชนเชคเซ‹ เชœเซ‡ ifs (เชฒเซ‚เชชเซเชธ เชตเชฟเชจเชพ เชนเซ‹เชตเชพ เช›เชคเชพเช‚) เชธเชพเชฅเซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡ เช›เซ‡. เชชเชฐเช‚เชคเซ เชฆเซเชฐเซเชญเชพเช—เซเชฏ, เชคเซ‡ เช•เซเชฐเซ‡เชถ เชฅเชˆ เช—เชฏเซเช‚, เช…เชจเซ‡ เชธเช‚เชฆเซ‡เชถ เช†เชชเซเชฏเซ‹ เช•เซ‡ เชธเซ‚เชšเชจเชพเช“ เช•เซ‡เชŸเชฒเซ€เช• เช–เซ‹เชŸเซ€ เชฒเช‚เชฌเชพเชˆเชจเซ€ เชนเชคเซ€. เชตเชงเซเชฎเชพเช‚, เช† เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เชธเซเชคเชฐ เชชเชฐ เช›เซ‡เชฒเซเชฒเซ€ เชธเซ‚เชšเชจเชพ เชนเชคเซ€ brcond. เช เซ€เช• เช›เซ‡, เชนเซเช‚ เชชเซเชจเชฐเชพเชตเชฐเซเชคเชฟเชค เช•เซ‰เชฒ เชชเชนเซ‡เชฒเชพเช‚ เช…เชจเซ‡ เชชเช›เซ€ เช† เชธเซ‚เชšเชจเชพเชจเซ€ เชœเชจเชฐเซ‡เชถเชจเชฎเชพเช‚ เชเช• เชธเชฐเช–เซ‹ เชšเซ‡เช• เช‰เชฎเซ‡เชฐเซ€เชถ เช…เชจเซ‡... เชคเซ‡เชฎเชพเช‚เชฅเซ€ เชเช• เชชเชฃ เช…เชฎเชฒเชฎเชพเช‚ เช†เชตเซเชฏเซ‹ เชจ เชนเชคเซ‹, เชชเชฐเช‚เชคเซ เชญเชพเชฐเชชเซ‚เชฐเซเชตเช• เชธเซเชตเชฟเชš เช•เชฐเซเชฏเชพ เชชเช›เซ€ เชชเชฃ เชคเซ‡เช“ เชจเชฟเชทเซเชซเชณ เช—เชฏเชพ. เช…เช‚เชคเซ‡, เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ เช•เซ‹เชกเชจเซ‹ เช…เชญเซเชฏเชพเชธ เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชฎเชจเซ‡ เชธเชฎเชœเชพเชฏเซเช‚ เช•เซ‡ เชธเซเชตเซ€เชš เช•เชฐเซเชฏเชพ เชชเช›เซ€, เชตเชฐเซเชคเชฎเชพเชจ เชธเซ‚เชšเชจเชพ เชคเชฐเชซเชจเซ‹ เชจเชฟเชฐเซเชฆเซ‡เชถเช• เชธเซเชŸเซ‡เช•เชฎเชพเช‚เชฅเซ€ เชซเชฐเซ€เชฅเซ€ เชฒเซ‹เชก เชฅเชพเชฏ เช›เซ‡ เช…เชจเซ‡ เช•เชฆเชพเชš เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ JavaScript เช•เซ‹เชก เชฆเซเชตเชพเชฐเชพ เช“เชตเชฐเชฐเชพเชˆเชŸ เชฅเชˆ เชœเชพเชฏ เช›เซ‡. เช…เชจเซ‡ เชคเซ‡เชฅเซ€ เชคเซ‡ เชฌเชนเชพเชฐ เช†เชตเซเชฏเซเช‚. เชฌเชซเชฐเชจเซ‡ เชเช• เชฎเซ‡เช—เชพเชฌเชพเช‡เชŸเชฅเซ€ เชฆเชธ เชธเซเชงเซ€ เชตเชงเชพเชฐเชตเซเช‚ เช•เช‚เชˆเชชเชฃ เชคเชฐเชซ เชฆเซ‹เชฐเซ€ เช—เชฏเซเช‚ เชจเชนเซ€เช‚, เช…เชจเซ‡ เชคเซ‡ เชธเซเชชเชทเซเชŸ เชฅเชˆ เช—เชฏเซเช‚ เช•เซ‡ เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐ เชตเชฐเซเชคเซเชณเซ‹เชฎเชพเช‚ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡. เช…เชฎเชพเชฐเซ‡ เชคเชชเชพเชธ เช•เชฐเชตเชพเชจเซ€ เชนเชคเซ€ เช•เซ‡ เช…เชฎเซ‡ เชตเชฐเซเชคเชฎเชพเชจ เชŸเซ€เชฌเซ€เชจเซ€ เชธเซ€เชฎเชพเช“เชฅเซ€ เช†เช—เชณ เชคเซ‹ เชจเชฅเซ€ เช—เชฏเชพ, เช…เชจเซ‡ เชœเซ‹ เช…เชฎเซ‡ เชคเซ‡เชฎ เช•เชฐเซ€เช, เชคเซ‹ เชชเช›เซ€เชจเชพ เชŸเซ€เชฌเซ€เชจเซเช‚ เชธเชฐเชจเชพเชฎเซเช‚ เชฎเชพเชˆเชจเชธ เชšเชฟเชนเซเชจ เชธเชพเชฅเซ‡ เชœเชพเชฐเซ€ เช•เชฐเซ‹ เชœเซ‡เชฅเซ€ เช…เชฎเซ‡ เช…เชฎเชฒ เชšเชพเชฒเซ เชฐเชพเช–เซ€ เชถเช•เซ€เช. เชตเชงเซเชฎเชพเช‚, เช† เชธเชฎเชธเซเชฏเชพเชจเซเช‚ เชจเชฟเชฐเชพเช•เชฐเชฃ เชฒเชพเชตเซ‡ เช›เซ‡ "เชœเซ‹ เชฌเชพเชˆเชŸเช•เซ‹เชกเชจเซ‹ เช† เชญเชพเช— เชฌเชฆเชฒเชพเชˆ เช—เชฏเซ‹ เชนเซ‹เชฏ เชคเซ‹ เช•เชฏเชพ เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒเชพ เช•เชพเชฐเซเชฏเซ‹เชจเซ‡ เช…เชฎเชพเชจเซเชฏ เช•เชฐเชตเชพ เชœเซ‹เชˆเช?" โ€” เชฎเชพเชคเซเชฐ เชซเช‚เช•เซเชถเชจ เช•เซ‡ เชœเซ‡ เช† เช…เชจเซเชตเชพเชฆ เชฌเซเชฒเซ‹เช•เชจเซ‡ เช…เชจเซเชฐเซ‚เชช เช›เซ‡ เชคเซ‡เชจเซ‡ เช…เชฎเชพเชจเซเชฏ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡. เชœเซ‹ เช•เซ‡, เชฎเซ‡เช‚ เช•เซเชฐเซ‹เชฎเชฟเชฏเชฎเชฎเชพเช‚ เชฌเชงเซเช‚ เชกเซ€เชฌเช— เช•เชฐเซเชฏเซเช‚ เชนเซ‹เชตเชพ เช›เชคเชพเช‚ (เชนเซเช‚ เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเซเช‚ เช›เซเช‚ เช…เชจเซ‡ เชชเซเชฐเชฏเซ‹เช—เซ‹ เชฎเชพเชŸเซ‡ เช…เชฒเช— เชฌเซเชฐเชพเช‰เชเชฐเชจเซ‹ เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเซ‹ เชฎเชพเชฐเชพ เชฎเชพเชŸเซ‡ เชธเชฐเชณ เช›เซ‡), เชซเชพเชฏเชฐเชซเซ‹เช•เซเชธเซ‡ เชฎเชจเซ‡ asm.js เชธเซเชŸเชพเชจเซเชกเชฐเซเชก เชธเชพเชฅเซ‡เชจเซ€ เช…เชธเช‚เช—เชคเชคเชพเช“เชจเซ‡ เชธเซเชงเชพเชฐเชตเชพเชฎเชพเช‚ เชฎเชฆเชฆ เช•เชฐเซ€, เชœเซ‡เชจเชพ เชชเช›เซ€ เช•เซ‹เชก เชตเชงเซ เชเชกเชชเชฅเซ€ เช•เชพเชฎ เช•เชฐเชตเชพ เชฒเชพเช—เซเชฏเซ‹. เช•เซเชฐเซ‹เชฎเชฟเชฏเชฎ.

เชœเชจเชฐเซ‡เชŸ เช•เชฐเซ‡เชฒ เช•เซ‹เชกเชจเซเช‚ เช‰เชฆเชพเชนเชฐเชฃ

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"]

เชจเชฟเชทเซเช•เชฐเซเชท

เชคเซ‡เชฅเซ€, เช•เชพเชฎ เชนเชœเซ€ เชชเซ‚เชฐเซเชฃ เชฅเชฏเซเช‚ เชจเชฅเซ€, เชชเชฐเช‚เชคเซ เชนเซเช‚ เช—เซเชชเซเชค เชฐเซ€เชคเซ‡ เช† เชฒเชพเช‚เชฌเชพ เช—เชพเชณเชพเชจเชพ เชฌเชพเช‚เชงเช•เชพเชฎเชจเซ‡ เชชเซ‚เชฐเซเชฃเชคเชพเชฎเชพเช‚ เชฒเชพเชตเชตเชพเชฅเซ€ เช•เช‚เชŸเชพเชณเซ€ เช—เชฏเซ‹ เช›เซเช‚. เชคเซ‡เชฅเซ€, เชฎเซ‡เช‚ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เชฎเชพเชฐเซ€ เชชเชพเชธเซ‡ เชœเซ‡ เช›เซ‡ เชคเซ‡ เชชเซเชฐเช•เชพเชถเชฟเชค เช•เชฐเชตเชพเชจเซเช‚ เชจเช•เซเช•เซ€ เช•เชฐเซเชฏเซเช‚. เช•เซ‹เชก เชธเซเชฅเชณเซ‹เช เชฅเซ‹เชกเซ‹ เชกเชฐเชพเชฎเชฃเซ‹ เช›เซ‡, เช•เชพเชฐเชฃ เช•เซ‡ เช† เชเช• เชชเซเชฐเชฏเซ‹เช— เช›เซ‡, เช…เชจเซ‡ เชถเซเช‚ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เช›เซ‡ เชคเซ‡ เช…เช—เชพเช‰เชฅเซ€ เชธเซเชชเชทเซเชŸ เชจเชฅเซ€. เชธเช‚เชญเชตเชคเชƒ, เชคเซ‡ เชชเช›เซ€ เช•เซเชฏเซเชฎเซเชจเชพ เช•เซ‡เชŸเชฒเชพเช• เชตเชงเซ เช†เชงเซเชจเชฟเช• เชธเช‚เชธเซเช•เชฐเชฃเชจเซ€ เชŸเซ‹เชš เชชเชฐ เชธเชพเชฎเชพเชจเซเชฏ เช…เชฃเซ เช•เชฎเชฟเชŸเซเชธ เชœเชพเชฐเซ€ เช•เชฐเชตเชพ เชฏเซ‹เช—เซเชฏ เช›เซ‡. เช† เชฆเชฐเชฎเชฟเชฏเชพเชจ, เช—เซ€เชคเชพเชฎเชพเช‚ เชเช• เชฌเซเชฒเซ‹เช— เชซเซ‹เชฐเซเชฎเซ‡เชŸเชฎเชพเช‚ เชเช• เชฅเซเชฐเซ‡เชก เช›เซ‡: เชฆเชฐเซ‡เช• "เชธเซเชคเชฐ" เชฎเชพเชŸเซ‡ เชœเซ‡ เช“เช›เชพเชฎเชพเช‚ เช“เช›เซเช‚ เช•เซ‹เชˆเช• เชฐเซ€เชคเซ‡ เชชเชธเชพเชฐ เชฅเชˆ เช—เชฏเซเช‚ เช›เซ‡, เชฐเชถเชฟเชฏเชจเชฎเชพเช‚ เชตเชฟเช—เชคเชตเชพเชฐ เชญเชพเชทเซเชฏ เช‰เชฎเซ‡เชฐเชตเชพเชฎเชพเช‚ เช†เชตเซเชฏเซเช‚ เช›เซ‡. เชตเชพเชธเซเชคเชตเชฎเชพเช‚, เช† เชฒเซ‡เช– เชฎเชนเชฆเช…เช‚เชถเซ‡ เชจเชฟเชทเซเช•เชฐเซเชทเชจเซ€ เชชเซเชจเชƒเชธเช‚เช—เซเชฐเชน เช›เซ‡ git log.

เชคเชฎเซ‡ เชคเซ‡ เชฌเชงเซเช‚ เช…เชœเชฎเชพเชตเซ€ เชถเช•เซ‹ เช›เซ‹ เช…เชนเซ€เช‚ (เชŸเซเชฐเชพเชซเชฟเช•เชฅเซ€ เชธเชพเชตเชง เชฐเชนเซ‹).

เชชเชนเซ‡เชฒเซ‡เชฅเซ€ เชถเซเช‚ เช•เชพเชฎ เช•เชฐเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡:

  • x86 เชตเชฐเซเชšเซเชฏเซเช…เชฒ เชชเซเชฐเซ‹เชธเซ‡เชธเชฐ เชšเชพเชฒเซ€ เชฐเชนเซเชฏเซเช‚ เช›เซ‡
  • เชฎเชถเซ€เชจ เช•เซ‹เชกเชฅเซ€ JavaScript เชธเซเชงเซ€ JIT เช•เซ‹เชก เชœเชจเชฐเซ‡เชŸเชฐเชจเซ‹ เชตเชฐเซเช•เชฟเช‚เช— เชชเซเชฐเซ‹เชŸเซ‹เชŸเชพเช‡เชช เช›เซ‡
  • เช…เชจเซเชฏ 32-เชฌเซ€เชŸ เช—เซ‡เชธเซเชŸ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเชจเซ‡ เชเชธเซ‡เชฎเซเชฌเชฒ เช•เชฐเชตเชพ เชฎเชพเชŸเซ‡ เชเช• เชŸเซ‡เชฎเซเชชเชฒเซ‡เชŸ เช›เซ‡: เช…เชคเซเชฏเชพเชฐเซ‡ เชคเชฎเซ‡ เชฒเซ‹เชกเชฟเช‚เช— เชธเซเชŸเซ‡เชœ เชชเชฐ เชฌเซเชฐเชพเช‰เชเชฐเชฎเชพเช‚ MIPS เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐ เชซเซเชฐเซ€เชเชฟเช‚เช— เชฎเชพเชŸเซ‡ Linux เชจเซ€ เชชเซเชฐเชถเช‚เชธเชพ เช•เชฐเซ€ เชถเช•เซ‹ เช›เซ‹.

เชคเชฎเซ‡ เชฌเซ€เชœเซเช‚ เชถเซเช‚ เช•เชฐเซ€ เชถเช•เซ‹

  • เช‡เชฎเซเชฏเซเชฒเซ‡เชถเชจเชจเซ‡ เชตเซ‡เช— เช†เชชเซ‹. JIT เชฎเซ‹เชกเชฎเชพเช‚ เชชเชฃ เชคเซ‡ เชตเชฐเซเชšเซเชฏเซเช…เชฒ x86 เช•เชฐเชคเชพเช‚ เชงเซ€เชฎเซเช‚ เชšเชพเชฒเซ‡ เช›เซ‡ (เชชเชฐเช‚เชคเซ เชธเช‚เชญเชตเชคเชƒ เช˜เชฃเชพ เชฌเชงเชพ เช‡เชฎเซเชฏเซเชฒเซ‡เชŸเซ‡เชก เชนเชพเชฐเซเชกเชตเซ‡เชฐ เช…เชจเซ‡ เช†เชฐเซเช•เชฟเชŸเซ‡เช•เซเชšเชฐเซเชธ เชธเชพเชฅเซ‡ เชธเช‚เชชเซ‚เชฐเซเชฃ Qemu เช›เซ‡)
  • เชธเชพเชฎเชพเชจเซเชฏ เชˆเชจเซเชŸเชฐเชซเซ‡เชธ เชฌเชจเชพเชตเชตเชพ เชฎเชพเชŸเซ‡ - เชธเชพเชšเซเช‚ เช•เชนเซเช‚ เชคเซ‹, เชนเซเช‚ เชธเชพเชฐเซ‹ เชตเซ‡เชฌ เชกเซ‡เชตเชฒเชชเชฐ เชจเชฅเซ€, เชคเซ‡เชฅเซ€ เชนเชฎเชฃเชพเช‚ เชฎเชพเชŸเซ‡ เชฎเซ‡เช‚ เชธเซเชŸเชพเชจเซเชกเชฐเซเชก Emscripten เชถเซ‡เชฒเชจเซ‡ เชถเช•เซเชฏ เชคเซ‡เชŸเชฒเซเช‚ เชถเซเชฐเซ‡เชทเซเช  เชฌเชจเชพเชตเซเชฏเซเช‚ เช›เซ‡.
  • เชตเชงเซ เชœเชŸเชฟเชฒ Qemu เช•เชพเชฐเซเชฏเซ‹ - เชจเซ‡เชŸเชตเชฐเซเช•เชฟเช‚เช—, VM เชธเซเชฅเชณเชพเช‚เชคเชฐ, เชตเช—เซ‡เชฐเซ‡ เชถเชฐเซ‚ เช•เชฐเชตเชพเชจเซ‹ เชชเซเชฐเชฏเชพเชธ เช•เชฐเซ‹.
  • เชฏเซเชชเซ€เชกเซ€: เชคเชฎเชพเชฐเซ‡ เชคเชฎเชพเชฐเชพ เชฅเซ‹เชกเชพ เชตเชฟเช•เชพเชธ เช…เชจเซ‡ เชฌเช— เชฐเชฟเชชเซ‹เชฐเซเชŸเซเชธ Emscripten เช…เชชเชธเซเชŸเซเชฐเซ€เชฎ เชชเชฐ เชธเชฌเชฎเชฟเชŸ เช•เชฐเชตเชพเชจเซ€ เชœเชฐเซ‚เชฐ เชชเชกเชถเซ‡, เชœเซ‡เชฎ เช•เซ‡ Qemu เช…เชจเซ‡ เช…เชจเซเชฏ เชชเซเชฐเซ‹เชœเซ‡เช•เซเชŸเชจเชพ เช…เช—เชพเช‰เชจเชพ เชชเซ‹เชฐเซเชŸเชฐเซเชธเซ‡ เช•เชฐเซเชฏเซเช‚ เชนเชคเซเช‚. เชฎเชพเชฐเชพ เช•เชพเชฐเซเชฏเชจเชพ เชญเชพเช— เชฐเซ‚เชชเซ‡ Emscripten เชฎเชพเช‚ เชคเซ‡เชฎเชจเชพ เชฏเซ‹เช—เชฆเชพเชจเชจเซ‹ เช—เชฐเซเชญเชฟเชค เช‰เชชเชฏเซ‹เช— เช•เชฐเชตเชพเชฎเชพเช‚ เชธเช•เซเชทเชฎ เชฅเชตเชพ เชฌเชฆเชฒ เชคเซ‡เชฎเชจเซ‹ เช†เชญเชพเชฐ.

เชธเซ‹เชฐเซเชธ: www.habr.com

เชเช• เชŸเชฟเชชเซเชชเชฃเซ€ เช‰เชฎเซ‡เชฐเซ‹