QEMU.js: เจนเฉเจฃ เจ—เฉฐเจญเฉ€เจฐ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ…เจคเฉ‡ WASM เจจเจพเจฒ

เจ‡เฉฑเจ• เจตเจพเจฐ เจคเฉ‡ เจฎเฉˆเจ‚ เจฎเจœเจผเฉ‡ เจฒเจˆ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฆเฉ€ เจ‰เจฒเจŸเฉ€เจฏเฉ‹เจ—เจคเจพ เจจเฉ‚เฉฐ เจธเจพเจฌเจค เจ•เจฐเฉ‹ เจ…เจคเฉ‡ เจฎเจธเจผเฉ€เจจ เจ•เฉ‹เจก เจคเฉ‹เจ‚ JavaScript (เจตเจงเฉ‡เจฐเฉ‡ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, Asm.js) เจฌเจฃเจพเจ‰เจฃเจพ เจธเจฟเฉฑเจ–เฉ‹เฅค QEMU เจจเฉ‚เฉฐ เจชเฉเจฐเจฏเฉ‹เจ— เจฒเจˆ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจ…เจคเฉ‡ เจ•เฉเจ เจธเจฎเฉ‡เจ‚ เจฌเจพเจ…เจฆ เจนเจพเจฌเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฒเฉ‡เจ– เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจŸเจฟเฉฑเจชเจฃเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจจเฉ‚เฉฐ WebAssembly เจตเจฟเฉฑเจš เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเฉ‚เฉฐ เจฐเฉ€เจฎเฉ‡เจ• เจ•เจฐเจจ เจฆเฉ€ เจธเจฒเจพเจน เจฆเจฟเฉฑเจคเฉ€ เจ—เจˆ เจธเฉ€, เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ†เจชเจฃเฉ‡ เจ†เจช เจจเฉ‚เฉฐ เจ›เฉฑเจก เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€ เจฒเจ—เจญเจ— เจฎเฉเจ•เฉฐเจฎเจฒ เจฎเฉˆเจ‚ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‡เจน เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€... เจ•เฉฐเจฎ เจšเฉฑเจฒ เจฐเจฟเจนเจพ เจธเฉ€, เจชเจฐ เจฌเจนเฉเจค เจนเฉŒเจฒเฉ€, เจ…เจคเฉ‡ เจนเฉเจฃ, เจนเจพเจฒ เจนเฉ€ เจตเจฟเฉฑเจš เจ‰เจธ เจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† เจนเฉˆ เจŸเจฟเฉฑเจชเจฃเฉ€ เจตเจฟเจธเจผเฉ‡ 'เจคเฉ‡ "เจคเจพเจ‚ เจ‡เจน เจธเจญ เจ•เจฟเจตเฉ‡เจ‚ เจ–เจคเจฎ เจนเฉ‹เจ‡เจ†?" เจฎเฉ‡เจฐเฉ‡ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจœเจตเจพเจฌ เจฆเฉ‡ เจœเจตเจพเจฌ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจธเฉเจฃเจฟเจ† "เจ‡เจน เจ‡เฉฑเจ• เจฒเฉ‡เจ– เจตเจฐเจ—เจพ เจฒเฉฑเจ—เจฆเจพ เจนเฉˆ." เจ–เฉˆเจฐ, เจœเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เฉฑเจ• เจฒเฉ‡เจ– เจนเฉ‹เจตเฉ‡เจ—เจพ. เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ•เจฟเจธเฉ‡ เจจเฉ‚เฉฐ เจ‡เจน เจฒเจพเจญเจฆเจพเจ‡เจ• เจฒเฉฑเจ—เฉ‡เฅค เจ‡เจธ เจคเฉ‹เจ‚ เจชเจพเจ เจ• QEMU เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจธเจผเจจ เจฌเฉˆเจ•เจเจ‚เจก เจฆเฉ‡ เจกเจฟเจœเจผเจพเจˆเจจ เจฌเจพเจฐเฉ‡ เจ•เฉเจ เจคเฉฑเจฅ เจธเจฟเฉฑเจ–เจฃเจ—เฉ‡, เจจเจพเจฒ เจนเฉ€ เจตเฉˆเฉฑเจฌ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจฒเจˆ เจœเจธเจŸ-เจ‡เจจ-เจŸเจพเจˆเจฎ เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจ•เจฟเจตเฉ‡เจ‚ เจฒเจฟเจ–เจฃเจพ เจนเฉˆเฅค

เจ•เฉฐเจฎ

เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจœเจพเจฃ เจฒเจฟเจ† เจธเฉ€ เจ•เจฟ เจœเจพเจตเจพ เจธเจ•เฉเจฐเจฟเจชเจŸ เจฒเจˆ QEMU เจจเฉ‚เฉฐ เจ•เจฟเจตเฉ‡เจ‚ "เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚" เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ เจนเฉˆ, เจ‡เจธ เจตเจพเจฐ เจ‡เจน เจธเจฎเจเจฆเจพเจฐเฉ€ เจจเจพเจฒ เจ•เจฐเจจ เจ…เจคเฉ‡ เจชเฉเจฐเจพเจฃเฉ€เจ†เจ‚ เจ—เจฒเจคเฉ€เจ†เจ‚ เจจเฉ‚เฉฐ เจฆเฉเจนเจฐเจพเจ‰เจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€.

เจ—เจฒเจคเฉ€ เจจเฉฐเจฌเจฐ เจ‡เฉฑเจ•: เจชเฉเจ†เจ‡เฉฐเจŸ เจฐเฉ€เจฒเฉ€เจœเจผ เจคเฉ‹เจ‚ เจฌเฉเจฐเจพเจ‚เจš

เจฎเฉ‡เจฐเฉ€ เจชเจนเจฟเจฒเฉ€ เจ—เจฒเจคเฉ€ เจ…เจชเจธเจŸเฉเจฐเฉ€เจฎ เจธเฉฐเจธเจ•เจฐเจฃ 2.4.1 เจคเฉ‹เจ‚ เจฎเฉ‡เจฐเฉ‡ เจธเฉฐเจธเจ•เจฐเจฃ เจจเฉ‚เฉฐ เจซเฉ‹เจฐเจ• เจ•เจฐเจจเจพ เจธเฉ€เฅค เจซเจฟเจฐ เจ‡เจน เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจšเฉฐเจ—เจพ เจตเจฟเจšเจพเจฐ เจœเจพเจชเจฟเจ†: เจœเฉ‡เจ•เจฐ เจชเฉเจ†เจ‡เฉฐเจŸ เจฐเฉ€เจฒเฉ€เจœเจผ เจฎเฉŒเจœเฉ‚เจฆ เจนเฉˆ, เจคเจพเจ‚ เจ‡เจน เจธเจผเจพเจ‡เจฆ เจธเจงเจพเจฐเจจ 2.4 เจจเจพเจฒเฉ‹เจ‚ เจตเจงเฉ‡เจฐเฉ‡ เจธเจฅเจฟเจฐ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธ เจคเฉ‹เจ‚ เจตเฉ€ เจตเฉฑเจง เจฌเฉเจฐเจพเจ‚เจš master. เจ…เจคเฉ‡ เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ–เฉเจฆ เจฆเฉ‡ เจฌเฉฑเจ—เจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจ‰เจšเจฟเจค เจฎเจพเจคเจฐเจพ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจฏเฉ‹เจœเจจเจพ เจฌเจฃเจพเจˆ เจนเฉˆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฆเฉ€ เจฌเจฟเจฒเจ•เฉเจฒ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจธเฉ€เฅค เจ‡เจน เจธเฉฐเจญเจต เจนเฉˆ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจจเจฟเจ•เจฒเจฟเจ†. เจชเจฐ เจ‡เฉฑเจฅเฉ‡ เจ—เฉฑเจฒ เจ‡เจน เจนเฉˆ: QEMU เจธเจฅเจฟเจฐ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ 10 เจชเฉเจฐเจคเฉ€เจธเจผเจค เจฆเฉเจ†เจฐเจพ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจ•เจฐเจจ เจฆเจพ เจเจฒเจพเจจ เจตเฉ€ เจ•เฉ€เจคเจพ เจนเฉˆเฅค "เจนเจพเจ‚, เจนเฉเจฃ เจฎเฉˆเจ‚ เจซเฉเจฐเฉ€เจœเจผ เจ•เจฐเจจ เจœเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚," เจฎเฉˆเจ‚ เจธเฉ‹เจšเจฟเจ† เจ…เจคเฉ‡ เจŸเฉเฉฑเจŸ เจ—เจฟเจ†เฅค เจ‡เฉฑเจฅเฉ‡ เจธเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจตเจฟเจญเจฟเฉฐเจจเจคเจพ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ: QEMU.js เจฆเฉ€ เจธเจฟเฉฐเจ—เจฒ-เจฅเฉเจฐเฉˆเจกเจก เจชเฉเจฐเจ•เจฟเจฐเจคเฉ€ เจฆเฉ‡ เจ•เจพเจฐเจจ เจ…เจคเฉ‡ เจ‡เจธ เจคเฉฑเจฅ เจฆเฉ‡ เจ•เจพเจฐเจจ เจ•เจฟ เจฎเฉ‚เจฒ QEMU เจฌเจนเฉ-เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจฆเฉ€ เจ…เจฃเจนเฉ‹เจ‚เจฆ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ (เจ…เจฐเจฅเจพเจค, เจ•เจˆ เจ—เฉˆเจฐ-เจธเฉฐเจฌเฉฐเจงเจฟเจค เจ•เฉ‹เจก เจฎเจพเจฐเจ—เจพเจ‚ เจจเฉ‚เฉฐ เจ‡เฉฑเจ•เฉ‹ เจธเจฎเฉ‡เจ‚ เจšเจฒเจพเจ‰เจฃ เจฆเฉ€ เจฏเฉ‹เจ—เจคเจพ, เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซเจผ "เจธเจพเจฐเฉ‡ เจ•เจฐเจจเจฒ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเฉ‹") เจ‡เจธเจฆเฉ‡ เจฒเจˆ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจนเฉˆ, เจฅเจฐเจฟเฉฑเจกเจพเจ‚ เจฆเฉ‡ เจฎเฉเฉฑเจ– เจ•เจพเจฐเจœ เจœเฉ‹ เจฎเฉˆเจจเฉ‚เฉฐ เจฌเจพเจนเจฐเฉ‹เจ‚ เจ•เจพเจฒ เจ•เจฐเจจ เจฆเฉ‡ เจฏเฉ‹เจ— เจนเฉ‹เจฃ เจฒเจˆ "เจ‡เจธ เจจเฉ‚เฉฐ เจšเจพเจฒเฉ‚" เจ•เจฐเจจเฉ‡ เจชเจ เจธเจจเฅค เจ‡เจธ เจจเจพเจฒ เจฐเจฒเฉ‡เจตเฉ‡เจ‚ เจฆเฉŒเจฐเจพเจจ เจ•เฉเจ เจ•เฉเจฆเจฐเจคเฉ€ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจชเฉˆเจฆเจพ เจนเฉ‹เจˆเจ†เจ‚เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ เจฌเฉเจฐเจพเจ‚เจš เจคเฉ‹เจ‚ เจ•เฉเจ เจฌเจฆเจฒเจพเจ… master, เจœเจฟเจธ เจจเจพเจฒ เจฎเฉˆเจ‚ เจ†เจชเจฃเฉ‡ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฎเจฟเจฒเจพเจ‰เจฃ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เฉ€เจคเฉ€ เจธเฉ€, เจจเฉ‚เฉฐ เจชเฉเจ†เจ‡เฉฐเจŸ เจฐเฉ€เจฒเฉ€เจœเจผ (เจ…เจคเฉ‡ เจ‡เจธ เจฒเจˆ เจฎเฉ‡เจฐเฉ€ เจธเจผเจพเจ–เจพ เจตเจฟเฉฑเจš) เจตเจฟเฉฑเจš เจตเฉ€ เจšเฉˆเจฐเฉ€ เจšเฉเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจธเฉฐเจญเจต เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจนเฉ‚เจฒเจค เจจเจนเฉ€เจ‚ เจœเฉ‹เฉœเฉ€ เจนเฉ‹เจตเฉ‡เจ—เฉ€เฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจฎเฉˆเจ‚ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ เจ•เจฟ เจชเฉเจฐเฉ‹เจŸเฉ‹เจŸเจพเจˆเจช เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจธเฉเฉฑเจŸเจฃเจพ, เจ‡เจธ เจจเฉ‚เฉฐ เจนเจฟเฉฑเจธเจฟเจ†เจ‚ เจฒเจˆ เจตเฉฑเจ– เจ•เจฐเจจเจพ เจ…เจคเฉ‡ เจธเจ•เฉเจฐเฉˆเจš เจคเฉ‹เจ‚ เจจเจตเจพเจ‚ เจธเฉฐเจธเจ•เจฐเจฃ เจฌเจฃเจพเจ‰เจฃเจพ เจ…เจœเฉ‡ เจตเฉ€ เจธเจฎเจเจฆเจพเจฐ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉเจฃ เจคเฉ‹เจ‚ master.

เจ—เจฒเจคเฉ€ เจจเฉฐเจฌเจฐ เจฆเฉ‹: TLP เจตเจฟเจงเฉ€

เจธเฉฐเจ–เฉ‡เจช เจฐเฉ‚เจช เจตเจฟเฉฑเจš, เจ‡เจน เจ‡เฉฑเจ• เจ—เจฒเจคเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ‡เจน "เจ•เจฟเฉฑเจฅเฉ‡ เจ…เจคเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจœเจพเจฃเจพ เจนเฉˆ?" เจ…เจคเฉ‡ เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ "เจ•เฉ€ เจ…เจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจœเจพเจตเจพเจ‚เจ—เฉ‡?" เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ€ เจชเฉ‚เจฐเฉ€ เจ—เจฒเจคเจซเจนเจฟเจฎเฉ€ เจฆเฉ€เจ†เจ‚ เจธเจฅเจฟเจคเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉเจฐเฉ‹เจœเฉˆเจ•เจŸ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจ‡เฉฑเจ• เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจนเฉˆเฅค เจ‡เจนเจจเจพเจ‚ เจนเจพเจฒเจคเจพเจ‚ เจตเจฟเฉฑเจš เจฌเฉ‡เจขเฉฐเจ—เฉ‡ เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฟเฉฐเจ— เจ‡เจน เจ‡เฉฑเจ• เจœเจพเจ‡เจœเจผ เจตเจฟเจ•เจฒเจช เจธเฉ€, เจชเจฐ, เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฌเฉ‡เจฒเฉ‹เฉœเฉ‡ เจฆเฉเจนเจฐเจพเจ‰เจฃเจพ เจจเจนเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€เฅค เจ‡เจธ เจตเจพเจฐ เจฎเฉˆเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฎเจเจฆเจพเจฐเฉ€ เจจเจพเจฒ เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจธเฉ€: เจชเจฐเจฎเจพเจฃเฉ‚ เจ•เจฎเจฟเจŸ, เจšเฉ‡เจคเฉฐเจจ เจ•เฉ‹เจก เจฌเจฆเจฒเจพเจต (เจ…เจคเฉ‡ "เจฌเฉ‡เจคเจฐเจคเฉ€เจฌ เจ…เฉฑเจ–เจฐเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เฉ‡ เจจเจพ เจ•เจฐเจจเจพ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‡เจน เจธเฉฐเจ•เจฒเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพ (เจšเฉ‡เจคเจพเจตเจจเฉ€เจ†เจ‚ เจฆเฉ‡ เจจเจพเจฒ)", เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฒเฉ€เจจเจธ เจŸเฉ‹เจฐเจตเจพเจฒเจกเจธ เจจเฉ‡ เจ‡เฉฑเจ• เจตเจพเจฐ เจ•เจฟเจธเฉ‡ เจฌเจพเจฐเฉ‡ เจ•เจฟเจนเจพ เจธเฉ€, เจตเจฟเจ•เฉ€เจ•เฉ‹เจŸ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ), เจ†เจฆเจฟเฅค

เจ—เจฒเจคเฉ€ เจจเฉฐเจฌเจฐ เจคเจฟเฉฐเจจ: เจซเฉ‹เจฐเจก เจจเฉ‚เฉฐ เจœเจพเจฃเฉ‡ เจฌเจฟเจจเจพเจ‚ เจชเจพเจฃเฉ€ เจตเจฟเฉฑเจš เจœเจพเจฃเจพ

เจฎเฉˆเจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เจธ เจคเฉ‹เจ‚ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ›เฉเจŸเจ•เจพเจฐเจพ เจจเจนเฉ€เจ‚ เจชเจพเจ‡เจ† เจนเฉˆ, เจชเจฐ เจนเฉเจฃ เจฎเฉˆเจ‚ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจตเจฟเจฐเฉ‹เจง เจฆเฉ‡ เจฐเจธเจคเฉ‡ 'เจคเฉ‡ เจšเฉฑเจฒเจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ "เจฌเจพเจฒเจ— เจตเจœเฉ‹เจ‚" เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ, เจ…เจฐเจฅเจพเจค, เจธเจผเฉเจฐเฉ‚ เจคเฉ‹เจ‚ เจฎเฉ‡เจฐเจพ TCG เจฌเฉˆเจ•เจเจ‚เจก เจฒเจฟเจ–เฉ‹, เจคเจพเจ‚ เจ•เจฟ เจจเจพ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ•เจนเจฟเจฃ เจฒเจˆ, "เจนเจพเจ‚, เจ‡เจน เจฌเฉ‡เจธเจผเจ•, เจนเฉŒเจฒเฉ€ เจนเฉŒเจฒเฉ€ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจนเจฐ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฆเจพ - เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚ TCI เจฒเจฟเจ–เจฟเจ† เจ—เจฟเจ† เจนเฉˆ..." เจ‡เจธเจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจชเฉฑเจธเจผเจŸ เจนเฉฑเจฒ เจตเจพเจ‚เจ— เจœเจพเจชเจฆเจพ เจธเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจฌเจพเจˆเจจเจฐเฉ€ เจ•เฉ‹เจก เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเจพเจ‚. เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจน เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ, "เจ—เฉˆเจ‚เจŸ เจ‡เจ•เฉฑเจ เฉ‡ เจนเฉ‹เจัƒ, เจชเจฐ เจ‰เจน เจ‡เฉฑเจ• เจจเจนเฉ€เจ‚โ€: เจ•เฉ‹เจก, เจฌเฉ‡เจธเจผเฉฑเจ•, เจฌเจพเจˆเจจเจฐเฉ€ เจนเฉˆ, เจชเจฐ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจ‡เจธ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ - เจ‡เจธ เจจเฉ‚เฉฐ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจชเจพเจˆเจฒเฉ‡เจธเจผเจจ เจฒเจˆ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจตเจฟเฉฑเจš เจงเฉฑเจ•เจฟเจ† เจœเจพเจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ, เจจเจคเฉ€เจœเฉ‡ เจตเจœเฉ‹เจ‚ JS เจธเฉฐเจธเจพเจฐ เจคเฉ‹เจ‚ เจ‡เฉฑเจ• เจ–เจพเจธ เจตเจธเจคเฉ‚, เจœเจฟเจธเจฆเฉ€ เจ…เจœเฉ‡ เจตเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจ•เจฟเจคเฉ‡ เจฌเจšเจพเจ‡เจ† เจœเจพเจตเฉ‡เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจธเจงเจพเจฐเจฃ RISC เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ 'เจคเฉ‡, เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจธเจฎเจเจฆเจพ เจนเจพเจ‚, เจ‡เฉฑเจ• เจ†เจฎ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจชเฉเจจเจฐเจœเจจเจฎ เจ•เฉ‹เจก เจฒเจˆ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจธเจชเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจฐเฉ€เจธเฉˆเจŸ เจ•เจฐเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ - เจœเฉ‡ เจ‡เจน เจ‰เจน เจจเจนเฉ€เจ‚ เจนเฉˆ เจœเจฟเจธเจฆเฉ€ เจธเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœ เจนเฉˆ, เจคเจพเจ‚, เจ•เจฟเจธเฉ‡ เจตเฉ€ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจ‡เจน เจจเฉ‡เฉœเฉ‡ เจนเฉˆ. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจฎเฉ‡เจฐเฉ€ เจ†เจ–เจฐเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจคเฉ‹เจ‚, เจฎเฉˆเจ‚ เจธเจฟเฉฑเจ–เจฟเจ† เจนเฉˆ เจ•เจฟ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจจเฉ‚เฉฐ เจ…เจจเฉเจตเจพเจฆ เจฌเจฒเจพเจ• เจฆเฉ‡ เจฎเฉฑเจง เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เฉ€เจคเจพ เจœเจพเจชเจฆเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจธเจพเจจเฉ‚เฉฐ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ”เจซเจธเฉˆเฉฑเจŸ เจคเฉ‹เจ‚ เจตเจฟเจ†เจ–เจฟเจ† เจ•เฉ€เจคเฉ‡ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจฆเฉ€ เจฒเฉ‹เฉœ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจ…เจคเฉ‡ เจ…เจธเฉ€เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจธเจฟเจฐเจซเจผ เจŸเฉ€เจฌเฉ€ 'เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจคเฉ‹เจ‚ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจพเจ‚เฅค .

เจ‰เจจเฉเจนเจพเจ‚ เจจเฉ‡ เจ† เจ•เฉ‡ เจฒเฉฑเจค เจฎเจพเจฐเฉ€

เจนเจพเจฒเจพเจ‚เจ•เจฟ เจฎเฉˆเจ‚ เจœเฉเจฒเจพเจˆ เจตเจฟเฉฑเจš เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจ–เจฃเจพ เจธเจผเฉเจฐเฉ‚ เจ•เฉ€เจคเจพ, เจ‡เฉฑเจ• เจœเจพเจฆเฉ‚เจˆ เจ•เจฟเฉฑเจ• เจจเฉ‡ เจงเจฟเจ†เจจ เจจเจนเฉ€เจ‚ เจฆเจฟเฉฑเจคเจพ: เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ GitHub เจคเฉ‹เจ‚ เจชเฉฑเจคเจฐ เจฎเฉเฉฑเจฆเจฟเจ†เจ‚ เจ…เจคเฉ‡ เจชเฉเฉฑเจฒ เจฌเฉ‡เจจเจคเฉ€เจ†เจ‚ เจฆเฉ‡ เจœเจตเจพเจฌเจพเจ‚ เจฌเจพเจฐเฉ‡ เจธเฉ‚เจšเจจเจพเจตเจพเจ‚ เจตเจœเฉ‹เจ‚ เจ†เจ‰เจ‚เจฆเฉ‡ เจนเจจ, เจชเจฐ เจ‡เฉฑเจฅเฉ‡, เจ…เจšเจพเจจเจ• เจงเจพเจ—เฉ‡ เจตเจฟเฉฑเจš เจœเจผเจฟเจ•เจฐ เจ•เจฟเจฎเฉ‚ เจฌเฉˆเจ•เจเจ‚เจก เจตเจœเฉ‹เจ‚ เจฌเจพเจ‡เจจเฉ‡เจฐเฉ€เจ…เจจ เจธเฉฐเจฆเจฐเจญ เจตเจฟเฉฑเจš, "เจ‰เจธเจจเฉ‡ เจ…เจœเจฟเจนเจพ เจ•เฉเจ เจ•เฉ€เจคเจพ, เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจน เจ•เฉเจ เจ•เจนเฉ‡เฅค" เจ…เจธเฉ€เจ‚ Emscripten เจฆเฉ€ เจธเฉฐเจฌเฉฐเจงเจฟเจค เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจ เจฌเจพเจฐเฉ‡ เจ—เฉฑเจฒ เจ•เจฐ เจฐเจนเฉ‡ เจธเฉ€ เจฌเจพเจ‡เจจเฉ‡เจฐเฉ€เจ…เจจ WASM JIT เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ. เจ–เฉˆเจฐ, เจฎเฉˆเจ‚ เจ•เจฟเจนเจพ เจ•เจฟ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจ‰เฉฑเจฅเฉ‡ เจ…เจชเจพเจšเฉ‡ 2.0 เจฒเจพเจ‡เจธเฉฐเจธ เจนเฉˆ, เจ…เจคเฉ‡ QEMU เจธเจฎเฉเฉฑเจšเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ GPLv2 เจฆเฉ‡ เจ…เจงเฉ€เจจ เจตเฉฐเจกเจฟเจ† เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เจน เจฌเจนเฉเจค เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเจจเฅค เจ…เจšเจพเจจเจ• เจ‡เจน เจ‡เฉฑเจ• เจฒเจพเจ‡เจธเฉฐเจธ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฌเจพเจนเจฐ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ เจ‡เจธ เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ เฉ€เจ• เจ•เจฐเฉ‹ (เจฎเฉˆเจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚ เจชเจคเจพ: เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ เจ‡เจธเจจเฉ‚เฉฐ เจฌเจฆเจฒเฉ‹, เจธเจผเจพเจ‡เจฆ เจฆเฉ‹เจนเจฐเจพ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ, เจธเจผเจพเจ‡เจฆ เจ•เฉเจ เจนเฉ‹เจฐ...) เจ‡เจธ เจจเฉ‡, เจฌเฉ‡เจธเจผเฉฑเจ•, เจฎเฉˆเจจเฉ‚เฉฐ เจ–เฉเจธเจผเฉ€ เจฆเจฟเฉฑเจคเฉ€, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ‰เจธ เจธเจฎเฉ‡เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจจเฉ‡เฉœเจฟเจ“เจ‚ เจฆเฉ‡เจ–เจฟเจ† เจธเฉ€ เจฌเจพเจˆเจจเจฐเฉ€ เจซเจพเจฐเจฎเฉˆเจŸ WebAssembly, เจ…เจคเฉ‡ เจฎเฉˆเจ‚ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจ‰เจฆเจพเจธ เจ…เจคเฉ‡ เจธเจฎเจ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจธเฉ€เฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจตเฉ€ เจธเฉ€ เจœเฉ‹ เจชเจฐเจฟเจตเจฐเจคเจจ เจ—เฉเจฐเจพเจซ เจฆเฉ‡ เจจเจพเจฒ เจฌเฉเจจเจฟเจ†เจฆเฉ€ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจ–เจพ เจœเจพเจ‚เจฆเฉ€ เจธเฉ€, เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจคเจฟเจ†เจฐ เจ•เจฐเจฆเฉ€ เจธเฉ€, เจ…เจคเฉ‡ เจฒเฉ‹เฉœ เจชเฉˆเจฃ 'เจคเฉ‡ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจตเจฟเฉฑเจš เจตเฉ€ เจšเจฒเจพเจ‰เจ‚เจฆเฉ€ เจธเฉ€เฅค

เจซเจฟเจฐ เจนเฉ‹เจฐ เจธเฉ€ เจ‡เจ• เจšเจฟเฉฑเจ เฉ€ QEMU เจฎเฉ‡เจฒเจฟเฉฐเจ— เจฒเจฟเจธเจŸ 'เจคเฉ‡, เจชเจฐ เจ‡เจน เจ‡เจธ เจธเจตเจพเจฒ เจฌเจพเจฐเฉ‡ เจตเจงเฉ‡เจฐเฉ‡ เจนเฉˆ, "เจ•เจฟเจธเฉ‡ เจตเฉ€ เจ‡เจธเจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ?" เจ…เจคเฉ‡ เจ‡เจน เจนเฉˆ เจ…เจšเจพเจจเจ•, เจ‡เจน เจœเจผเจฐเฉ‚เจฐเฉ€ เจธเฉ€ เจฌเจพเจนเจฐ เจฌเจฆเจฒ เจฆเจฟเฉฑเจคเจพ. เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ, เจคเฉเจธเฉ€เจ‚ เจตเจฐเจคเฉ‹เจ‚ เจฆเฉ€เจ†เจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€เจ†เจ‚ เจธเฉฐเจญเจพเจตเจจเจพเจตเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจ•เฉฑเจ เจพ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเฉ‡เจ•เจฐ เจ‡เจน เจ˜เฉฑเจŸ เจœเจพเจ‚ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ:

  • เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจ‡เฉฐเจธเจŸเจพเจฒเฉ‡เจธเจผเจจ เจฆเฉ‡ เจ•เฉเจ เจตเจฟเจฆเจฟเจ…เจ• เจฒเจพเจ‚เจš เจ•เจฐเจจเจพ
  • เจ†เจˆเจ“เจเจธ 'เจคเฉ‡ เจตเจฐเจšเฉเจ…เจฒเจพเจˆเจœเฉ‡เจธเจผเจจ, เจœเจฟเฉฑเจฅเฉ‡, เจ…เจซเจตเจพเจนเจพเจ‚ เจฆเฉ‡ เจ…เจจเฉเจธเจพเจฐ, เจ‡เจ•เฉ‹ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจœเจฟเจธ เจ•เฉ‹เจฒ เจซเจฒเจพเจˆ 'เจคเฉ‡ เจ•เฉ‹เจก เจฌเจฃเจพเจ‰เจฃ เจฆเจพ เจ…เจงเจฟเจ•เจพเจฐ เจนเฉˆ, เจ‡เฉฑเจ• เจœเฉ‡เจเจธ เจ‡เฉฐเจœเจฃ เจนเฉˆ (เจ•เฉ€ เจ‡เจน เจธเฉฑเจš เจนเฉˆ?)
  • เจฎเจฟเฉฐเจจเฉ€-เจ“เจเจธ เจฆเจพ เจชเฉเจฐเจฆเจฐเจธเจผเจจ - เจธเจฟเฉฐเจ—เจฒ-เจซเจฒเจพเจชเฉ€, เจฌเจฟเจฒเจŸ-เจ‡เจจ, เจนเจฐ เจ•เจฟเจธเจฎ เจฆเฉ‡ เจซเจฐเจฎเจตเฉ‡เจ…เจฐ, เจ†เจฆเจฟ...

เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฐเจจเจŸเจพเจˆเจฎ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจฟเจนเจพ เจนเฉˆ, QEMU เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจจเจพเจฒ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ, เจชเจฐ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจ•เฉ‹เจฒ เจ‡เจน เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ–เฉˆเจฐ, เจ‡เจน เจนเฉˆ, เจจเจนเฉ€เจ‚... เจชเจนเจฟเจฒเจพเจ‚ เจคเจพเจ‚ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจฎเฉŒเจœเฉ‚เจฆ เจจเจนเฉ€เจ‚ เจธเฉ€, เจซเจฟเจฐ เจตเฉˆเจฌเจตเจฐเจ•เจฐ เจฆเจฟเจ–เจพเจˆ เจฆเจฟเฉฑเจคเฉ‡ - เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจธเจฎเจเจฆเจพ เจนเจพเจ‚, เจ‡เจน เจธเฉฐเจฆเฉ‡เจธเจผ เจชเจพเจธ เจ•เจฐเจจ 'เจคเฉ‡ เจ…เจงเจพเจฐเจค เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจนเฉˆ เจธเจพเจ‚เจเฉ‡ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚. เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, เจธเจพเจ‚เจเฉ‡ เจ•เฉ€เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฎเจพเจกเจฒ เจฆเฉ‡ เจ…เจงเจพเจฐ 'เจคเฉ‡ เจฎเฉŒเจœเฉ‚เจฆเจพ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจ เจตเฉ‡เจฒเฉ‡ เจ‡เจน เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจฃ เจธเจฎเฉฑเจธเจฟเจ†เจตเจพเจ‚ เจชเฉˆเจฆเจพ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจซเจฟเจฐ เจœเจจเจคเจ• เจฆเจฌเจพเจ… เจนเฉ‡เจ  เจ‡เจธ เจจเฉ‚เฉฐ เจจเจพเจฎ เจนเฉ‡เจ  เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† SharedArrayBuffers. เจ‡เจน เจนเฉŒเจฒเฉ€-เจนเฉŒเจฒเฉ€ เจชเฉ‡เจธเจผ เจ•เฉ€เจคเจพ เจ—เจฟเจ†, เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจตเฉฑเจ–-เจตเฉฑเจ– เจฌเฉเจฐเจพเจ‰เจœเจผเจฐเจพเจ‚ เจตเจฟเฉฑเจš เจ‡เจธเจฆเฉ€ เจธเจผเฉเจฐเฉ‚เจ†เจค เจฆเจพ เจœเจธเจผเจจ เจฎเจจเจพเจ‡เจ†, เจซเจฟเจฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจจเจตเฉ‡เจ‚ เจธเจพเจฒ เจฆเจพ เจœเจธเจผเจจ เจฎเจจเจพเจ‡เจ†, เจ…เจคเฉ‡ เจซเจฟเจฐ เจฎเฉˆเจฒเจกเจพเจŠเจจ... เจœเจฟเจธ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ เจ‰เจน เจ‡เจธ เจธเจฟเฉฑเจŸเฉ‡ 'เจคเฉ‡ เจชเจนเฉเฉฐเจšเฉ‡ เจ•เจฟ เจธเจฎเฉ‡เจ‚ เจฆเฉ‡ เจฎเจพเจช เจจเฉ‚เฉฐ เจฎเฉ‹เจŸเจพ เจœเจพเจ‚ เจฎเฉ‹เจŸเจพ, เจชเจฐ เจธเจผเฉ‡เจ…เจฐเจก เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจฆเฉ€ เจฎเจฆเจฆ เจจเจพเจฒ. เจ•เจพเจŠเจ‚เจŸเจฐ เจจเฉ‚เฉฐ เจตเจงเจพเจ‰เจฃ เจตเจพเจฒเจพ เจฅเจฐเจฟเฉฑเจก, เจ‡เจน เจธเจญ เจ‡เฉฑเจ•เฉ‹ เจœเจฟเจนเจพ เจนเฉˆ เจ‡เจน เจฌเจฟเจฒเจ•เฉเจฒ เจธเจนเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจ•เฉฐเจฎ เจ•เจฐเฉ‡เจ—เจพ. เจ‡เจธ เจฒเจˆ เจ…เจธเฉ€เจ‚ เจธเจผเฉ‡เจ…เจฐเจก เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเจพเจฒ เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— เจจเฉ‚เฉฐ เจ…เจธเจฎเจฐเฉฑเจฅ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจนเฉˆเฅค เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจ‡เจธเจจเฉ‚เฉฐ เจตเจพเจชเจธ เจ•เจฐ เจฆเจฟเฉฑเจคเจพ, เจชเจฐ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‡เจน เจชเจนเจฟเจฒเฉ‡ เจชเฉเจฐเจฏเฉ‹เจ— เจคเฉ‹เจ‚ เจธเจชเฉฑเจธเจผเจŸ เจนเฉ‹ เจ—เจฟเจ† เจนเฉˆ, เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจœเฉ€เจตเจจ เจนเฉˆ, เจ…เจคเฉ‡ เจœเฉ‡เจ•เจฐ เจ…เจœเจฟเจนเจพ เจนเฉˆ, เจคเจพเจ‚ เจ…เจธเฉ€เจ‚ เจฎเจฒเจŸเฉ€เจฅเฉเจฐเฉˆเจกเจฟเฉฐเจ— 'เจคเฉ‡ เจญเจฐเฉ‹เจธเจพ เจ•เฉ€เจคเฉ‡ เจฌเจฟเจจเจพเจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจ•เจฐเจจ เจฆเฉ€ เจ•เฉ‹เจธเจผเจฟเจธเจผ เจ•เจฐเจพเจ‚เจ—เฉ‡เฅค

เจฆเฉ‚เจœเฉ€ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจธเจŸเฉˆเจ• เจฆเฉ‡ เจจเจพเจฒ เจนเฉ‡เจ เจฒเฉ‡-เจชเฉฑเจงเจฐ เจฆเฉ€ เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจฆเฉ€ เจ…เจธเฉฐเจญเจตเจคเจพ เจนเฉˆ: เจคเฉเจธเฉ€เจ‚ เจฌเจธ เจจเจนเฉ€เจ‚ เจฒเฉˆ เจธเจ•เจฆเฉ‡, เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเฉฐเจฆเจฐเจญ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ เจธเจŸเฉˆเจ• เจจเจพเจฒ เจ‡เฉฑเจ• เจจเจตเฉ‡เจ‚ 'เจคเฉ‡ เจธเจตเจฟเจš เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค เจ•เจพเจฒ เจธเจŸเฉˆเจ• เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ JS เจตเจฐเจšเฉเจ…เจฒ เจฎเจธเจผเฉ€เจจ เจฆเฉเจ†เจฐเจพ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค เจ‡เจน เจœเจพเจชเจฆเจพ เจนเฉˆ, เจธเจฎเฉฑเจธเจฟเจ† เจ•เฉ€ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจธเฉ€เจ‚ เจ…เจœเฉ‡ เจตเฉ€ เจชเฉเจฐเจพเจฃเฉ‡ เจตเจนเจพเจ… เจจเฉ‚เฉฐ เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจนเฉฑเจฅเฉ€เจ‚ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เจฐเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆ? เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ QEMU เจตเจฟเฉฑเจš เจฌเจฒเจพเจ• I/O เจจเฉ‚เฉฐ เจ•เฉ‹เจฐเจ‰เจŸเจพเจˆเจจ เจฆเฉเจ†เจฐเจพ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เจน เจ‰เจน เจฅเจพเจ‚ เจนเฉˆ เจœเจฟเฉฑเจฅเฉ‡ เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐเฉ€ เจธเจŸเฉˆเจ• เจนเฉ‡เจฐเจพเจซเฉ‡เจฐเฉ€ เจ•เฉฐเจฎ เจตเจฟเฉฑเจš เจ†เจตเฉ‡เจ—เฉ€เฅค เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, Emscipten เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ‡เฉฑเจ• เจตเจฟเจงเฉ€ เจนเฉˆ, เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจฆเฉ‹: เจ…เจธเจฟเฉฐเจธเฉ€เจซเจพเจˆ ะธ เจเจ‚เจŸเจฐเจชเฉเจฐเฉ‡เจŸเจฐ. เจชเจนเจฟเจฒเจพ เจ‡เฉฑเจ• เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ JavaScript เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฌเจฒเฉ‹เจŸ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจนเฉเจฃ เจธเจฎเจฐเจฅเจฟเจค เจจเจนเฉ€เจ‚ เจนเฉˆเฅค เจฆเฉ‚เจœเจพ เจฎเฉŒเจœเฉ‚เจฆเจพ "เจธเจนเฉ€ เจคเจฐเฉ€เจ•เจพ" เจนเฉˆ เจ…เจคเฉ‡ เจฎเฉ‚เจฒ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจฒเจˆ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ‡เจน, เจฌเฉ‡เจธเจผเจ•, เจนเฉŒเจฒเฉ€ เจนเฉŒเจฒเฉ€ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ‡เจน เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจซเฉเฉฑเจฒเจฆเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ. เจ‡เจน เจธเฉฑเจš เจนเฉˆ เจ•เจฟ, เจ‡เจธ เจตเจฟเจงเฉ€ เจฒเจˆ เจ•เฉ‹เจฐเจ‰เจŸเฉ€เจจ เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจธเฉเจคเฉฐเจคเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจฏเฉ‹เจ—เจฆเจพเจจ เจชเจพเจ‰เจฃเจพ เจชเฉˆเจ‚เจฆเจพ เจธเฉ€ (เจ‡เฉฑเจฅเฉ‡ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เจธเจฟเฉฐเจธเฉ€เจซเจพเจˆ เจฒเจˆ เจ•เฉ‹เจฐเฉ‹เจŸเฉ€เจจ เจฒเจฟเจ–เฉ€เจ†เจ‚ เจ—เจˆเจ†เจ‚ เจธเจจ เจ…เจคเฉ‡ เจเจฎเจŸเจฐเจชเฉเจฐเฉ€เจŸเจฐ เจฒเจˆ เจฒเจ—เจญเจ— เจ‡เฉฑเจ•เฉ‹ API เจจเฉ‚เฉฐ เจฒเจพเจ—เฉ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ•เจจเฉˆเจ•เจŸ เจ•เจฐเจจ เจฆเฉ€ เจฒเฉ‹เฉœ เจธเฉ€)เฅค

เจ‡เจธ เจธเจฎเฉ‡เจ‚, เจฎเฉˆเจ‚ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เฉ‹เจก เจจเฉ‚เฉฐ WASM เจตเจฟเฉฑเจš เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ‡ เจ‡เฉฑเจ• เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจง เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจนเฉˆ เจ…เจคเฉ‡ Emterpreter เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจตเจฟเจ†เจ–เจฟเจ† เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจฌเจฒเจพเจ• เจกเจฟเจตเจพเจˆเจธ เจ…เจœเฉ‡ เจคเฉฑเจ• เจ•เฉฐเจฎ เจจเจนเฉ€เจ‚ เจ•เจฐเจฆเฉ‡ (เจ…เจ—เจฒเฉ€ เจฒเฉœเฉ€ เจตเจฟเฉฑเจš เจตเฉ‡เจ–เฉ‹, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจ‰เจน เจ•เจนเจฟเฉฐเจฆเฉ‡ เจนเจจ ...). เจญเจพเจต, เจ…เฉฐเจค เจตเจฟเฉฑเจš เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธ เจฎเจœเจผเจพเจ•เฉ€เจ† เจชเจฐเจค เจตเจพเจฒเฉ€ เจšเฉ€เจœเจผ เจตเจฐเจ—เจพ เจ•เฉเจ เจชเฉเจฐเจพเจชเจค เจ•เจฐเจจเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ:

  • เจตเจฟเจ†เจ–เจฟเจ† เจ•เฉ€เจคเฉ€ เจฌเจฒเจพเจ• I/O. เจ–เฉˆเจฐ, เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจ…เจธเจฒ เจตเจฟเฉฑเจš เจจเฉ‡เจŸเจฟเจต เจชเฉเจฐเจฆเจฐเจธเจผเจจ เจฆเฉ‡ เจจเจพเจฒ เจจเจ•เจฒ เจ•เฉ€เจคเฉ‡ NVMe เจฆเฉ€ เจ‰เจฎเฉ€เจฆ เจ•เฉ€เจคเฉ€ เจธเฉ€? ๐Ÿ™‚
  • เจธเจฅเจฟเจฐ เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ เจฎเฉเฉฑเจ– QEMU เจ•เฉ‹เจก (เจ…เจจเฉเจตเจพเจฆเจ•, เจนเฉ‹เจฐ เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฟเจก เจกเจฟเจตเจพเจˆเจธเจพเจ‚, เจ†เจฆเจฟ)
  • เจ—เจคเฉ€เจธเจผเฉ€เจฒ เจคเฉŒเจฐ 'เจคเฉ‡ WASM เจตเจฟเฉฑเจš เจ—เจฟเจธเจŸ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเจพ

QEMU เจธเจฐเฉ‹เจคเจพเจ‚ เจฆเฉ€เจ†เจ‚ เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพเจตเจพเจ‚

เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจธเจผเจพเจ‡เจฆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจฒเจฟเจ† เจนเฉˆ, เจ—เฉˆเจธเจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจก เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ เจฎเจธเจผเฉ€เจจ เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจคเจฟเจ†เจฐ เจ•เจฐเจจ เจฒเจˆ เจ•เฉ‹เจก QEMU เจตเจฟเฉฑเจš เจตเฉฑเจ– เจ•เฉ€เจคเฉ‡ เจ—เจ เจนเจจเฅค เจตเจพเจธเจคเจต เจตเจฟเฉฑเจš, เจ‡เจน เจฅเฉ‹เฉœเจพ เจœเจฟเจนเจพ เจ—เฉเฉฐเจเจฒเจฆเจพเจฐ เจตเฉ€ เจนเฉˆ:

  • เจ—เฉˆเจธเจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจนเจจ
  • เจนเฉˆ เจเจ•เจธเจฒเฉ‡เจŸเจฐ, เจ…เจฐเจฅเจพเจค, เจฒเฉ€เจจเจ•เจธ เจ‰เฉฑเจคเฉ‡ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจตเจฐเจšเฉเจ…เจฒเจพเจˆเจœเฉ‡เจธเจผเจจ เจฒเจˆ KVM (เจ‡เฉฑเจ• เจฆเฉ‚เจœเฉ‡ เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒ เจ—เฉˆเจธเจŸ เจ…เจคเฉ‡ เจนเฉ‹เจธเจŸ เจธเจฟเจธเจŸเจฎเจพเจ‚ เจฒเจˆ), เจ•เจฟเจคเฉ‡ เจตเฉ€ JIT เจ•เฉ‹เจก เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ TCGเฅค QEMU 2.9 เจจเจพเจฒ เจธเจผเฉเจฐเฉ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจตเจฟเฉฐเจกเฉ‹เจœเจผ เจ‰เฉฑเจคเฉ‡ HAXM เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจตเจฐเจšเฉเจ…เจฒเจพเจˆเจœเฉ‡เจธเจผเจจ เจธเจŸเฉˆเจ‚เจกเจฐเจก เจฒเจˆ เจธเจฎเจฐเจฅเจจ เจชเฉเจฐเจ—เจŸ เจนเฉ‹เจ‡เจ† (เจตเฉ‡เจฐเจตเฉ‡)
  • เจœเฉ‡เจ•เจฐ TCG เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจจเจพ เจ•เจฟ เจนเจพเจฐเจกเจตเฉ‡เจ…เจฐ เจตเจฐเจšเฉเจ…เจฒเจพเจˆเจœเฉ‡เจธเจผเจจ, เจคเจพเจ‚ เจ‡เจธ เจตเจฟเฉฑเจš เจนเจฐเฉ‡เจ• เจนเฉ‹เจธเจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ เจฆเฉ‡ เจจเจพเจฒ-เจจเจพเจฒ เจฏเฉ‚เจจเฉ€เจตเจฐเจธเจฒ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจฒเจˆ เจตเฉฑเจ–เจฐเจพ เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจธเจผเจจ เจธเจฎเจฐเจฅเจจ เจนเฉˆเฅค
  • ... เจ…เจคเฉ‡ เจ‡เจธ เจธเจญ เจฆเฉ‡ เจ†เจฒเฉ‡-เจฆเฉเจ†เจฒเฉ‡ - เจ‡เจฎเฉ‚เจฒเฉ‡เจŸเจฟเจก เจชเฉˆเจฐเฉ€เจซเจฟเจฐเจฒ, เจฏเฉ‚เจœเจผเจฐ เจ‡เฉฐเจŸเจฐเจซเฉ‡เจธ, เจฎเจพเจˆเจ—เฉเจฐเฉ‡เจธเจผเจจ, เจฐเจฟเจ•เจพเจฐเจก-เจฐเฉ€เจชเจฒเฉ‡เจ…, เจ†เจฆเจฟเฅค

เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, เจ•เฉ€ เจคเฉเจธเฉ€เจ‚ เจœเจพเจฃเจฆเฉ‡ เจนเฉ‹: QEMU เจจเจพ เจธเจฟเจฐเจซเจผ เจชเฉ‚เจฐเฉ‡ เจ•เฉฐเจชเจฟเจŠเจŸเจฐ เจฆเฉ€ เจจเจ•เจฒ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจธเจ—เฉ‹เจ‚ เจนเฉ‹เจธเจŸ เจ•เจฐเจจเจฒ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจตเฉฑเจ–เจฐเฉ€ เจ‰เจชเจญเฉ‹เจ—เจคเจพ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจฒเจˆ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจตเฉ€ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจธเจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ, เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจฌเจพเจˆเจจเจฐเฉ€ เจ‡เฉฐเจธเจŸเจฐเฉ‚เจฎเฉˆเจ‚เจŸเฉ‡เจธเจผเจจ เจฒเจˆ AFL เจซเจœเจผเจฐ เจฆเฉเจ†เจฐเจพเฅค เจธเจผเจพเจ‡เจฆ เจ•เฉ‹เจˆ JS เจจเฉ‚เฉฐ QEMU เจฆเฉ‡ เจธเฉฐเจšเจพเจฒเจจ เจฆเฉ‡ เจ‡เจธ เจฎเฉ‹เจก เจจเฉ‚เฉฐ เจชเฉ‹เจฐเจŸ เจ•เจฐเจจเจพ เจšเจพเจนเฉ‡เจ—เจพ? ๐Ÿ˜‰

เจœเจผเจฟเจ†เจฆเจพเจคเจฐ เจฒเฉฐเจฌเฉ‡ เจธเจฎเฉ‡เจ‚ เจคเฉ‹เจ‚ เจšเฉฑเจฒ เจฐเจนเฉ‡ เจฎเฉเจซเจค เจธเฉŒเจซเจŸเจตเฉ‡เจ…เจฐ เจฆเฉ€ เจคเจฐเฉเจนเจพเจ‚, QEMU เจ•เจพเจฒ เจฆเฉเจ†เจฐเจพ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจนเฉˆ configure ะธ make. เจฎเฉฐเจจ เจฒเจ“ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ•เฉเจ เจœเฉ‹เฉœเจจ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹: เจ‡เฉฑเจ• TCG เจฌเฉˆเจ•เจเจ‚เจก, เจฅเฉเจฐเฉˆเจก เจฒเจพเจ—เฉ‚ เจ•เจฐเจจเจพ, เจ•เฉเจ เจนเฉ‹เจฐเฅค Autoconf เจจเจพเจฒ เจธเฉฐเจšเจพเจฐ เจ•เจฐเจจ เจฆเฉ€ เจธเฉฐเจญเจพเจตเจจเจพ 'เจคเฉ‡ เจ–เฉเจธเจผ/เจกเจฐเจพเจ‰เจฃ (เจ‰เจšเจฟเจค เจคเฉŒเจฐ 'เจคเฉ‡ เจฐเฉ‡เจ–เจพเจ‚เจ•เจฟเจค) เจนเฉ‹เจฃ เจฆเฉ€ เจ•เจพเจนเจฒเฉ€ เจจเจพ เจ•เจฐเฉ‹ - เจ…เจธเจฒ เจตเจฟเฉฑเจš, configure QEMU's เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡ เจธเจตเฉˆ-เจฒเจฟเจ–เจค เจนเฉˆ เจ…เจคเฉ‡ เจ•เจฟเจธเฉ‡ เจตเฉ€ เจšเฉ€เจœเจผ เจคเฉ‹เจ‚ เจคเจฟเจ†เจฐ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค

เจตเฉˆเฉฑเจฌเจ…เจธเฉˆเจชเจฒเฉ‡เจธ

เจคเจพเจ‚ เจ‡เจธ เจšเฉ€เจœเจผ เจจเฉ‚เฉฐ เจ•เฉ€ เจ•เจฟเจนเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ WebAssembly (เจ‰เจฐเจซเจผ WASM)? เจ‡เจน Asm.js เจฆเจพ เจฌเจฆเจฒ เจนเฉˆ, เจนเฉเจฃ เจตเฉˆเจง JavaScript เจ•เฉ‹เจก เจนเฉ‹เจฃ เจฆเจพ เจขเฉŒเจ‚เจ— เจจเจนเฉ€เจ‚ เจ•เจฐ เจฐเจฟเจนเจพเฅค เจ‡เจธเจฆเฉ‡ เจ‰เจฒเจŸ, เจ‡เจน เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจฌเจพเจˆเจจเจฐเฉ€ เจ…เจคเฉ‡ เจ…เจจเฉเจ•เฉ‚เจฒเจฟเจค เจนเฉˆ, เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ เจ‡เจธ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจฒเจฟเจ–เจฃเจพ เจตเฉ€ เจฌเจนเฉเจค เจธเฉŒเจ–เจพ เจจเจนเฉ€เจ‚ เจนเฉˆ: เจธเฉฐเจ–เฉ‡เจชเจคเจพ เจฒเจˆ, เจ‡เจน เจซเจพเจฐเจฎเฉˆเจŸ เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ LEB128.

เจคเฉเจธเฉ€เจ‚ Asm.js เจฒเจˆ เจฐเฉ€เจฒเฉ‚เจชเจฟเฉฐเจ— เจเจฒเจ—เฉ‹เจฐเจฟเจฆเจฎ เจฌเจพเจฐเฉ‡ เจธเฉเจฃเจฟเจ† เจนเฉ‹เจตเฉ‡เจ—เจพ - เจ‡เจน "เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€" เจชเฉเจฐเจตเจพเจน เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจฌเจนเจพเจฒเฉ€ เจนเฉˆ (เจœเฉ‹ เจ•เจฟ, เจœเฉ‡-เจคเจพเจ‚-เจนเฉ‹เจฐ, เจฒเฉ‚เจชเจธ, เจ†เจฆเจฟ), เจœเจฟเจธ เจฒเจˆ JS เจ‡เฉฐเจœเจฃเจพเจ‚ เจจเฉ‚เฉฐ เจกเจฟเจœเจผเจพเจˆเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆ, เจคเฉ‹เจ‚ เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐเฉ€ LLVM IR, เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฐ เจฆเฉเจ†เจฐเจพ เจšเจฒเจพเจ เจ—เจ เจฎเจธเจผเฉ€เจจ เจ•เฉ‹เจก เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡เฅค เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡, QEMU เจฆเฉ€ เจตเจฟเจšเจ•เจพเจฐเจฒเฉ€ เจจเฉเจฎเจพเจ‡เฉฐเจฆเจ—เฉ€ เจฆเฉ‚เจœเฉ‡ เจฆเฉ‡ เจจเฉ‡เฉœเฉ‡ เจนเฉˆ. เจ…เจœเจฟเจนเจพ เจฒเจ—เจฆเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจ‡เฉฑเจฅเฉ‡ เจนเฉˆ, เจฌเจพเจˆเจŸเจ•เฉ‹เจก, เจคเจธเฉ€เจนเฉ‡ เจฆเจพ เจ…เฉฐเจค... เจ…เจคเฉ‡ เจซเจฟเจฐ เจ‡เฉฑเจฅเฉ‡ เจฌเจฒเจพเจ• เจนเจจ, เจœเฉ‡-เจคเจพเจ‚-เจนเฉ‹เจฐ เจ…เจคเฉ‡ เจฒเฉ‚เจชเจธ!..

เจ…เจคเฉ‡ เจ‡เจน เจ‡เจ• เจนเฉ‹เจฐ เจ•เจพเจฐเจจ เจนเฉˆ เจ•เจฟ เจฌเจพเจ‡เจจเฉ‡เจฐเฉ€เจ…เจจ เจฒเจพเจญเจฆเจพเจ‡เจ• เจนเฉˆ: เจ‡เจน เจ•เฉเจฆเจฐเจคเฉ€ เจคเฉŒเจฐ 'เจคเฉ‡ WASM เจตเจฟเฉฑเจš เจธเจŸเฉ‹เจฐ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃ เจตเจพเจฒเฉ‡ เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจธเจตเฉ€เจ•เจพเจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจชเจฐ เจ‡เจน เจฎเฉ‚เจฒ เจฌเจฒเจพเจ•เจพเจ‚ เจฆเฉ‡ เจ—เฉเจฐเจพเจซ เจ…เจคเฉ‡ เจ‰เจนเจจเจพเจ‚ เจตเจฟเจšเจ•เจพเจฐ เจคเจฌเจฆเฉ€เจฒเฉ€เจ†เจ‚ เจคเฉ‹เจ‚ เจ•เฉ‹เจก เจตเฉ€ เจชเฉˆเจฆเจพ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค เจ–เฉˆเจฐ, เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจฟเจนเจพ เจนเฉˆ เจ•เจฟ เจ‡เจน เจธเฉเจตเจฟเจงเจพเจœเจจเจ• C/C++ API เจฆเฉ‡ เจชเจฟเฉฑเจ›เฉ‡ WebAssembly เจธเจŸเฉ‹เจฐเฉ‡เจœ เจซเจพเจฐเจฎเฉˆเจŸ เจจเฉ‚เฉฐ เจฒเฉเจ•เจพเจ‰เจ‚เจฆเจพ เจนเฉˆเฅค

TCG (เจ›เฉ‹เจŸเฉ‡ เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจŸเจฐ)

เจŸเฉ€.เจธเฉ€.เจœเฉ€. เจ…เจธเจฒ เจตเจฟเฉฑเจš เจธเฉ€ C เจ•เฉฐเจชเจพเจˆเจฒเจฐ เจฒเจˆ เจฌเฉˆเจ•เจเจ‚เจกเฅค เจซเจฟเจฐ เจ‡เจน, เจœเจผเจพเจนเจฐ เจคเฉŒเจฐ 'เจคเฉ‡, GCC เจจเจพเจฒ เจฎเฉเจ•เจพเจฌเจฒเฉ‡ เจฆเจพ เจธเจพเจฎเฉเจนเจฃเจพ เจจเจนเฉ€เจ‚ เจ•เจฐ เจธเจ•เจฟเจ†, เจชเจฐ เจ†เจ–เจฐเจ•เจพเจฐ เจฎเฉ‡เจœเจผเจฌเจพเจจ เจชเจฒเฉ‡เจŸเจซเจพเจฐเจฎ เจฒเจˆ เจ•เฉ‹เจก เจœเจจเจฐเฉ‡เจธเจผเจจ เจตเจฟเจงเฉ€ เจตเจœเฉ‹เจ‚ QEMU เจตเจฟเฉฑเจš เจ†เจชเจฃเฉ€ เจœเจ—เฉเจนเจพ เจฒเฉฑเจญเฉ€เฅค เจ‡เฉฑเจฅเฉ‡ เจ‡เฉฑเจ• TCG เจฌเฉˆเจ•เจเจ‚เจก เจตเฉ€ เจนเฉˆ เจœเฉ‹ เจ•เฉเจ เจเจฌเจธเจŸเฉเจฐเฉˆเจ•เจŸ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจคเจฟเจ†เจฐ เจ•เจฐเจฆเจพ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจฆเฉเจ†เจฐเจพ เจคเฉเจฐเฉฐเจค เจšเจฒเจพเจ‡เจ† เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจชเจฐ เจฎเฉˆเจ‚ เจ‡เจธ เจตเจพเจฐ เจ‡เจธเจจเฉ‚เฉฐ เจตเจฐเจคเจฃ เจคเฉ‹เจ‚ เจฌเจšเจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ เจนเฉˆเฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจ‡เจน เจคเฉฑเจฅ เจ•เจฟ QEMU เจตเจฟเฉฑเจš เจซเฉฐเจ•เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจคเจฟเจ†เจฐ เจŸเฉ€เจฌเฉ€ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒเฉ€ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจ•เจฐเจจเจพ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจธเฉฐเจญเจต เจนเฉˆ tcg_qemu_tb_exec, เจ‡เจน เจฎเฉ‡เจฐเฉ‡ เจฒเจˆ เจฌเจนเฉเจค เจฒเจพเจญเจฆเจพเจ‡เจ• เจธเจพเจฌเจค เจนเฉ‹เจ‡เจ†เฅค

QEMU เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจจเจตเจพเจ‚ TCG เจฌเฉˆเจ•เจเจ‚เจก เจœเฉ‹เฉœเจจ เจฒเจˆ, เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจฌ-เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€ เจฌเจฃเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆ tcg/<ะธะผั ะฐั€ั…ะธั‚ะตะบั‚ัƒั€ั‹> (เจ‡เจธ เจฎเจพเจฎเจฒเฉ‡ เจตเจฟเฉฑเจš, tcg/binaryen), เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจฆเฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจนเจจ: tcg-target.h ะธ tcg-target.inc.c ะธ เจฐเจœเจฟเจธเจŸเจฐ เจ‡เจน เจธเจญ เจ‡เจธ เจฌเจพเจฐเฉ‡ เจนเฉˆ configure. เจคเฉเจธเฉ€เจ‚ เจ‰เฉฑเจฅเฉ‡ เจนเฉ‹เจฐ เจซเจพเจˆเจฒเจพเจ‚ เจฐเฉฑเจ– เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจชเจฐ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจคเฉเจธเฉ€เจ‚ เจ‡เจนเจจเจพเจ‚ เจฆเฉ‹เจตเจพเจ‚ เจฆเฉ‡ เจจเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‰เจน เจฆเฉ‹เจตเฉ‡เจ‚ เจ•เจฟเจคเฉ‡ เจธเจผเจพเจฎเจฒ เจ•เฉ€เจคเฉ‡ เจœเจพเจฃเจ—เฉ‡: เจ‡เฉฑเจ• เจจเจฟเจฏเจฎเจค เจธเจฟเจฐเจฒเฉ‡เจ– เจซเจพเจˆเจฒ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš (เจ‡เจธ เจตเจฟเฉฑเจš เจธเจผเจพเจฎเจฒ เจนเฉˆ tcg/tcg.h, เจ…เจคเฉ‡ เจ‡เจน เจกเจพเจ‡เจฐเฉˆเจ•เจŸเจฐเฉ€เจ†เจ‚ เจตเจฟเฉฑเจš เจชเจนเจฟเจฒเจพเจ‚ เจคเฉ‹เจ‚ เจนเฉ€ เจนเฉ‹เจฐ เจซเจพเจˆเจฒเจพเจ‚ เจตเจฟเฉฑเจš เจนเฉˆ tcg, accel เจ…เจคเฉ‡ เจจเจพ เจธเจฟเจฐเจซเจผ), เจฆเฉ‚เจœเจพ - เจธเจฟเจฐเจซเจผ เจ‡เฉฑเจ• เจ•เฉ‹เจก เจธเจจเจฟเฉฑเจชเจŸ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš tcg/tcg.c, เจชเจฐ เจ‡เจธเจฆเฉ€ เจ‡เจธเจฆเฉ‡ เจธเจฅเจฟเจฐ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจนเฉˆเฅค

เจ‡เจน เจซเฉˆเจธเจฒเจพ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ เจ•เจฟ เจฎเฉˆเจ‚ เจตเจฟเจธเจคเฉเจฐเจฟเจค เจœเจพเจ‚เจšเจพเจ‚ 'เจคเฉ‡ เจฌเจนเฉเจค เจœเจผเจฟเจ†เจฆเจพ เจธเจฎเจพเจ‚ เจฌเจฟเจคเจพเจตเจพเจ‚เจ—เจพ เจ•เจฟ เจ‡เจน เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจฎเฉˆเจ‚ เจธเจฟเจฐเจซเจผ เจ‡เจนเจจเจพเจ‚ เจฆเฉ‹ เจซเจพเจˆเจฒเจพเจ‚ เจฆเฉ‡ "เจชเจฟเฉฐเจœเจฐ" เจจเฉ‚เฉฐ เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฌเฉˆเจ•เจเจ‚เจก เจฒเจพเจ—เฉ‚เจ•เจฐเจจ เจคเฉ‹เจ‚ เจ•เจพเจชเฉ€ เจ•เฉ€เจคเจพ, เจ‡เจฎเจพเจจเจฆเจพเจฐเฉ€ เจจเจพเจฒ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจธเจฟเจฐเจฒเฉ‡เจ– เจตเจฟเฉฑเจš เจ‡เจธ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจ‚เจฆเจพ เจนเฉˆ.

เจซเจพเจ‡เจฒ tcg-target.h เจซเจพเจฐเจฎ เจตเจฟเฉฑเจš เจฎเฉเฉฑเจ– เจคเฉŒเจฐ 'เจคเฉ‡ เจธเฉˆเจŸเจฟเฉฐเจ—เจพเจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ #define-s:

  • เจŸเจพเจฐเจ—เฉ‡เจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ 'เจคเฉ‡ เจ•เจฟเฉฐเจจเฉ‡ เจฐเจœเจฟเจธเจŸเจฐ เจนเจจ เจ…เจคเฉ‡ เจ•เจฟเฉฐเจจเฉ€ เจšเฉŒเฉœเจพเจˆ เจนเฉˆ (เจธเจพเจกเฉ‡ เจ•เฉ‹เจฒ เจœเจฟเฉฐเจจเฉ‡ เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚, เจœเจฟเฉฐเจจเฉ‡ เจ…เจธเฉ€เจ‚ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเจพเจ‚ - เจธเจตเจพเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ "เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจจเจฟเจธเจผเจพเจจเจพ" เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ 'เจคเฉ‡ เจฌเฉเจฐเจพเจŠเจœเจผเจฐ เจฆเฉเจ†เจฐเจพ เจตเจงเฉ‡เจฐเฉ‡ เจ•เฉเจธเจผเจฒ เจ•เฉ‹เจก เจตเจฟเฉฑเจš เจ•เฉ€ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพเฅค ...)
  • เจนเฉ‹เจธเจŸ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจฆเฉ€ เจ‡เจ•เจธเจพเจฐเจคเจพ: x86 'เจคเฉ‡, เจ…เจคเฉ‡ เจ‡เฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจ•เจฟ TCI เจตเจฟเฉฑเจš เจตเฉ€, เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฌเจฟเจฒเจ•เฉเจฒ เจตเฉ€ เจ‡เจ•เจธเจพเจฐ เจจเจนเฉ€เจ‚ เจนเจจ, เจชเจฐ เจฎเฉˆเจ‚ เจ•เฉ‹เจก เจฌเจซเจฐ เจตเจฟเฉฑเจš เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ เจจเฉ‚เฉฐ เจจเจนเฉ€เจ‚, เจฌเจฒเจ•เจฟ เจฌเจพเจ‡เจจเฉ‡เจฐเฉ€เจ…เจจ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจขเจพเจ‚เจšเฉ‡ เจตเฉฑเจฒ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฒเจ—เจพเจ‰เจฃ เจœเจพ เจฐเจฟเจนเจพ เจนเจพเจ‚, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจ•เจนเจพเจ‚เจ—เจพ: 4 เจฌเจพเจˆเจŸ
  • เจฌเฉˆเจ•เจเจ‚เจก เจ•เจฟเจนเฉœเฉ€เจ†เจ‚ เจตเจฟเจ•เจฒเจชเจฟเจ• เจนเจฟเจฆเจพเจ‡เจคเจพเจ‚ เจคเจฟเจ†เจฐ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ - เจ…เจธเฉ€เจ‚ เจ‰เจน เจธเจญ เจ•เฉเจ เจธเจผเจพเจฎเจฒ เจ•เจฐเจฆเฉ‡ เจนเจพเจ‚ เจœเฉ‹ เจ…เจธเฉ€เจ‚ เจฌเจพเจ‡เจจเจฐเฉ€เจจ เจตเจฟเฉฑเจš เจฒเฉฑเจญเจฆเฉ‡ เจนเจพเจ‚, เจเจ•เจธเจฒเฉ‡เจŸเจฐ เจจเฉ‚เฉฐ เจฌเจพเจ•เฉ€ เจจเฉ‚เฉฐ เจธเจงเจพเจฐเจจ เจตเจฟเฉฑเจš เจตเฉฐเจกเจฃ เจฆเจฟเจ“
  • เจฌเฉˆเจ•เจเจ‚เจก เจฆเฉเจ†เจฐเจพ เจฌเฉ‡เจจเจคเฉ€ เจ•เฉ€เจคเฉ€ TLB เจ•เฉˆเจธเจผ เจฆเจพ เจ…เฉฐเจฆเจพเจœเจผเจจ เจ†เจ•เจพเจฐ เจ•เฉ€ เจนเฉˆเฅค เจคเฉฑเจฅ เจ‡เจน เจนเฉˆ เจ•เจฟ QEMU เจตเจฟเฉฑเจš เจธเจญ เจ•เฉเจ เจ—เฉฐเจญเฉ€เจฐ เจนเฉˆ: เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจธเจนเจพเจ‡เจ• เจซเฉฐเจ•เจธเจผเจจ เจนเจจ เจœเฉ‹ เจฒเฉ‹เจก/เจธเจŸเฉ‹เจฐ เจ•เจฐเจฆเฉ‡ เจนเจจ เจ—เฉˆเจธเจŸ MMU (เจ…เจธเฉ€เจ‚ เจนเฉเจฃ เจ‡เจธ เจคเฉ‹เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเฉฑเจฅเฉ‡ เจนเฉ‹เจตเจพเจ‚เจ—เฉ‡?) เจจเฉ‚เฉฐ เจงเจฟเจ†เจจ เจตเจฟเฉฑเจš เจฐเฉฑเจ–เจฆเฉ‡ เจนเฉ‹เจ, เจ‰เจน เจ†เจชเจฃเฉ‡ เจ…เจจเฉเจตเจพเจฆ เจ•เฉˆเจธเจผ เจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจขเจพเจ‚เจšเฉ‡ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เจฐเจฆเฉ‡ เจนเจจ, เจœเจฟเจธเจฆเฉ€ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจธเจฟเฉฑเจงเฉ‡ เจชเฉเจฐเจธเจพเจฐเจฃ เจฌเจฒเจพเจ•เจพเจ‚ เจตเจฟเฉฑเจš เจเจฎเจฌเฉ‡เจก เจ•เจฐเจจ เจฒเจˆ เจธเฉเจตเจฟเจงเจพเจœเจจเจ• เจนเฉˆเฅค เจธเจตเจพเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ, เจ‡เจธ เจขเจพเจ‚เจšเฉ‡ เจตเจฟเฉฑเจš เจ•เจฟเจนเฉœเฉ€ เจ”เจซเจธเฉˆเฉฑเจŸ เจ•เจฎเจพเจ‚เจกเจพเจ‚ เจฆเฉ‡ เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ เจ…เจคเฉ‡ เจคเฉ‡เจœเจผ เจ•เฉเจฐเจฎ เจฆเฉเจ†เจฐเจพ เจธเจญ เจคเฉ‹เจ‚ เจ•เฉเจธเจผเจฒเจคเจพ เจจเจพเจฒ เจชเฉเจฐเจ•เจฟเจฐเจฟเจ† เจ•เฉ€เจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ?
  • เจ‡เฉฑเจฅเฉ‡ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจœเจพเจ‚ เจฆเฉ‹ เจฐเจฟเจœเจผเจฐเจตเจก เจฐเจœเจฟเจธเจŸเจฐเจพเจ‚ เจฆเฉ‡ เจ‰เจฆเฉ‡เจธเจผ เจจเฉ‚เฉฐ เจฌเจฆเจฒ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฆเฉเจ†เจฐเจพ เจŸเฉ€เจฌเฉ€ เจจเฉ‚เฉฐ เจ•เจพเจฒ เจ•เจฐเจจ เจจเฉ‚เฉฐ เจธเจฎเจฐเฉฑเจฅ เจฌเจฃเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹ เจ…เจคเฉ‡ เจตเจฟเจ•เจฒเจชเจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจ•เฉเจ เจ›เฉ‹เจŸเฉ‡ เจฆเจพ เจตเจฐเจฃเจจ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹เฅค inline- เจซเฉฐเจ•เจธเจผเจจ เจตเจฐเจ—เฉ‡ flush_icache_range (เจชเจฐ เจ‡เจน เจธเจพเจกเจพ เจฎเจพเจฎเจฒเจพ เจจเจนเฉ€เจ‚ เจนเฉˆ)

เจซเจพเจ‡เจฒ tcg-target.inc.c, เจฌเฉ‡เจธเจผเฉฑเจ•, เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡ เจ†เจ•เจพเจฐ เจตเจฟเฉฑเจš เจฌเจนเฉเจค เจตเฉฑเจกเจพ เจนเฉเฉฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‡เจธ เจตเจฟเฉฑเจš เจ•เจˆ เจฒเจพเจœเจผเจฎเฉ€ เจซเฉฐเจ•เจธเจผเจจ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ:

  • เจธเจผเฉเจฐเฉ‚เจ†เจค, เจœเจฟเจธ 'เจคเฉ‡ เจชเจพเจฌเฉฐเจฆเฉ€เจ†เจ‚ เจธเจผเจพเจฎเจฒ เจนเจจ เจ•เจฟ เจ•เจฟเจนเฉœเฉ‡ เจจเจฟเจฐเจฆเฉ‡เจธเจผเจพเจ‚ 'เจคเฉ‡ เจ•เฉฐเจฎ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเจจเฅค เจ•เจฟเจธเฉ‡ เจนเฉ‹เจฐ เจฌเฉˆเจ•เจเจ‚เจก เจคเฉ‹เจ‚ เจฎเฉ‡เจฐเฉ‡ เจฆเฉเจ†เจฐเจพ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจจเจ•เจฒ เจ•เฉ€เจคเฉ€ เจ—เจˆ
  • เจซเฉฐเจ•เจธเจผเจจ เจœเฉ‹ เจ‡เฉฑเจ• เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจฌเจพเจˆเจŸเจ•เฉ‹เจก เจจเจฟเจฐเจฆเฉ‡เจธเจผ เจฒเฉˆเจ‚เจฆเจพ เจนเฉˆ
  • เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจฅเฉ‡ เจธเจนเจพเจ‡เจ• เจซเฉฐเจ•เจธเจผเจจ เจตเฉ€ เจชเจพ เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจ…เจคเฉ‡ เจคเฉเจธเฉ€เจ‚ เจธเจŸเฉˆเจŸเจฟเจ• เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจตเฉ€ เจ•เจฐ เจธเจ•เจฆเฉ‡ เจนเฉ‹ tcg/tcg.c

เจ†เจชเจฃเฉ‡ เจฒเจˆ, เจฎเฉˆเจ‚ เจนเฉ‡เจ  เจฒเจฟเจ–เฉ€ เจฐเจฃเจจเฉ€เจคเฉ€ เจšเฉเจฃเฉ€: เจ…เจ—เจฒเฉ‡ เจ…เจจเฉเจตเจพเจฆ เจฌเจฒเจพเจ• เจฆเฉ‡ เจชเจนเจฟเจฒเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจตเจฟเฉฑเจš, เจฎเฉˆเจ‚ เจšเจพเจฐ เจชเฉเจ†เจ‡เฉฐเจŸเจฐ เจฒเจฟเจ–เฉ‡: เจ‡เฉฑเจ• เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจšเจฟเฉฐเจจเฉเจน (เจ†เจธเฉ‡-เจชเจพเจธเฉ‡ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจ–เจพเจธ เจฎเฉเฉฑเจฒ 0xFFFFFFFF, เจœเฉ‹ เจ•เจฟ เจŸเฉ€เจฌเฉ€ เจฆเฉ€ เจฎเฉŒเจœเฉ‚เจฆเจพ เจธเจฅเจฟเจคเฉ€ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ), เจธเฉฐเจฆเจฐเจญ, เจคเจฟเจ†เจฐ เจฎเฉ‹เจกเฉ€เจŠเจฒ, เจ…เจคเฉ‡ เจกเฉ€เจฌเฉฑเจ—เจฟเฉฐเจ— เจฒเจˆ เจฎเฉˆเจœเจฟเจ• เจจเฉฐเจฌเจฐเฅค เจชเจนเจฟเจฒเจพเจ‚ เจคเจพเจ‚ เจจเจฟเจธเจผเจพเจจ เจฒเจ—เจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ 0xFFFFFFFF - nเจ•เจฟเฉฑเจฅเฉ‡ n - เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ€ เจธเจ•เจพเจฐเจพเจคเจฎเจ• เจธเฉฐเจ–เจฟเจ†, เจ…เจคเฉ‡ เจนเจฐ เจตเจพเจฐ เจœเจฆเฉ‹เจ‚ เจ‡เจธเจจเฉ‚เฉฐ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจฆเฉเจ†เจฐเจพ เจšเจฒเจพเจ‡เจ† เจ—เจฟเจ† เจคเจพเจ‚ เจ‡เจน 1 เจฆเฉเจ†เจฐเจพ เจตเจงเจฟเจ†เฅค เจœเจฆเฉ‹เจ‚ เจ‡เจน เจชเจนเฉเฉฐเจš เจ—เจฟเจ† 0xFFFFFFFE, เจธเฉฐเจ•เจฒเจจ เจนเฉ‹เจ‡เจ†, เจฎเฉ‹เจกเฉ€เจŠเจฒ เจซเฉฐเจ•เจธเจผเจจ เจŸเฉ‡เจฌเจฒ เจตเจฟเฉฑเจš เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจ‡เฉฑเจ• เจ›เฉ‹เจŸเฉ‡ "เจฒเจพเจ‚เจšเจฐ" เจตเจฟเฉฑเจš เจ†เจฏเจพเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€, เจœเจฟเจธ เจตเจฟเฉฑเจš เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจšเจฒเจฟเจ† เจ—เจฟเจ† เจธเฉ€ tcg_qemu_tb_exec, เจ…เจคเฉ‡ เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ QEMU เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจคเฉ‹เจ‚ เจนเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€เฅค

เจ•เจฒเจพเจธเจฟเจ• เจฆเฉ€ เจตเจฟเจ†เจ–เจฟเจ† เจ•เจฐเจจ เจฒเจˆ, "เจ•เจฐเจš, เจชเฉเจฐเฉ‹เจ—เจฐ เจฆเฉ‡ เจฆเจฟเจฒ เจฒเจˆ เจ‡เจธ เจงเฉเจจเฉ€ เจตเจฟเฉฑเจš เจ•เจฟเฉฐเจจเจพ เจ•เฉ เจœเฉเฉœเจฟเจ† เจนเฉ‹เจ‡เจ† เจนเฉˆ..."เฅค เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจฏเจพเจฆเจพเจธเจผเจค เจ•เจฟเจคเฉ‡ เจฒเฉ€เจ• เจนเฉ‹ เจฐเจนเฉ€ เจธเฉ€. เจ‡เจธ เจคเฉ‹เจ‚ เจ‡เจฒเจพเจตเจพ, เจ‡เจน QEMU เจฆเฉเจ†เจฐเจพ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจฆเจพ เจชเฉเจฐเจฌเฉฐเจงเจจ เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจธเฉ€! เจฎเฉ‡เจฐเฉ‡ เจ•เฉ‹เจฒ เจ‡เฉฑเจ• เจ•เฉ‹เจก เจธเฉ€, เจœเจฆเฉ‹เจ‚ เจ…เจ—เจฒเฉ€ เจนเจฆเจพเจ‡เจค (เจšเฉฐเจ—เฉ€ เจคเจฐเฉเจนเจพเจ‚, เจ…เจฐเจฅเจพเจค, เจ‡เฉฑเจ• เจชเฉเจ†เจ‡เฉฐเจŸเจฐ) เจฒเจฟเจ–เจฃ เจตเฉ‡เจฒเฉ‡, เจ‰เจธ เจจเฉ‚เฉฐ เจฎเจฟเจŸเจพ เจฆเจฟเฉฑเจคเจพ เจ—เจฟเจ† เจธเฉ€ เจœเจฟเจธเจฆเจพ เจฒเจฟเฉฐเจ• เจชเจนเจฟเจฒเจพเจ‚ เจ‡เจธ เจฅเจพเจ‚ 'เจคเฉ‡ เจธเฉ€, เจชเจฐ เจ‡เจธ เจจเฉ‡ เจฎเจฆเจฆ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€. เจ…เจธเจฒ เจตเจฟเฉฑเจš, เจธเจญ เจคเฉ‹เจ‚ เจธเจฐเจฒ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, QEMU เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจธเจฎเฉ‡เจ‚ เจตเจฟเฉฑเจš เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เจฐเจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ‹เจก เจฒเจฟเจ–เจฆเจพ เจนเฉˆเฅค เจœเจฆเฉ‹เจ‚ เจฌเจซเจฐ เจ–เจคเจฎ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆ, เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจธเฉเฉฑเจŸ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ เจ…เจคเฉ‡ เจ…เจ—เจฒเจพ เจ‡เจธเจฆเฉ€ เจฅเจพเจ‚ 'เจคเฉ‡ เจฒเจฟเจ–เจฟเจ† เจœเจพเจฃเจพ เจธเจผเฉเจฐเฉ‚ เจนเฉ‹ เจœเจพเจ‚เจฆเจพ เจนเฉˆเฅค

เจ•เฉ‹เจก เจฆเจพ เจ…เจงเจฟเจเจจ เจ•เจฐเจจ เจคเฉ‹เจ‚ เจฌเจพเจ…เจฆ, เจฎเฉˆเจจเฉ‚เฉฐ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ† เจ•เจฟ เจฎเฉˆเจœเจฟเจ• เจจเฉฐเจฌเจฐ เจตเจพเจฒเฉ€ เจšเจพเจฒ เจจเฉ‡ เจฎเฉˆเจจเฉ‚เฉฐ เจชเจนเจฟเจฒเฉ‡ เจชเจพเจธ 'เจคเฉ‡ เจ…เจฃ-เจธเจผเฉเจฐเฉ‚เจ†เจคเฉ€ เจฌเจซเจฐ 'เจคเฉ‡ เจ•เฉเจ เจ—เจฒเจค เจ›เฉฑเจก เจ•เฉ‡ เจขเฉ‡เจฐ เจฆเฉ‡ เจตเจฟเจจเจพเจธเจผ 'เจคเฉ‡ เจ…เจธเจซเจฒ เจจเจพ เจนเฉ‹เจฃ เจฆเจฟเฉฑเจคเจพเฅค เจชเจฐ เจฌเจพเจ…เจฆ เจตเจฟเฉฑเจš เจฎเฉ‡เจฐเฉ‡ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจฌเจพเจˆเจชเจพเจธ เจ•เจฐเจจ เจฒเจˆ เจฌเจซเจฐ เจจเฉ‚เฉฐ เจ•เฉŒเจฃ เจฆเฉเจฌเจพเจฐเจพ เจฒเจฟเจ–เจฆเจพ เจนเฉˆ? เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจเจฎเจธเจ•เฉเจฐเจฟเจชเจŸเจจ เจกเจฟเจตเฉˆเจฒเจชเจฐเจพเจ‚ เจฆเฉ€ เจธเจฒเจพเจน เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจฎเฉˆเจ‚ เจ‡เฉฑเจ• เจธเจฎเฉฑเจธเจฟเจ† เจฆเจพ เจธเจพเจนเจฎเจฃเจพ เจ•เจฐเจฆเจพ เจนเจพเจ‚, เจฎเฉˆเจ‚ เจจเจคเฉ€เจœเจพ เจ•เฉ‹เจก เจจเฉ‚เฉฐ เจฎเฉ‚เจฒ เจเจชเจฒเฉ€เจ•เฉ‡เจธเจผเจจ เจตเจฟเฉฑเจš เจชเฉ‹เจฐเจŸ เจ•เฉ€เจคเจพ, เจ‡เจธ 'เจคเฉ‡ เจฎเฉ‹เจœเจผเฉ€เจฒเจพ เจฐเจฟเจ•เจพเจฐเจก-เจฐเฉ€เจชเจฒเฉ‡ เจธเฉˆเฉฑเจŸ เจ•เฉ€เจคเจพ... เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจ…เฉฐเจค เจตเจฟเฉฑเจš เจฎเฉˆเจจเฉ‚เฉฐ เจ‡เฉฑเจ• เจธเจงเจพเจฐเจจ เจšเฉ€เจœเจผ เจฆเจพ เจ…เจนเจฟเจธเจพเจธ เจนเฉ‹เจ‡เจ†: เจนเจฐเฉ‡เจ• เจฌเจฒเจพเจ• เจฒเจˆ, a struct TranslationBlock เจ‡เจธเจฆเฉ‡ เจตเจฐเจฃเจจ เจฆเฉ‡ เจจเจพเจฒ. เจ…เฉฐเจฆเจพเจœเจผเจพ เจฒเจ—เจพเจ“ เจ•เจฟ เจ•เจฟเฉฑเจฅเฉ‡... เจ‡เจน เจธเจนเฉ€ เจนเฉˆ, เจฌเจซเจฐ เจตเจฟเฉฑเจš เจฌเจฒเจพเจ• เจฆเฉ‡ เจฌเจฟเจฒเจ•เฉเจฒ เจชเจนเจฟเจฒเจพเจ‚เฅค เจ‡เจธ เจจเฉ‚เฉฐ เจฎเจนเจฟเจธเฉ‚เจธ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ, เจฎเฉˆเจ‚ เจฌเฉˆเจธเจพเจ–เฉ€เจ†เจ‚ (เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ•เฉเจ) เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ›เฉฑเจกเจฃ เจฆเจพ เจซเฉˆเจธเจฒเจพ เจ•เฉ€เจคเจพ, เจ…เจคเฉ‡ เจธเจฟเจฐเจซเจผ เจœเจพเจฆเฉ‚เจˆ เจจเฉฐเจฌเจฐ เจจเฉ‚เฉฐ เจฌเจพเจนเจฐ เจธเฉเฉฑเจŸ เจฆเจฟเฉฑเจคเจพ, เจ…เจคเฉ‡ เจฌเจพเจ•เฉ€ เจฌเจšเฉ‡ เจธเจผเจฌเจฆเจพเจ‚ เจจเฉ‚เฉฐ เจ‡เจธ เจตเจฟเฉฑเจš เจคเจฌเจฆเฉ€เจฒ เจ•เจฐ เจฆเจฟเฉฑเจคเจพเฅค struct TranslationBlock, เจ‡เฉฑเจ• เจธเจฟเฉฐเจ—เจฒ เจฒเจฟเฉฐเจ•เจก เจธเฉ‚เจšเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจœเฉ‹ เจ…เจจเฉเจตเจพเจฆ เจ•เฉˆเจธเจผ เจฐเฉ€เจธเฉˆเจŸ เจนเฉ‹เจฃ 'เจคเฉ‡ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจชเจพเจฐ เจ•เฉ€เจคเจพ เจœเจพ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ–เจพเจฒเฉ€ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆเฅค

เจ•เฉเจ เจฌเฉˆเจธเจพเจ–เฉ€เจ†เจ‚ เจฐเจนเจฟเฉฐเจฆเฉ€เจ†เจ‚ เจนเจจ: เจ‰เจฆเจพเจนเจฐเจจ เจฒเจˆ, เจ•เฉ‹เจก เจฌเจซเจฐ เจตเจฟเฉฑเจš เจšเจฟเฉฐเจจเฉเจนเจฟเจค เจชเฉเจ†เจ‡เฉฐเจŸเจฐ - เจ‰เจนเจจเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจ•เฉเจ เจธเจงเจพเจฐเจจ เจนเจจ BinaryenExpressionRef, เจฏเจพเจจเฉ€, เจ‰เจน เจ‰เจนเจจเจพเจ‚ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฆเฉ‡เจ–เจฆเฉ‡ เจนเจจ เจœเจฟเจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจฐเฉ‡เจ–เจฟเจ• เจคเฉŒเจฐ 'เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจฎเฉ‚เจฒ เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจชเจพเจ‰เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจญเจพเจ— BBs เจตเจฟเจšเจ•เจพเจฐ เจคเจฌเจฆเฉ€เจฒเฉ€ เจฒเจˆ เจธเจผเจฐเจค เจนเฉˆ, เจนเจฟเฉฑเจธเจพ เจ•เจฟเฉฑเจฅเฉ‡ เจœเจพเจฃเจพ เจนเฉˆเฅค เจ–เฉˆเจฐ, เจฐเฉ€เจฒเฉ‹เจชเจฐ เจฒเจˆ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจฌเจฒเจพเจ• เจนเจจ เจœเจฟเจจเฉเจนเจพเจ‚ เจจเฉ‚เฉฐ เจธเจผเจฐเจคเจพเจ‚ เจ…เจจเฉเจธเจพเจฐ เจœเฉ‹เฉœเจจ เจฆเฉ€ เจœเจผเจฐเฉ‚เจฐเจค เจนเฉˆ. เจ‰เจนเจจเจพเจ‚ เจจเฉ‚เฉฐ เจตเฉฑเจ– เจ•เจฐเจจ เจฒเจˆ, เจ‡เจน เจงเจพเจฐเจจเจพ เจตเจฐเจคเฉ€ เจœเจพเจ‚เจฆเฉ€ เจนเฉˆ เจ•เจฟ เจ‰เจน เจธเจพเจฐเฉ‡ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจšเจพเจฐ เจฌเจพเจˆเจŸเจพเจ‚ เจจเจพเจฒ เจ‡เจ•เจธเจพเจฐ เจนเจจ, เจ‡เจธเจฒเจˆ เจคเฉเจธเฉ€เจ‚ เจฒเฉ‡เจฌเจฒ เจฒเจˆ เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจฎเจนเฉฑเจคเจตเจชเฉ‚เจฐเจจ เจฆเฉ‹ เจฌเจฟเฉฑเจŸเจพเจ‚ เจจเฉ‚เฉฐ เจธเฉเจฐเฉฑเจ–เจฟเจ…เจค เจขเฉฐเจ— เจจเจพเจฒ เจตเจฐเจค เจธเจ•เจฆเฉ‡ เจนเฉ‹, เจœเฉ‡เจ•เจฐ เจฒเฉ‹เฉœ เจนเฉ‹เจตเฉ‡ เจคเจพเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‡เจธเจจเฉ‚เฉฐ เจนเจŸเจพเจ‰เจฃ เจฒเจˆ เจฏเจพเจฆ เจฐเฉฑเจ–เจฃ เจฆเฉ€ เจฒเฉ‹เฉœ เจนเฉˆเฅค เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ, TCG เจฒเฉ‚เจช เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจจเจฟเจ•เจฒเจฃ เจฆเฉ‡ เจ•เจพเจฐเจจ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ QEMU เจตเจฟเฉฑเจš เจ…เจœเจฟเจนเฉ‡ เจฒเฉ‡เจฌเจฒ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจตเจฐเจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจเฅค

Binaryen เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจฆเฉ‡ เจนเฉ‹เจ

WebAssembly เจตเจฟเฉฑเจš เจฎเฉ‹เจกเจฟเจŠเจฒ เจซเฉฐเจ•เจธเจผเจจ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจ, เจœเจฟเจจเฉเจนเจพเจ‚ เจตเจฟเฉฑเจšเฉ‹เจ‚ เจนเจฐเฉ‡เจ• เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเจพเจกเฉ€ เจนเฉเฉฐเจฆเฉ€ เจนเฉˆ, เจœเฉ‹ เจ•เจฟ เจ‡เฉฑเจ• เจธเจฎเฉ€เจ•เจฐเจจ เจนเฉˆเฅค เจธเจฎเฉ€เจ•เจฐเจจ เจฏเฉ‚เจจเจฐเฉ€ เจ…เจคเฉ‡ เจฌเจพเจˆเจจเจฐเฉ€ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจนเฉ‹เจฐ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚, เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจตเจพเจน, เจ†เจฆเจฟ เจฆเฉ€เจ†เจ‚ เจธเฉ‚เจšเฉ€เจ†เจ‚ เจตเจพเจฒเฉ‡ เจฌเจฒเจพเจ• เจนเฉเฉฐเจฆเฉ‡ เจนเจจเฅค เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจฎเฉˆเจ‚ เจชเจนเจฟเจฒเจพเจ‚ เจนเฉ€ เจ•เจฟเจนเจพ เจนเฉˆ, เจ‡เฉฑเจฅเฉ‡ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจตเจพเจน เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจธเจผเจพเจ–เจพเจตเจพเจ‚, เจฒเฉ‚เจชเจธ, เจซเฉฐเจ•เจธเจผเจจ เจ•เจพเจฒเจพเจ‚, เจ†เจฆเจฟ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ เฉ€เจ• เจคเจฐเฉเจนเจพเจ‚ เจตเจฟเจตเจธเจฅเจฟเจค เจ•เฉ€เจคเจพ เจ—เจฟเจ† เจนเฉˆเฅค เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฒเจˆ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจธเจŸเฉˆเจ• 'เจคเฉ‡ เจชเจพเจธ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ‡ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ, เจชเจฐ เจธเจชเฉฑเจธเจผเจŸ เจคเฉŒเจฐ 'เจคเฉ‡, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ เจœเฉ‡.เจเจธ. เจ—เจฒเฉ‹เจฌเจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเฉ€ เจนเจจ, เจชเจฐ เจฎเฉˆเจ‚ เจ‰เจนเจจเจพเจ‚ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจ‡เจธ เจฒเจˆ เจฎเฉˆเจ‚ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจ‰เจนเจจเจพเจ‚ เจฌเจพเจฐเฉ‡ เจจเจนเฉ€เจ‚ เจฆเฉฑเจธเจพเจ‚เจ—เจพเฅค

เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจตเจฟเฉฑเจš เจฒเฉ‹เจ•เจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจตเฉ€ เจนเฉเฉฐเจฆเฉ‡ เจนเจจ, เจœเจผเฉ€เจฐเฉ‹ เจคเฉ‹เจ‚ เจจเฉฐเจฌเจฐ เจฆเจฟเฉฑเจคเฉ‡, เจ•เจฟเจธเจฎ เจฆเฉ‡: int32 / int64 / เจซเจฒเฉ‹เจŸ / เจกเจฌเจฒเฅค เจ‡เจธ เจธเจฅเจฟเจคเฉ€ เจตเจฟเฉฑเจš, เจชเจนเจฟเจฒเฉ‡ n เจฒเฉ‹เจ•เจฒ เจตเฉ‡เจฐเฉ€เจเจฌเจฒ เจซเฉฐเจ•เจธเจผเจจ เจจเฉ‚เฉฐ เจชเจพเจธ เจ•เฉ€เจคเฉ‡ เจ—เจ เจ†เจฐเจ—เฉ‚เจฎเฉˆเจ‚เจŸ เจนเจจเฅค เจ•เจฟเจฐเจชเจพ เจ•เจฐเจ•เฉ‡ เจจเฉ‹เจŸ เจ•เจฐเฉ‹ เจ•เจฟ เจนเจพเจฒเจพเจ‚เจ•เจฟ เจ‡เฉฑเจฅเฉ‡ เจนเจฐ เจšเฉ€เจœเจผ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจตเจพเจน เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจชเฉ‚เจฐเฉ€ เจคเจฐเฉเจนเจพเจ‚ เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐ เจฆเฉ€ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเฉ‚เจฐเจจ เจ…เฉฐเจ• เจ…เจœเฉ‡ เจตเฉ€ "เจนเจธเจคเจพเจ–เจฐเจฟเจค/เจนเจธเจคเจพเจ–เจฐเจฟเจค" เจตเจฟเจธเจผเฉ‡เจธเจผเจคเจพ เจจเจนเฉ€เจ‚ เจฐเฉฑเจ–เจฆเฉ‡ เจนเจจ: เจธเฉฐเจ–เจฟเจ† เจ•เจฟเจตเฉ‡เจ‚ เจตเจฟเจตเจนเจพเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆ เจ“เจชเจฐเฉ‡เจธเจผเจจ เจ•เฉ‹เจก 'เจคเฉ‡ เจจเจฟเจฐเจญเจฐ เจ•เจฐเจฆเฉ€ เจนเฉˆเฅค

เจ†เจฎ เจคเฉŒเจฐ 'เจคเฉ‡, เจฌเจพเจ‡เจจเจฐเฉ€เจจ เจชเฉเจฐเจฆเจพเจจ เจ•เจฐเจฆเจพ เจนเฉˆ เจธเจงเจพเจฐเจจ C-API: เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹, เจ‰เจธ เจตเจฟเฉฑเจš เจธเจฎเฉ€เจ•เจฐเจจ เจฌเจฃเจพเจ“ - เจฏเฉ‚เจจเจฐเฉ€, เจฌเจพเจˆเจจเจฐเฉ€, เจนเฉ‹เจฐ เจธเจฎเฉ€เจ•เจฐเจจเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจฒเจพเจ•, เจ•เฉฐเจŸเจฐเฉ‹เจฒ เจชเฉเจฐเจตเจพเจน, เจ†เจฆเจฟเฅค เจซเจฟเจฐ เจคเฉเจธเฉ€เจ‚ เจ‡เจธเจฆเฉ‡ เจธเจฐเฉ€เจฐ เจฆเฉ‡ เจฐเฉ‚เจช เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจธเจฎเฉ€เจ•เจฐเจจ เจฆเฉ‡ เจจเจพเจฒ เจ‡เฉฑเจ• เจซเฉฐเจ•เจธเจผเจจ เจฌเจฃเจพเจ‰เจ‚เจฆเฉ‡ เจนเฉ‹. เจœเฉ‡เจ•เจฐ เจคเฉเจนเจพเจกเฉ‡ เจ•เฉ‹เจฒ, เจฎเฉ‡เจฐเฉ‡ เจตเจพเจ‚เจ—, เจ‡เฉฑเจ• เจ˜เฉฑเจŸ-เจชเฉฑเจงเจฐ เจฆเจพ เจชเจฐเจฟเจตเจฐเจคเจจ เจ—เฉเจฐเจพเจซ เจนเฉˆ, เจคเจพเจ‚ เจฐเฉ€เจฒเฉ‚เจชเจฐ เจ•เฉฐเจชเฉ‹เจจเฉˆเจ‚เจŸ เจคเฉเจนเจพเจกเฉ€ เจฎเจฆเจฆ เจ•เจฐเฉ‡เจ—เจพเฅค เจœเจฟเฉฑเจฅเฉ‹เจ‚ เจคเฉฑเจ• เจฎเฉˆเจ‚ เจธเจฎเจเจฆเจพ เจนเจพเจ‚, เจ‡เฉฑเจ• เจฌเจฒเจพเจ• เจตเจฟเฉฑเจš เจเจ—เจœเจผเฉ€เจ•เจฟเจŠเจธเจผเจจ เจชเฉเจฐเจตเจพเจน เจฆเฉ‡ เจ‰เฉฑเจš-เจชเฉฑเจงเจฐเฉ€ เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจจเจพ เจธเฉฐเจญเจต เจนเฉˆ, เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจ‡เจน เจฌเจฒเจพเจ• เจฆเฉ€เจ†เจ‚ เจธเฉ€เจฎเจพเจตเจพเจ‚ เจคเฉ‹เจ‚ เจฌเจพเจนเจฐ เจจเจนเฉ€เจ‚ เจœเจพเจ‚เจฆเจพ เจนเฉˆ - เจฏเจพเจจเฉ€, เจ…เฉฐเจฆเจฐเฉ‚เจจเฉ€ เจคเฉ‡เจœเจผ เจฎเจพเจฐเจ— / เจนเฉŒเจฒเฉ€ เจฌเจฃเจพเจ‰เจฃเจพ เจธเฉฐเจญเจต เจนเฉˆ. เจฌเจฟเจฒเจŸ-เจ‡เจจ TLB เจ•เฉˆเจธเจผ เจชเฉเจฐเฉ‹เจธเฉˆเจธเจฟเฉฐเจ— เจ•เฉ‹เจก เจฆเฉ‡ เจ…เฉฐเจฆเจฐ เจชเจพเจฅ เจฌเฉเจฐเจพเจ‚เจšเจฟเฉฐเจ—, เจชเจฐ "เจฌเจพเจนเจฐเฉ€" เจจเจฟเจฏเฉฐเจคเจฐเจฃ เจชเฉเจฐเจตเจพเจน เจตเจฟเฉฑเจš เจฆเจ–เจฒ เจฆเฉ‡เจฃ เจฒเจˆ เจจเจนเฉ€เจ‚เฅค เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฐเฉ€เจฒเฉ‹เจชเจฐ เจจเฉ‚เฉฐ เจ–เจพเจฒเฉ€ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจธเจฆเฉ‡ เจฌเจฒเจพเจ•เจพเจ‚ เจจเฉ‚เฉฐ เจฎเฉเจ•เจค เจ•เจฐ เจฆเจฟเฉฑเจคเจพ เจœเจพเจ‚เจฆเจพ เจนเฉˆ; เจœเจฆเฉ‹เจ‚ เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• เจฎเฉ‹เจกเฉ€เจŠเจฒ เจจเฉ‚เฉฐ เจ–เจพเจฒเฉ€ เจ•เจฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจธ เจจเฉ‚เฉฐ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเฉ‡ เจธเจฎเฉ€เจ•เจฐเจจ, เจซเฉฐเจ•เจธเจผเจจ เจ†เจฆเจฟ เจ…เจฒเฉ‹เจช เจนเฉ‹ เจœเจพเจ‚เจฆเฉ‡ เจนเจจ เจ…เจ–เจพเฉœเจพ.

เจนเจพเจฒเจพเจ‚เจ•เจฟ, เจœเฉ‡เจ•เจฐ เจคเฉเจธเฉ€เจ‚ เจฌเจฟเจจเจพเจ‚ เจ•เจฟเจธเฉ‡ เจฆเฉเจญเจพเจธเจผเฉ€เจ เจฆเฉ€ เจ‰เจฆเจพเจนเจฐเจจ เจจเฉ‚เฉฐ เจฌเฉ‡เจฒเฉ‹เฉœเฉ€ เจฌเจฃเจพเจ‰เจฃ เจ…เจคเฉ‡ เจฎเจฟเจŸเจพเจ เจฌเจฟเจจเจพเจ‚ เจ‰เฉฑเจกเจฆเฉ‡ เจนเฉ‹เจ เจ•เฉ‹เจก เจฆเฉ€ เจตเจฟเจ†เจ–เจฟเจ† เจ•เจฐเจจเจพ เจšเจพเจนเฉเฉฐเจฆเฉ‡ เจนเฉ‹, เจคเจพเจ‚ เจ‡เจน เจคเจฐเจ• เจจเฉ‚เฉฐ เจ‡เฉฑเจ• C++ เจซเจพเจˆเจฒ เจตเจฟเฉฑเจš เจชเจพเจ‰เจฃเจพ เจธเจฎเจเจฆเจพเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจ…เจคเฉ‡ เจ‰เฉฑเจฅเฉ‡ เจคเฉ‹เจ‚ เจฒเจพเจ‡เจฌเฉเจฐเฉ‡เจฐเฉ€ เจฆเฉ‡ เจชเฉ‚เจฐเฉ‡ C++ API เจจเฉ‚เฉฐ เจธเจฟเฉฑเจงเฉ‡ เจคเฉŒเจฐ 'เจคเฉ‡ เจชเฉเจฐเจฌเฉฐเจงเจฟเจค เจ•เจฐเฉ‹, เจคเจฟเจ†เจฐ- เจฐเฉˆเจชเจฐ เจฌเจฃเจพเจเฅค

เจ‡เจธ เจฒเจˆ เจคเฉเจนเจพเจจเฉ‚เฉฐ เจฒเฉ‹เฉœเฉ€เจ‚เจฆเจพ เจ•เฉ‹เจก เจฌเจฃเจพเจ‰เจฃ เจฒเจˆ

// ะฝะฐัั‚ั€ะพะธั‚ัŒ ะณะปะพะฑะฐะปัŒะฝั‹ะต ะฟะฐั€ะฐะผะตั‚ั€ั‹ (ะผะพะถะฝะพ ะฟะพะผะตะฝัั‚ัŒ ะฟะพั‚ะพะผ)
BinaryenSetAPITracing(0);

BinaryenSetOptimizeLevel(3);
BinaryenSetShrinkLevel(2);

// ัะพะทะดะฐั‚ัŒ ะผะพะดัƒะปัŒ
BinaryenModuleRef MODULE = BinaryenModuleCreate();

// ะพะฟะธัะฐั‚ัŒ ั‚ะธะฟั‹ ั„ัƒะฝะบั†ะธะน (ะบะฐะบ ัะพะทะดะฐะฒะฐะตะผั‹ั…, ั‚ะฐะบ ะธ ะฒั‹ะทั‹ะฒะฐะตะผั‹ั…)
helper_type  BinaryenAddFunctionType(MODULE, "helper-func", BinaryenTypeInt32(), int32_helper_args, ARRAY_SIZE(int32_helper_args));
// (int23_helper_args ะฟั€ะธะพะฑ^WัะพะทะดะฐัŽั‚ัั ะพั‚ะดะตะปัŒะฝะพ)

// ัะบะพะฝัั‚ั€ัƒะธั€ะพะฒะฐั‚ัŒ ััƒะฟะตั€-ะผะตะณะฐ ะฒั‹ั€ะฐะถะตะฝะธะต
// ... ะฝัƒ ั‚ัƒั‚ ัƒะถ ะฒั‹ ะบะฐะบ-ะฝะธะฑัƒะดัŒ ัะฐะผะธ :)

// ะฟะพั‚ะพะผ ัะพะทะดะฐั‚ัŒ ั„ัƒะฝะบั†ะธัŽ
BinaryenAddFunction(MODULE, "tb_fun", tb_func_type, func_locals, FUNC_LOCALS_COUNT, expr);
BinaryenAddFunctionExport(MODULE, "tb_fun", "tb_fun");
...
BinaryenSetMemory(MODULE, (1 << 15) - 1, -1, NULL, NULL, NULL, NULL, NULL, 0, 0);
BinaryenAddMemoryImport(MODULE, NULL, "env", "memory", 0);
BinaryenAddTableImport(MODULE, NULL, "env", "tb_funcs");

// ะทะฐะฟั€ะพัะธั‚ัŒ ะฒะฐะปะธะดะฐั†ะธัŽ ะธ ะพะฟั‚ะธะผะธะทะฐั†ะธัŽ ะฟั€ะธ ะถะตะปะฐะฝะธะธ
assert (BinaryenModuleValidate(MODULE));
BinaryenModuleOptimize(MODULE);

... เจœเฉ‡เจ•เจฐ เจฎเฉˆเจ‚ เจ•เฉเจ เจญเฉเฉฑเจฒ เจ—เจฟเจ† เจนเจพเจ‚, เจฎเจพเจซ เจ•เจฐเจจเจพ, เจ‡เจน เจธเจฟเจฐเจซ เจธเจ•เฉ‡เจฒ เจจเฉ‚เฉฐ เจฆเจฐเจธเจพเจ‰เจฃ เจฒเจˆ เจนเฉˆ, เจ…เจคเฉ‡ เจตเฉ‡เจฐเจตเฉ‡ เจฆเจธเจคเจพเจตเฉ‡เจœเจผเจพเจ‚ เจตเจฟเฉฑเจš เจนเจจเฅค

เจ…เจคเฉ‡ เจนเฉเจฃ เจ•เจฐเฉˆเจ•-เจซเฉˆเจ•เจธ-เจชเฉˆเจ•เจธ เจธเจผเฉเจฐเฉ‚ เจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ•เฉเจ เจ‡เจธ เจคเจฐเฉเจนเจพเจ‚:

static char buf[1 << 20];
BinaryenModuleOptimize(MODULE);
BinaryenSetMemory(MODULE, 0, -1, NULL, NULL, NULL, NULL, NULL, 0, 0);
int sz = BinaryenModuleWrite(MODULE, buf, sizeof(buf));
BinaryenModuleDispose(MODULE);
EM_ASM({
  var module = new WebAssembly.Module(new Uint8Array(wasmMemory.buffer, $0, $1));
  var fptr = $2;
  var instance = new WebAssembly.Instance(module, {
      'env': {
          'memory': wasmMemory,
          // ...
      }
  );
  // ะธ ะฒะพั‚ ัƒะถะต ัƒ ะฒะฐั ะตัั‚ัŒ instance!
}, buf, sz);

เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ QEMU เจ…เจคเฉ‡ JS เจฆเฉ‡ เจธเฉฐเจธเจพเจฐ เจจเฉ‚เฉฐ เจœเฉ‹เฉœเจจ เจฒเจˆ เจ…เจคเฉ‡ เจ‰เจธเฉ‡ เจธเจฎเฉ‡เจ‚ เจ•เฉฐเจชเจพเจ‡เจฒ เจ•เฉ€เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจเจ•เจธเฉˆเจธ เจ•เจฐเจจ เจฒเจˆ, เจ‡เฉฑเจ• เจเจฐเฉ‡ เจฌเจฃเจพเจ‡เจ† เจ—เจฟเจ† เจธเฉ€ (เจฒเจพเจ‚เจšเจฐ เจตเจฟเฉฑเจš เจ†เจฏเจพเจค เจ•เจฐเจจ เจฒเจˆ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจฆเฉ€ เจ‡เฉฑเจ• เจธเจพเจฐเจฃเฉ€), เจ…เจคเฉ‡ เจคเจฟเจ†เจฐ เจ•เฉ€เจคเฉ‡ เจซเฉฐเจ•เจธเจผเจจเจพเจ‚ เจจเฉ‚เฉฐ เจ‰เฉฑเจฅเฉ‡ เจฐเฉฑเจ–เจฟเจ† เจ—เจฟเจ† เจธเฉ€เฅค เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจฆเฉ€ เจคเฉ‡เจœเจผเฉ€ เจจเจพเจฒ เจ—เจฃเจจเจพ เจ•เจฐเจจ เจฒเจˆ, เจœเจผเฉ€เจฐเฉ‹ เจธเจผเจฌเจฆ เจ…เจจเฉเจตเจพเจฆ เจฌเจฒเจพเจ• เจฆเฉ‡ เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจจเฉ‚เฉฐ เจธเจผเฉเจฐเฉ‚ เจตเจฟเฉฑเจš เจตเจฐเจคเจฟเจ† เจ—เจฟเจ† เจธเฉ€, เจชเจฐ เจซเจฟเจฐ เจ‡เจธ เจซเจพเจฐเจฎเฉ‚เจฒเฉ‡ เจฆเฉ€ เจตเจฐเจคเฉ‹เจ‚ เจ•เจฐเจ•เฉ‡ เจ—เจฟเจฃเจฟเจ† เจ—เจฟเจ† เจธเฉ‚เจšเจ•เจพเจ‚เจ• เจธเจฟเจฐเจซเจผ เจ–เฉ‡เจคเจฐ เจตเจฟเฉฑเจš เจซเจฟเฉฑเจŸ เจนเฉ‹เจฃ เจฒเฉฑเจ—เจพเฅค struct TranslationBlock.

เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ เจ•เจฐ เจ•เฉ‡, เจกเฉˆเจฎเฉ‹ (เจตเจฐเจคเจฎเจพเจจ เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจงเฉเฉฐเจฆเจฒเฉ‡ เจฒเจพเจ‡เจธเฉˆเจ‚เจธ เจจเจพเจฒ) เจธเจฟเจฐเจซ เจซเจพเจ‡เจฐเจซเจพเจ•เจธ เจตเจฟเฉฑเจš เจตเจงเฉ€เจ† เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆเฅค เจ•เฉเจฐเฉ‹เจฎ เจกเจฟเจตเฉˆเจฒเจชเจฐ เจธเจจ เจ•เจฟเจธเฉ‡ เจคเจฐเฉเจนเจพเจ‚ เจคเจฟเจ†เจฐ เจจเจนเฉ€เจ‚ เจ‡เจธ เจคเฉฑเจฅ เจฒเจˆ เจ•เจฟ เจ•เฉ‹เจˆ เจตเจฟเจ…เจ•เจคเฉ€ WebAssembly เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจ‡เฉฑเจ• เจนเจœเจผเจพเจฐ เจคเฉ‹เจ‚ เจตเฉฑเจง เจ‰เจฆเจพเจนเจฐเจจเจพเจ‚ เจฌเจฃเจพเจ‰เจฃเจพ เจšเจพเจนเฉเฉฐเจฆเจพ เจนเฉˆ, เจ‡เจธเจฒเจˆ เจ‰เจนเจจเจพเจ‚ เจจเฉ‡ เจนเจฐเฉ‡เจ• เจฒเจˆ เจ‡เฉฑเจ• เจ—เฉ€เจ—เจพเจฌเจพเจˆเจŸ เจตเจฐเจšเฉเจ…เจฒ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจจเจฟเจฐเจงเจพเจฐเจค เจ•เฉ€เจคเจพ ...

เจนเฉเจฃ เจฒเจˆ เจ‡เจน เจธเจญ เจ•เฉเจ เจนเฉˆเฅค เจธเจผเจพเจ‡เจฆ เจ•เฉ‹เจˆ เจนเฉ‹เจฐ เจฒเฉ‡เจ– เจนเฉ‹เจตเฉ‡เจ—เจพ เจœเฉ‡ เจ•เฉ‹เจˆ เจฆเจฟเจฒเจšเจธเจชเฉ€ เจฐเฉฑเจ–เจฆเจพ เจนเฉˆ. เจ…เจฐเจฅเจพเจค, เจ˜เฉฑเจŸเฉ‹-เจ˜เฉฑเจŸ เจ‰เฉฑเจฅเฉ‡ เจฐเจนเจฟเฉฐเจฆเจพ เจนเฉˆ เจธเจฟเจฐเจซ เจฌเจฒเจพเจ• เจœเฉฐเจคเจฐ เจจเฉ‚เฉฐ เจ•เฉฐเจฎ เจ•เจฐเจจ เจฒเจˆ. WebAssembly เจฎเฉ‹เจกเฉ€เจŠเจฒ เจฆเฉ‡ เจธเฉฐเจ•เจฒเจจ เจจเฉ‚เฉฐ เจ…เจธเจฟเฉฐเจ•เจฐเฉ‹เจจเจธ เจฌเจฃเจพเจ‰เจฃเจพ เจตเฉ€ เจธเจฎเจเจฆเจพเจฐ เจนเฉ‹ เจธเจ•เจฆเจพ เจนเฉˆ, เจœเจฟเจตเฉ‡เจ‚ เจ•เจฟ JS เจธเฉฐเจธเจพเจฐ เจตเจฟเฉฑเจš เจฐเจฟเจตเจพเจœ เจนเฉˆ, เจ•เจฟเจ‰เจ‚เจ•เจฟ เจ…เจœเฉ‡ เจตเฉ€ เจ‡เฉฑเจ• เจฆเฉเจญเจพเจธเจผเฉ€เจ เจนเฉˆ เจœเฉ‹ เจ‡เจน เจธเจญ เจ•เฉเจ เจ•เจฐ เจธเจ•เจฆเจพ เจนเฉˆ เจœเจฆเฉ‹เจ‚ เจคเฉฑเจ• เจจเฉ‡เจŸเจฟเจต เจฎเฉ‹เจกเฉ€เจŠเจฒ เจคเจฟเจ†เจฐ เจจเจนเฉ€เจ‚ เจนเฉเฉฐเจฆเจพเฅค

เจ…เฉฐเจค เจตเจฟเฉฑเจš เจ‡เฉฑเจ• เจฌเฉเจเจพเจฐเจค: เจคเฉเจธเฉ€เจ‚ เจ‡เฉฑเจ• 32-เจฌเจฟเฉฑเจŸ เจ†เจฐเจ•เฉ€เจŸเฉˆเจ•เจšเจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฌเจพเจˆเจจเจฐเฉ€ เจ•เฉฐเจชเจพเจˆเจฒ เจ•เฉ€เจคเฉ€ เจนเฉˆ, เจชเจฐ เจ•เฉ‹เจก, เจฎเฉˆเจฎเฉ‹เจฐเฉ€ เจ“เจชเจฐเฉ‡เจธเจผเจจเจพเจ‚ เจฐเจพเจนเฉ€เจ‚, เจฌเจพเจ‡เจจเจฐเฉ€เจจ เจคเฉ‹เจ‚, เจ•เจฟเจคเฉ‡ เจธเจŸเฉˆเจ• 'เจคเฉ‡, เจœเจพเจ‚ 2-เจฌเจฟเฉฑเจŸ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเฉ‡ เจ‰เฉฑเจชเจฐเจฒเฉ‡ 32 GB เจตเจฟเฉฑเจš เจ•เจฟเจคเฉ‡ เจนเฉ‹เจฐ เจšเฉœเฉเจนเจฆเจพ เจนเฉˆเฅค เจธเจฎเฉฑเจธเจฟเจ† เจ‡เจน เจนเฉˆ เจ•เจฟ เจฌเจพเจ‡เจจเจฐเฉ€เจ…เจจ เจฆเฉ‡ เจฆเฉเจฐเจฟเจธเจผเจŸเฉ€เจ•เฉ‹เจฃ เจคเฉ‹เจ‚ เจ‡เจน เจฌเจนเฉเจค เจตเฉฑเจกเฉ‡ เจจเจคเฉ€เจœเฉ‡ เจตเจพเจฒเฉ‡ เจชเจคเฉ‡ เจคเฉฑเจ• เจชเจนเฉเฉฐเจš เจ•เจฐ เจฐเจฟเจนเจพ เจนเฉˆเฅค เจ‡เจธ เจฆเฉ‡ เจ†เจฒเฉ‡-เจฆเฉเจ†เจฒเฉ‡ เจ•เจฟเจตเฉ‡เจ‚ เจœเจพเจฃเจพ เจนเฉˆ?

เจเจกเจฎเจฟเจจ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ

เจฎเฉˆเจ‚ เจ‡เจธเจฆเฉ€ เจœเจพเจ‚เจš เจจเจนเฉ€เจ‚ เจ•เฉ€เจคเฉ€, เจชเจฐ เจฎเฉ‡เจฐเจพ เจชเจนเจฟเจฒเจพ เจตเจฟเจšเจพเจฐ เจธเฉ€ "เจœเฉ‡ เจฎเฉˆเจ‚ 32-เจฌเจฟเฉฑเจŸ เจฒเฉ€เจจเจ•เจธ เจจเฉ‚เฉฐ เจธเจฅเจพเจชเจฟเจค เจ•เฉ€เจคเจพ เจคเจพเจ‚ เจ•เฉ€ เจนเฉ‹เจตเฉ‡เจ—เจพ?" เจซเจฟเจฐ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเจพ เจ‰เจชเจฐเจฒเจพ เจนเจฟเฉฑเจธเจพ เจ•เจฐเจจเจฒ เจฆเฉเจ†เจฐเจพ เจ•เจฌเจœเจผเจพ เจ•เจฐ เจฒเจฟเจ† เจœเจพเจตเฉ‡เจ—เจพเฅค เจธเจฟเจฐเจซ เจธเจตเจพเจฒ เจ‡เจน เจนเฉˆ เจ•เจฟ เจ•เจฟเฉฐเจจเจพ เจ•เฉ เจ•เจฌเจœเจผเจพ เจ•เฉ€เจคเจพ เจœเจพเจตเฉ‡เจ—เจพ: 1 เจœเจพเจ‚ 2 เจœเฉ€.เจฌเฉ€.

เจชเฉเจฐเฉ‹เจ—เจฐเจพเจฎเจฐ เจฆเฉ‡ เจคเจฐเฉ€เจ•เฉ‡ เจจเจพเจฒ (เจชเฉเจฐเฉˆเจ•เจŸเฉ€เจธเจผเจจเจฐเจพเจ‚ เจฒเจˆ เจตเจฟเจ•เจฒเจช)

เจ†เจ‰ เจเจกเจฐเฉˆเฉฑเจธ เจธเจชเฉ‡เจธ เจฆเฉ‡ เจธเจฟเจ–เจฐ 'เจคเฉ‡ เจ‡เฉฑเจ• เจฌเฉเจฒเจฌเฉเจฒเจพ เจ‰เจกเจพเจˆเจเฅค เจฎเฉˆเจ‚ เจ–เฉเจฆ เจจเจนเฉ€เจ‚ เจธเจฎเจเจฆเจพ เจ•เจฟ เจ‡เจน เจ•เจฟเจ‰เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ - เจ‰เฉฑเจฅเฉ‡ เจนเฉ€ เจ‡เฉฑเจ• เจธเจŸเฉˆเจ• เจนเฉ‹เจฃเจพ เจšเจพเจนเฉ€เจฆเจพ เจนเฉˆ. เจชเจฐ "เจ…เจธเฉ€เจ‚ เจ…เจญเจฟเจ†เจธเฉ€ เจนเจพเจ‚: เจธเจญ เจ•เฉเจ เจธเจพเจกเฉ‡ เจฒเจˆ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ, เจชเจฐ เจ•เฉ‹เจˆ เจจเจนเฉ€เจ‚ เจœเจพเจฃเจฆเจพ เจ•เจฟ เจ•เจฟเจ‰เจ‚..."

// 2gbubble.c
// Usage: LD_PRELOAD=2gbubble.so <program>

#include <sys/mman.h>
#include <assert.h>

void __attribute__((constructor)) constr(void)
{
  assert(MAP_FAILED != mmap(1u >> 31, (1u >> 31) - (1u >> 20), PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0));
}

... เจ‡เจน เจธเฉฑเจš เจนเฉˆ เจ•เจฟ เจ‡เจน Valgrind เจจเจพเจฒ เจ…เจจเฉเจ•เฉ‚เจฒ เจจเจนเฉ€เจ‚ เจนเฉˆ, เจชเจฐ, เจ–เฉเจธเจผเจ•เจฟเจธเจฎเจคเฉ€ เจจเจพเจฒ, Valgrind เจ–เฉเจฆ เจฌเจนเฉเจค เจชเฉเจฐเจญเจพเจตเจธเจผเจพเจฒเฉ€ เจขเฉฐเจ— เจจเจพเจฒ เจนเจฐ เจ•เจฟเจธเฉ‡ เจจเฉ‚เฉฐ เจ‰เจฅเฉ‹เจ‚ เจฌเจพเจนเจฐ เจงเฉฑเจ•เจฆเจพ เจนเฉˆ :)

เจธเจผเจพเจ‡เจฆ เจ•เฉ‹เจˆ เจ‡เจธ เจ—เฉฑเจฒ เจฆเฉ€ เจฌเจฟเจนเจคเจฐ เจตเจฟเจ†เจ–เจฟเจ† เจ•เจฐเฉ‡เจ—เจพ เจ•เจฟ เจฎเฉ‡เจฐเจพ เจ‡เจน เจ•เฉ‹เจก เจ•เจฟเจตเฉ‡เจ‚ เจ•เฉฐเจฎ เจ•เจฐเจฆเจพ เจนเฉˆ ...

เจธเจฐเฉ‹เจค: www.habr.com

เจ‡เฉฑเจ• เจŸเจฟเฉฑเจชเจฃเฉ€ เจœเฉ‹เฉœเฉ‹