āĻāĻ āϏāĻŽāϝāĻŧ āĻāĻŽāĻŋ āĻŽāĻāĻž āĻāϰāĻžāϰ āĻāύā§āϝ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϞāĻžāĻŽ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻŦāĻŋāĻĒāϰā§āϤāϤāĻž āĻĒā§āϰāĻŽāĻžāĻŖ āĻāϰā§āύ āĻāĻŦāĻ āĻŽā§āĻļāĻŋāύ āĻā§āĻĄ āĻĨā§āĻā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ (āĻāϰ⧠āϏāĻ āĻŋāĻāĻāĻžāĻŦā§, Asm.js) āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻšāϝāĻŧ āϤāĻž āĻļāĻŋāĻā§āύāĨ¤ āĻĒāϰā§āĻā§āώāĻžāϰ āĻāύā§āϝ QEMU āĻŦā§āĻā§ āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŦāĻ āĻāĻŋāĻā§ āϏāĻŽāϝāĻŧ āĻĒāϰ⧠āĻšāĻžāĻŦāϰā§āϰ āĻāĻĒāϰ āĻāĻāĻāĻŋ āύāĻŋāĻŦāύā§āϧ āϞā§āĻāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻŽāύā§āϤāĻŦā§āϝ⧠āĻāĻŽāĻžāĻā§ WebAssembly-āĻ āĻĒā§āϰā§āĻā§āĻā§āĻāĻāĻŋ āϰāĻŋāĻŽā§āĻ āĻāϰāĻžāϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ āĻāĻŦāĻ āĻāĻŽāύāĻāĻŋ āύāĻŋāĻā§āĻā§ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāĻžāϝāĻŧ āϏāĻŽāĻžāĻĒā§āϤ āĻāĻŽāĻŋ āĻā§āύā§āĻāĻžāĻŦā§ āĻĒā§āϰāĻāϞā§āĻĒāĻāĻŋ āĻāĻžāĻāύāĻŋ... āĻāĻžāĻ āĻāϞāĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āĻā§āĻŦ āϧā§āϰ⧠āϧā§āϰā§, āĻāĻŦāĻ āĻāĻāύ, āϏāĻŽā§āĻĒā§āϰāϤāĻŋ āϏā§āĻ āύāĻŋāĻŦāύā§āϧ⧠āĻšāĻžāĻāĻŋāϰ āĻŦāĻŋāώāϝāĻŧā§āϰ āĻāĻĒāϰ "āϤāĻžāĻšāϞ⧠āĻāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻļā§āώ āĻšāϞ?" āĻāĻŽāĻžāϰ āĻŦāĻŋāϏā§āϤāĻžāϰāĻŋāϤ āĻāϤā§āϤāϰā§āϰ āĻāĻŦāĻžāĻŦā§, āĻāĻŽāĻŋ āĻļā§āύā§āĻāĻŋ "āĻāĻāĻŋ āĻāĻāĻāĻŋ āύāĻŋāĻŦāύā§āϧā§āϰ āĻŽāϤ⧠āĻļā§āύāĻžāĻā§āĻā§āĨ¤" āĻāĻžāϞ, āĻāĻĒāύāĻŋ āϝāĻĻāĻŋ āĻĒāĻžāϰā§āύ, āĻāĻāĻāĻŋ āύāĻŋāĻŦāύā§āϧ āĻšāĻŦā§. āĻšāϝāĻŧāϤ⧠āĻā§āĻ āĻāĻāĻž āĻĻāϰāĻāĻžāϰ⧠āĻā§āĻāĻā§ āĻĒāĻžāĻŦā§āύ. āĻāĻāĻŋ āĻĨā§āĻā§ āĻĒāĻžāĻ āĻ QEMU āĻā§āĻĄ āĻā§āύāĻžāϰā§āĻļāύ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄā§āϰ āĻĄāĻŋāĻāĻžāĻāύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻŋāĻā§ āϤāĻĨā§āϝ āĻļāĻŋāĻāĻŦā§, āϏā§āĻāϏāĻžāĻĨā§ āĻā§āĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻāĻžāϏā§āĻ-āĻāύ-āĻāĻžāĻāĻŽ āĻāĻŽā§āĻĒāĻžāĻāϞāĻžāϰ āϞāĻŋāĻāϤ⧠āĻšāϝāĻŧāĨ¤
āĻāϰā§āĻŽ
āϝā§āĻšā§āϤ⧠āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻļāĻŋāĻā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§ QEMU āĻĒā§āϰā§āĻ āĻāϰāϤ⧠āĻšāϝāĻŧ, āĻāĻāĻŦāĻžāϰ āĻāĻāĻŋ āĻŦā§āĻĻā§āϧāĻŋāĻŽāĻžāύā§āϰ āϏāĻžāĻĨā§ āĻāϰāĻžāϰ āĻāĻŦāĻ āĻĒā§āϰāĻžāύ⧠āĻā§āϞā§āϰ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āύāĻž āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύā§āĻāϝāĻŧāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤
āϤā§āϰā§āĻāĻŋ āύāĻŽā§āĻŦāϰ āĻāĻ: āĻŦāĻŋāύā§āĻĻā§ āĻĒā§āϰāĻāĻžāĻļ āĻĨā§āĻā§ āĻļāĻžāĻāĻž
āĻāĻŽāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻā§āϞ āĻāĻŋāϞ āĻāĻĒāϏā§āĻā§āϰāĻŋāĻŽ āϏāĻāϏā§āĻāϰāĻŖ 2.4.1 āĻĨā§āĻā§ āĻāĻŽāĻžāϰ āϏāĻāϏā§āĻāϰāĻŖāĻāĻŋ āĻĢā§āϰā§āĻ āĻāϰāĻžāĨ¤ āϤāĻžāϰāĻĒāϰ⧠āĻāĻāĻŋ āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻžāϞ āϧāĻžāϰāĻŖāĻž āĻŦāϞ⧠āĻŽāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ: āϝāĻĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻ āϰāĻŋāϞāĻŋāĻ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻĨāĻžāĻā§ āϤāĻŦā§ āĻāĻāĻŋ āϏāĻŽā§āĻāĻŦāϤ āϏāĻžāϧāĻžāϰāĻŖ 2.4 āĻāϰ āĻā§āϝāĻŧā§ āĻāϰāĻ āϏā§āĻĨāĻŋāϤāĻŋāĻļā§āϞ āĻāĻŦāĻ āĻāϰāĻ āĻŦā§āĻļāĻŋ āĻļāĻžāĻāĻž master. āĻāĻŦāĻ āϝā§āĻšā§āϤ⧠āĻāĻŽāĻŋ āĻāĻŽāĻžāϰ āύāĻŋāĻā§āϰ āĻŦāĻžāĻāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āύā§āϝāĻžāϝā§āϝ āĻĒāϰāĻŋāĻŽāĻžāĻŖ āϝā§āĻ āĻāϰāĻžāϰ āĻĒāϰāĻŋāĻāϞā§āĻĒāύāĻž āĻāϰā§āĻāĻŋ, āϤāĻžāĻ āĻāĻŽāĻžāϰ āĻ
āύā§āϝ āĻāĻžāϰā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻāĨ¤ āϝ⧠āϏāĻŽā§āĻāĻŦāϤ āĻāĻāĻž āĻĒāϰāĻŋāĻŖāϤ āĻāĻŋāĻāĻžāĻŦā§. āĻāĻŋāύā§āϤ⧠āĻāĻāĻžāύ⧠āĻŦāĻŋāώāϝāĻŧ āĻšāϞ: QEMU āϏā§āĻĨāĻŋāϰ āĻĨāĻžāĻā§ āύāĻž, āĻāĻŦāĻ āĻāĻ āĻĒāϰā§āϝāĻžāϝāĻŧā§ āϤāĻžāϰāĻž āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻā§āĻĄā§āϰ 10 āĻļāϤāĻžāĻāĻļ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāύ āĻā§āώāĻŖāĻž āĻāϰā§āĻāĻŋāϞ⧎ "āĻšā§āϝāĻžāĻ, āĻāĻāύ āĻāĻŽāĻŋ āĻšāĻŋāĻŽāĻžāϝāĻŧāĻŋāϤ āĻāϰāϤ⧠āϝāĻžāĻā§āĻāĻŋ," āĻāĻŽāĻŋ āĻāĻžāĻŦāϞāĻžāĻŽ āĻāĻŦāĻ āĻā§āĻā§ āĻĒāĻĄāĻŧāϞāĻžāĻŽā§ˇ āĻāĻāĻžāύ⧠āĻāĻŽāĻžāĻĻā§āϰ āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āϰā§āĻļāύ āĻāϰāϤ⧠āĻšāĻŦā§: QEMU.js-āĻāϰ āĻāĻāĻ-āĻĨā§āϰā§āĻĄ āĻĒā§āϰāĻā§āϤāĻŋāϰ āĻāĻžāϰāĻŖā§ āĻāĻŦāĻ āĻāϏāϞ QEMU āĻŽāĻžāϞā§āĻāĻŋ-āĻĨā§āϰā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āĻ
āύā§āĻĒāϏā§āĻĨāĻŋāϤāĻŋāĻā§ āĻŦā§āĻāĻžāϝāĻŧ āύāĻž (āĻ
āϰā§āĻĨāĻžā§, āĻāĻāĻ āϏāĻžāĻĨā§ āĻāĻāĻžāϧāĻŋāĻ āϏāĻŽā§āĻĒāϰā§āĻāĻšā§āύ āĻā§āĻĄ āĻĒāĻžāĻĨ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāϰ āĻā§āώāĻŽāϤāĻž, āĻāĻŦāĻ āĻļā§āϧ⧠"āϏāĻŽāϏā§āϤ āĻāĻžāϰā§āύā§āϞ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§āύ") āύāϝāĻŧ, āĻāĻāĻŋāϰ āĻāύā§āϝ āĻā§āϰā§āϤā§āĻŦāĻĒā§āϰā§āĻŖ, āĻĨā§āϰā§āĻĄāĻā§āϞāĻŋāϰ āĻĒā§āϰāϧāĻžāύ āĻāĻžāĻāĻā§āϞāĻŋ āĻŦāĻžāĻāϰ⧠āĻĨā§āĻā§ āĻāϞ āĻāϰāϤ⧠āϏāĻā§āώāĻŽ āĻšāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻāĻŽāĻžāĻā§ "āĻāĻāĻŋ āĻāĻžāϞā§" āĻāϰāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻāĻāĻŋ āĻāĻāϤā§āϰā§āĻāϰāĻŖā§āϰ āϏāĻŽāϝāĻŧ āĻāĻŋāĻā§ āĻĒā§āϰāĻžāĻā§āϤāĻŋāĻ āϏāĻŽāϏā§āϝāĻž āϤā§āϰāĻŋ āĻāϰā§āĻāĻŋāϞāĨ¤ āϤāĻŦā§ āĻļāĻžāĻāĻž āĻĨā§āĻā§ āĻāĻŋāĻā§ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāύāĻžāϰ āĻāĻāύāĻžāĻ āĻāĻā§āĻā§ master, āϝāĻžāϰ āϏāĻžāĻĨā§ āĻāĻŽāĻŋ āĻāĻŽāĻžāϰ āĻā§āĻĄ āĻāĻāϤā§āϰāĻŋāϤ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰā§āĻāĻŋ, āĻĒāϝāĻŧā§āύā§āĻ āϰāĻŋāϞāĻŋāĻā§ (āĻāĻŦāĻ āϤāĻžāĻ āĻāĻŽāĻžāϰ āĻļāĻžāĻāĻžāϝāĻŧ) āĻā§āϰāĻŋāĻ āĻŦāĻžāĻāĻžāĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ āϏāĻŽā§āĻāĻŦāϤ āϏā§āĻŦāĻŋāϧāĻž āϝā§āĻ āĻāϰāĻž āĻšāϤ āύāĻžāĨ¤
āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ āϝ⧠āĻĒā§āϰā§āĻā§āĻāĻžāĻāĻĒāĻāĻŋ āĻĢā§āϞ⧠āĻĻā§āĻāϝāĻŧāĻž, āĻ
āĻāĻļāĻā§āϞāĻŋāϰ āĻāύā§āϝ āĻāĻāĻŋāĻā§ āĻāϞāĻžāĻĻāĻž āĻāϰāĻž āĻāĻŦāĻ āύāϤā§āύ āĻāĻŋāĻā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āϏā§āĻā§āϰā§āϝāĻžāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āύāϤā§āύ āϏāĻāϏā§āĻāϰāĻŖ āϤā§āϰāĻŋ āĻāϰāĻž āĻāĻāύāĻ āĻŦā§āϧāĻāĻŽā§āϝ āĻāĻŦāĻ āĻāĻāύ āĻĨā§āĻā§ master.
āĻā§āϞ āύāĻŽā§āĻŦāϰ āĻĻā§āĻ: TLP āĻĒāĻĻā§āϧāϤāĻŋ
āϏāĻāĻā§āώā§āĻĒā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āϞ āύāϝāĻŧ, āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, āĻāĻāĻŋ "āĻā§āĻĨāĻžāϝāĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āϏāϰāĻžāύ⧠āϝāĻžāϝāĻŧ?" āĻāĻŦāĻ āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ "āĻāĻŽāϰāĻž āĻāĻŋ āϏā§āĻāĻžāύ⧠āϝāĻžāĻŦ?" āĻāĻāϝāĻŧā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻā§āϞ āĻŦā§āĻāĻžāĻŦā§āĻāĻŋāϰ āĻļāϰā§āϤ⧠āĻāĻāĻāĻŋ āĻĒā§āϰāĻāϞā§āĻĒ āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻŽāĻžāϤā§āϰāĨ¤ āĻāĻ āĻ āĻŦāϏā§āĻĨāĻžāϰ āĻŽāϧā§āϝ⧠āĻāύāĻžāĻĄāĻŧāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻŋāĻ āĻāĻāĻāĻŋ āύā§āϝāĻžāϝāĻŧāϏāĻā§āĻāϤ āĻŦāĻŋāĻāϞā§āĻĒ āĻāĻŋāϞ, āĻāĻŋāύā§āϤā§, āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻŽāĻŋ āĻ āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻĒā§āύāϰāĻžāĻŦā§āϤā§āϤāĻŋ āĻāϰāϤ⧠āĻāĻžāĻāύāĻŋāĨ¤ āĻāĻāĻŦāĻžāϰ āĻāĻŽāĻŋ āĻŦā§āĻĻā§āϧāĻŋāĻŽāĻžāύā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻŋ āĻāϰāϤ⧠āĻā§āϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ: āĻĒāĻžāϰāĻŽāĻžāĻŖāĻŦāĻŋāĻ āĻāĻŽāĻŋāĻ, āϏāĻā§āϤāύ āĻā§āĻĄ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ (āĻāĻŦāĻ "āĻāĻāĻž āĻāĻŽā§āĻĒāĻžāĻāϞ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ (āϏāϤāϰā§āĻāϤāĻž āϏāĻš) āϰā§āϝāĻžāύā§āĻĄāĻŽ āĻ āĻā§āώāϰāĻā§ āĻāĻāϤā§āϰ⧠āϏā§āĻā§āϰāĻŋāĻ āĻāϰāĻž āύāϝāĻŧ", āϝā§āĻŽāύāĻāĻŋ āϞāĻŋāύāĻžāϏ āĻāϰāĻāĻžāϞā§āĻĄāϏ āĻāĻāĻŦāĻžāϰ āĻāĻāĻāĻŋāĻā§āĻ āĻ āύā§āϏāĻžāϰ⧠āĻāĻžāϰāĻ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦāϞā§āĻāĻŋāϞā§āύ) āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤
āĻā§āϞ āύāĻŽā§āĻŦāϰ āϤāĻŋāύ: āĻĢā§āϰā§āĻĄ āύāĻž āĻā§āύ⧠āĻāϞ⧠āύāĻžāĻŽāĻž
āĻāĻŽāĻŋ āĻāĻāύāĻ āĻāĻāĻŋ āĻĨā§āĻā§ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āĻĒāϰāĻŋāϤā§āϰāĻžāĻŖ āĻĒāĻžāĻāύāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻāύ āĻāĻŽāĻŋ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ āϝ⧠āύā§āϝā§āύāϤāĻŽ āĻĒā§āϰāϤāĻŋāϰā§āϧā§āϰ āĻĒāĻĨ āĻ āύā§āϏāϰāĻŖ āĻāϰāĻŦ āύāĻž, āĻāĻŦāĻ āĻāĻāĻŋ "āĻŦāĻĄāĻŧ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻĒāĻžāϝāĻŧ" āĻāϰāĻŦ, āϝāĻĨāĻž, āϏā§āĻā§āϰā§āϝāĻžāĻ āĻĨā§āĻā§ āĻāĻŽāĻžāϰ TCG āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āϞāĻŋāĻāĻŦ, āϝāĻžāϤ⧠āύāĻž āĻšāϝāĻŧ āĻĒāϰ⧠āĻŦāϞāϤ⧠āĻšāĻŦā§, "āĻšā§āϝāĻžāĻ, āĻāĻāĻŋ āĻ āĻŦāĻļā§āϝāĻ, āϧā§āϰ⧠āϧā§āϰā§, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻŋ āϏāĻŦāĻāĻŋāĻā§ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋ āύāĻž - āĻāĻāĻžāĻŦā§āĻ TCI āϞā§āĻāĻž āĻšāϝāĻŧ..." āĻ āϧāĻŋāĻāύā§āϤā§, āĻāĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āϏā§āϏā§āĻĒāώā§āĻ āϏāĻŽāĻžāϧāĻžāύā§āϰ āĻŽāϤ⧠āĻŽāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ, āϝā§āĻšā§āϤ⧠āĻāĻŽāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻŋ. āϝā§āĻŽāύ āϤāĻžāϰāĻž āĻŦāϞā§, âāĻā§āύā§āĻ āĻāĻĄāĻŧā§ āĻšāϝāĻŧā§āĻā§Ņ, āĻāĻŋāύā§āϤ⧠āϏā§āĻāĻž āύāϝāĻŧâ: āĻā§āĻĄāĻāĻŋ āĻ āĻŦāĻļā§āϝāĻ āĻŦāĻžāĻāύāĻžāϰāĻŋ, āĻāĻŋāύā§āϤ⧠āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āϏāĻšāĻāĻāĻžāĻŦā§ āĻāϤ⧠āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰāĻŋāϤ āĻāϰāĻž āϝāĻžāϝāĻŧ āύāĻž - āĻāĻāĻŋāĻā§ āĻ āĻŦāĻļā§āϝāĻ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āϏāĻāĻāϞāύā§āϰ āĻāύā§āϝ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āĻĒā§āĻļ āĻāϰāϤ⧠āĻšāĻŦā§, āϝāĻžāϰ āĻĢāϞ⧠JS āĻŦāĻŋāĻļā§āĻŦ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŦāϏā§āϤā§, āϝāĻž āĻāĻāύāĻ āĻĒā§āϰāϝāĻŧā§āĻāύāĨ¤ āĻā§āĻĨāĻžāĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāĻŦā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, āϏāĻžāϧāĻžāϰāĻŖ RISC āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰā§, āϝāϤāĻĻā§āϰ āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŋ, āĻāĻāĻāĻŋ āϏāĻžāϧāĻžāϰāĻŖ āĻĒāϰāĻŋāϏā§āĻĨāĻŋāϤāĻŋ āĻšāϞ āĻĒā§āύāϰā§āϤā§āĻĒāĻžāĻĻāĻŋāϤ āĻā§āĻĄā§āϰ āĻāύā§āϝ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āĻā§āϝāĻžāĻļā§ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āϰāĻŋāϏā§āĻ āĻāϰāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ - āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύāĻž āĻšāϝāĻŧ, āϤāĻŦā§, āϝā§āĻā§āύ⧠āĻā§āώā§āϤā§āϰā§, āĻāĻāĻŋ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋāĨ¤ āĻāĻĒāϰāύā§āϤā§, āĻāĻŽāĻžāϰ āĻļā§āώ āĻĒā§āϰāĻā§āώā§āĻāĻž āĻĨā§āĻā§, āĻāĻŽāĻŋ āĻļāĻŋāĻā§āĻāĻŋ āϝ⧠āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖāĻāĻŋ āĻ āύā§āĻŦāĻžāĻĻ āĻŦā§āϞāĻā§āϰ āĻŽāĻžāĻāĻāĻžāύ⧠āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ āĻŦāϞ⧠āĻŽāύ⧠āĻšāĻā§āĻā§ āύāĻž, āϤāĻžāĻ āĻāĻŽāĻžāĻĻā§āϰ āϏāϤā§āϝāĻŋāĻ āĻā§āύ⧠āĻ āĻĢāϏā§āĻ āĻĨā§āĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āĻŦāĻžāĻāĻāĻā§āĻĄā§āϰ āĻĒā§āϰāϝāĻŧā§āĻāύ āύā§āĻ āĻāĻŦāĻ āĻāĻŽāϰāĻž āĻāĻāĻŋ āĻāĻŋāĻŦāĻŋ-āϤ⧠āĻĢāĻžāĻāĻļāύ āĻĨā§āĻā§ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāĨ¤ .
āϤāĻžāϰāĻž āĻāϏ⧠āϞāĻžāĻĨāĻŋ āĻŽāĻžāϰāϞ
āϝāĻĻāĻŋāĻ āĻāĻŽāĻŋ āĻā§āϞāĻžāĻ āĻŽāĻžāϏ⧠āĻā§āĻĄāĻāĻŋ āĻāĻŦāĻžāϰ āϞāĻŋāĻāϤ⧠āĻļā§āϰ⧠āĻāϰāĻŋ, āĻāĻāĻāĻŋ āĻŽā§āϝāĻžāĻāĻŋāĻ āĻāĻŋāĻ āĻ āϞāĻā§āώā§āϝ⧠āϤā§āϰāĻŋ āĻšāϝāĻŧā§āĻāĻŋāϞ: āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻŋāĻāĻšāĻžāĻŦ āĻĨā§āĻā§ āĻāĻŋāĻ āĻŋāĻā§āϞāĻŋ āĻāϏā§āϝ⧠āĻāĻŦāĻ āĻĒā§āϞ āĻ āύā§āϰā§āϧā§āϰ āĻĒā§āϰāϤāĻŋāĻā§āϰāĻŋāϝāĻŧāĻž āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦāĻŋāĻā§āĻāĻĒā§āϤāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻāϏā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻžāύā§, āĻšāĻ āĻžā§ āĻĨā§āϰā§āĻĄā§ āĻāϞā§āϞā§āĻ āĻāϰā§āύ āĻĒā§āϰāϏāĻā§āĻā§, "āϤāĻŋāύāĻŋ āĻāĻŽāύ āĻāĻŋāĻā§ āĻāϰā§āĻāĻŋāϞā§āύ, āĻšāϝāĻŧāϤ⧠āϤāĻŋāύāĻŋ āĻāĻŋāĻā§ āĻŦāϞāĻŦā§āύāĨ¤" āĻāĻŽāϰāĻž Emscripten āĻāϰ āϏāĻŽā§āĻĒāϰā§āĻāĻŋāϤ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāĻĨāĻž āĻŦāϞāĻāĻŋāϞāĻžāĻŽ WASM JIT āϤā§āϰāĻŋ āĻāϰāϤā§āĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻāĻŽāĻŋ āĻŦāϞā§āĻāĻŋāϞāĻžāĻŽ āϝ⧠āĻāĻĒāύāĻžāϰ āϏā§āĻāĻžāύ⧠Apache 2.0 āϞāĻžāĻāϏā§āύā§āϏ āĻāĻā§, āĻāĻŦāĻ QEMU āϏāĻžāĻŽāĻā§āϰāĻŋāĻāĻāĻžāĻŦā§ GPLv2 āĻāϰ āĻ āϧā§āύ⧠āĻŦāĻŋāϤāϰāĻŖ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāĻŦāĻ āϤāĻžāϰāĻž āĻā§āĻŦ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āύāϝāĻŧāĨ¤ āĻšāĻ āĻžā§ āĻĻā§āĻāĻž āĻā§āϞ āϞāĻžāĻāϏā§āύā§āϏ āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻāĻāĻž āĻāĻāϰāĻāĻŽ āĻ āĻŋāĻ āĻāϰā§āύ (āĻāĻŽāĻŋ āĻāĻžāύāĻŋ āύāĻž: āĻšāϝāĻŧāϤ⧠āĻāĻāĻŋ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰā§āύ, āĻšāϤ⧠āĻĒāĻžāϰ⧠āĻĻā§āĻŦā§āϤ āϞāĻžāĻāϏā§āύā§āϏāĻŋāĻ, āĻšāϝāĻŧāϤ⧠āĻ āύā§āϝ āĻāĻŋāĻā§...)āĨ¤ āĻāĻāĻŋ āĻ āĻŦāĻļā§āϝāĻ āĻāĻŽāĻžāĻā§ āĻā§āĻļāĻŋ āĻāϰā§āĻā§, āĻāĻžāϰāĻŖ āϤāϤāĻā§āώāĻŖā§ āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāύāĻŋāώā§āĻ āĻāĻžāĻŦā§ āĻĻā§āĻā§āĻāĻŋ WebAssembly, āĻāĻŦāĻ āĻāĻŽāĻŋ āĻāĻāϰāĻāĻŽ āĻĻā§: āĻāĻŋāϤ āĻāĻŦāĻ āĻŦā§āϧāĻāĻŽā§āϝ āĻāĻŋāϞ. āĻāĻāĻāĻŋ āϞāĻžāĻāĻŦā§āϰā§āϰāĻŋāĻ āĻāĻŋāϞ āϝāĻž āĻā§āϰāĻžāύāĻāĻŋāĻļāύ āĻā§āϰāĻžāĻĢā§āϰ āϏāĻžāĻšāĻžāϝā§āϝ⧠āĻŽā§āϞāĻŋāĻ āĻŦā§āϞāĻāĻā§āϞāĻŋāĻā§ āĻā§āϰāĻžāϏ āĻāϰāĻŦā§, āĻŦāĻžāĻāĻāĻā§āĻĄ āϤā§āϰāĻŋ āĻāϰāĻŦā§ āĻāĻŦāĻ āĻāĻŽāύāĻāĻŋ āĻĒā§āϰāϝāĻŧā§āĻāύ⧠āĻĻā§āĻāĻžāώā§āϤ⧠āύāĻŋāĻā§āĻ āĻāĻžāϞāĻžāĻŦā§āĨ¤
āϤāĻžāϰāĻĒāϰ āĻāϰ⧠āĻāĻŋāϞ QEMU āĻŽā§āϞāĻŋāĻ āϞāĻŋāϏā§āĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻāĻ āĻĒā§āϰāĻļā§āύ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻāϰāĻ āĻŦā§āĻļāĻŋ, "āϝāĻžāĻāĻšā§āĻ āĻāĻāĻŋ āĻāĻžāϰ āĻĒā§āϰāϝāĻŧā§āĻāύ?" āĻāĻŦāĻ āĻāĻāĻž āĻāϰāĻž āĻšāϝāĻŧ āĻšāĻ āĻžā§, āĻāĻāĻž āĻĒā§āϰāϝāĻŧā§āĻāύā§āϝāĻŧ āĻāĻŋāϞ āĻĒāϰāĻŋāĻŖāϤ. āύā§āϝā§āύāϤāĻŽ, āĻāĻĒāύāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻžāϰ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āϏāĻŽā§āĻāĻžāĻŦāύāĻžāĻā§āϞāĻŋ āĻāĻāϏāĻžāĻĨā§ āϏā§āĻā§āϰā§āϝāĻžāĻĒ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āϝāĻĻāĻŋ āĻāĻāĻŋ āĻāĻŽāĻŦā§āĻļāĻŋ āĻĻā§āϰā§āϤ āĻāĻžāĻ āĻāϰā§:
- āĻā§āύ⧠āĻāύāϏā§āĻāϞā§āĻļāύ āĻāĻžāĻĄāĻŧāĻžāĻ āĻļāĻŋāĻā§āώāĻžāĻŽā§āϞāĻ āĻāĻŋāĻā§ āĻāĻžāϞ⧠āĻāϰāĻž
- āĻāĻāĻāĻāϏ-āĻ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞāĻžāĻāĻā§āĻļāύ, āϝā§āĻāĻžāύ⧠āĻā§āĻāĻŦ āĻ āύā§āϏāĻžāϰā§, āĻāĻāĻŽāĻžāϤā§āϰ āĻ ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ āϝāĻž āĻĢā§āϞāĻžāĻāϤ⧠āĻā§āĻĄ āĻā§āύāĻžāϰā§āĻļāύ āĻāϰāĻžāϰ āĻ āϧāĻŋāĻāĻžāϰ āϰāĻžāĻā§ āϤāĻž āĻšāϞ āĻāĻāĻāĻŋ āĻā§āĻāϏ āĻāĻā§āĻāĻŋāύ (āĻāĻāĻŋ āĻāĻŋ āϏāϤā§āϝ?)
- āĻŽāĻŋāύāĻŋ-āĻāĻāϏ-āĻāϰ āĻĒā§āϰāĻĻāϰā§āĻļāύ - āĻāĻāĻ-āĻĢā§āϞāĻĒāĻŋ, āĻ āύā§āϤāϰā§āύāĻŋāϰā§āĻŽāĻŋāϤ, āϏāĻŦ āϧāϰāĻŖā§āϰ āĻĢāĻžāϰā§āĻŽāĻāϝāĻŧā§āϝāĻžāϰ, āĻāϤā§āϝāĻžāĻĻāĻŋ...
āĻŦā§āϰāĻžāĻāĻāĻžāϰ āϰāĻžāύāĻāĻžāĻāĻŽ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ
āĻāĻŽāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻŦāϞā§āĻāĻŋ, QEMU āĻŽāĻžāϞā§āĻāĻŋāĻĨā§āϰā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āϏāĻžāĻĨā§ āĻāĻŦāĻĻā§āϧ, āϤāĻŦā§ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āĻāĻāĻŋ āύā§āĻāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āϝā§, āύāĻž... āĻĒā§āϰāĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻā§āĻŦāĻžāϰā§āĻ āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻāĻŋāϞ āύāĻž, āϤāĻžāϰāĻĒāϰ⧠āĻāϝāĻŧā§āĻŦāĻāϝāĻŧāĻžāϰā§āĻāĻžāϰāϰāĻž āĻšāĻžāĻāĻŋāϰ - āϝāϤāĻĻā§āϰ āĻāĻŽāĻŋ āĻŦā§āĻāĻŋ, āĻāĻāĻŋ āĻŦāĻžāϰā§āϤāĻž āĻĒāĻžāϏ āĻāϰāĻžāϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻŽāĻžāϞā§āĻāĻŋāĻĨā§āϰā§āĻĄāĻŋāĻ āĻāĻžāĻ āĻāϰāĻž āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻžāĻĄāĻŧāĻž. āϏā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻžāĻ āĻāϰāĻž āĻŽā§āĻŽāϰāĻŋ āĻŽāĻĄā§āϞā§āϰ āĻāĻĒāϰ āĻāĻŋāϤā§āϤāĻŋ āĻāϰ⧠āĻŦāĻŋāĻĻā§āϝāĻŽāĻžāύ āĻā§āĻĄ āĻĒā§āϰā§āĻ āĻāϰāĻžāϰ āϏāĻŽāϝāĻŧ āĻāĻāĻŋ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āϏāĻŽāϏā§āϝāĻž āϤā§āϰāĻŋ āĻāϰā§āĨ¤ āϤāĻžāϰāĻĒāϰ āĻāύāĻāĻŖā§āϰ āĻāĻžāĻĒā§ āύāĻžāĻŽā§ āϤāĻž āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύāĻ āĻāϰāĻž āĻšāϝāĻŧ SharedArrayBuffers. āĻāĻāĻŋ āϧā§āϰ⧠āϧā§āϰ⧠āĻāĻžāϞ⧠āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āϤāĻžāϰāĻž āĻŦāĻŋāĻāĻŋāύā§āύ āĻŦā§āϰāĻžāĻāĻāĻžāϰ⧠āĻāϰ āĻĒā§āϰāĻŦāϰā§āϤāύ āĻāĻĻāϝāĻžāĻĒāύ āĻāϰā§āĻāĻŋāϞ, āϤāĻžāϰāĻĒāϰ⧠āϤāĻžāϰāĻž āύāĻŦāĻŦāϰā§āώ āĻāĻĻāϝāĻžāĻĒāύ āĻāϰā§āĻāĻŋāϞ, āĻāĻŦāĻ āϤāĻžāϰāĻĒāϰ⧠āĻŽā§āϞā§āĻāĻĄāĻžāĻāύ... āϝāĻžāϰ āĻĒāϰ⧠āϤāĻžāϰāĻž āĻāĻ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ⧠āĻĒā§āĻāĻā§āĻāĻŋāϞ āϝ⧠āϏāĻŽāϝāĻŧ āĻĒāϰāĻŋāĻŽāĻžāĻĒ āĻŽā§āĻāĻž āĻŦāĻž āĻŽā§āĻāĻž, āĻāĻŋāύā§āϤ⧠āĻāĻžāĻ āĻāϰāĻž āϏā§āĻŽā§āϤāĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĨā§āϰā§āĻĄ āĻāĻžāĻāύā§āĻāĻžāϰ āĻŦā§āĻĻā§āϧāĻŋ, āĻāĻāĻž āϏāĻŦ āĻāĻāĻ . āϤāĻžāĻ āĻāĻŽāϰāĻž āĻļā§āϝāĻŧāĻžāϰ āĻāϰāĻž āĻŽā§āĻŽāϰāĻŋāϰ āϏāĻžāĻĨā§ āĻŽāĻžāϞā§āĻāĻŋāĻĨā§āϰā§āĻĄāĻŋāĻ āύāĻŋāώā§āĻā§āϰāĻŋāϝāĻŧ āĻāϰā§āĻāĻŋāĨ¤ āĻŽāύ⧠āĻšāĻā§āĻā§ āϤāĻžāϰāĻž āĻĒāϰ⧠āĻāĻāĻŋāĻā§ āĻāĻŦāĻžāϰ āĻāĻžāϞ⧠āĻāϰā§āĻā§, āĻāĻŋāύā§āϤā§, āĻĒā§āϰāĻĨāĻŽ āĻĒāϰā§āĻā§āώāĻž āĻĨā§āĻā§ āĻāĻāĻŋ āϏā§āĻĒāώā§āĻ āĻšāϝāĻŧā§ āĻā§āĻā§, āĻāĻāĻŋ āĻāĻžāĻĄāĻŧāĻž āĻā§āĻŦāύ āĻāĻā§ āĻāĻŦāĻ āϝāĻĻāĻŋ āϤāĻžāĻ āĻšāϝāĻŧ, āĻāĻŽāϰāĻž āĻŽāĻžāϞā§āĻāĻŋāĻĨā§āϰā§āĻĄāĻŋāĻāϝāĻŧā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āύāĻž āĻāϰ⧠āĻāĻāĻŋ āĻāϰāĻžāϰ āĻā§āώā§āĻāĻž āĻāϰāĻŦāĨ¤
āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧ āĻŦā§āĻļāĻŋāώā§āĻā§āϝāĻāĻŋ āĻšāϞ āϏā§āĻā§āϝāĻžāĻā§āϰ āϏāĻžāĻĨā§ āύāĻŋāĻŽā§āύ-āϏā§āϤāϰā§āϰ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻļāύā§āϰ āĻ āϏāĻŽā§āĻāĻŦāϤāĻž: āĻāĻĒāύāĻŋ āϏāĻšāĻāĻāĻžāĻŦā§ āύāĻŋāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻž, āĻŦāϰā§āϤāĻŽāĻžāύ āĻĒā§āϰāϏāĻā§āĻ āϏāĻāϰāĻā§āώāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āĻāĻŦāĻ āĻāĻāĻāĻŋ āύāϤā§āύ āϏā§āĻā§āϝāĻžāĻā§āϰ āϏāĻžāĻĨā§ āĻāĻāĻāĻŋ āύāϤā§āύāĻāĻŋāϤ⧠āϏā§āϝā§āĻāĻ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŦā§āύ āύāĻžāĨ¤ āĻāϞ āϏā§āĻā§āϝāĻžāĻ JS āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻŽā§āĻļāĻŋāύ āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻŽāύ⧠āĻšāĻŦā§, āϏāĻŽāϏā§āϝāĻž āĻā§, āϝā§āĻšā§āϤ⧠āĻāĻŽāϰāĻž āĻāĻāύāĻ āĻĒā§āϰā§āĻŦā§āϰ āĻĒā§āϰāĻŦāĻžāĻšāĻā§āϞāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āĻŽā§āϝāĻžāύā§āϝāĻŧāĻžāϞāĻŋ āĻĒāϰāĻŋāĻāĻžāϞāύāĻž āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ? āĻāϏāϞ āĻŦāĻŋāώāϝāĻŧāĻāĻŋ āĻšāϞ āϝ⧠QEMU-āϤ⧠āĻŦā§āϞāĻ I/O āĻĒā§āϰāϝāĻŧā§āĻ āĻāϰāĻž āĻšāϝāĻŧ āĻā§āϰā§āĻāĻŋāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻāĻŦāĻ āĻāĻāĻžāύā§āĻ āύāĻŋāĻŽā§āύ-āϏā§āϤāϰā§āϰ āϏā§āĻā§āϝāĻžāĻ āĻŽā§āϝāĻžāύāĻŋāĻĒā§āϞā§āĻļāύāĻā§āϞāĻŋ āĻāĻžāĻā§ āĻāϏāĻŦā§āĨ¤ āϏā§āĻāĻžāĻā§āϝāĻŦāĻļāϤ, Emscipten-āĻ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ āĻ ā§āϝāĻžāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāύā§āϝ āĻāĻāĻāĻŋ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āϰāϝāĻŧā§āĻā§, āĻāĻŽāύāĻāĻŋ āĻĻā§āĻāĻŋ: и . āĻĒā§āϰāĻĨāĻŽāĻāĻŋ āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻā§āĻĄā§ āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āĻŦā§āϞā§āĻā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰ⧠āĻāĻŦāĻ āĻāĻāĻŋ āĻāϰ āϏāĻŽāϰā§āĻĨāĻŋāϤ āύāϝāĻŧāĨ¤ āĻĻā§āĻŦāĻŋāϤā§āϝāĻŧāĻāĻŋ āĻŦāϰā§āϤāĻŽāĻžāύ "āϏāĻ āĻŋāĻ āĻāĻĒāĻžāϝāĻŧ" āĻāĻŦāĻ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻĻā§āĻāĻžāώā§āϰ āĻāύā§āϝ āĻŦāĻžāĻāĻāĻā§āĻĄ āĻĒā§āϰāĻāύā§āĻŽā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāĻ āĻāϰā§āĨ¤ āĻāĻāĻŋ āĻ āĻŦāĻļā§āϝāĻ āϧā§āϰ⧠āϧā§āϰ⧠āĻāĻžāĻ āĻāϰā§, āϤāĻŦā§ āĻāĻāĻŋ āĻā§āĻĄāĻāĻŋ āĻĢā§āϞāĻžāĻŦā§ āύāĻžāĨ¤ āϏāϤā§āϝ, āĻāĻ āĻŽā§āĻāĻžāύāĻŋāĻāĻŽā§āϰ āĻāύā§āϝ āĻā§āϰā§āĻāĻŋāύāĻā§āϞāĻŋāϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāύ āϏā§āĻŦāĻžāϧā§āύāĻāĻžāĻŦā§ āĻ āĻŦāĻĻāĻžāύ āϰāĻžāĻāϤ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ (āĻāĻāĻžāύ⧠āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ Asyncify-āĻāϰ āĻāύā§āϝ āĻā§āϰā§āĻāĻŋāύāĻā§āϞāĻŋ āϞā§āĻāĻž āĻāĻŋāϞ āĻāĻŦāĻ Emterpreter-āĻāϰ āĻāύā§āϝ āĻĒā§āϰāĻžāϝāĻŧ āĻāĻāĻ API āĻāϰ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ āĻāĻŋāϞ, āĻāĻĒāύāĻžāĻā§ āĻā§āĻŦāϞ āϏā§āĻā§āϞāĻŋāĻā§ āϏāĻāϝā§āĻā§āϤ āĻāϰāϤ⧠āĻšāĻŦā§)āĨ¤
āĻāĻ āĻŽā§āĻšā§āϰā§āϤā§, āĻāĻŽāĻŋ āĻāĻāύāĻ āĻā§āĻĄāĻāĻŋāĻā§ WASM-āĻ āϏāĻāĻāϞāĻŋāϤ āĻāĻāĻāĻŋāϤ⧠āĻŦāĻŋāĻāĻā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰāĻŋāύāĻŋ āĻāĻŦāĻ Emterpreter āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰā§āĻāĻŋ, āϤāĻžāĻ āĻŦā§āϞāĻ āĻĄāĻŋāĻāĻžāĻāϏāĻā§āϞāĻŋ āĻāĻāύāĻ āĻāĻžāĻ āĻāϰ⧠āύāĻž (āĻĒāϰāĻŦāϰā§āϤ⧠āϏāĻŋāϰāĻŋāĻā§ āĻĻā§āĻā§āύ, āϝā§āĻŽāύ āϤāĻžāϰāĻž āĻŦāϞā§...)āĨ¤ āĻ āϰā§āĻĨāĻžā§, āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻĒāύāĻžāϰ āĻāĻ āĻŽāĻāĻžāϰ āϏā§āϤāϰāϝā§āĻā§āϤ āĻāĻŋāύāĻŋāϏāĻāĻŋāϰ āĻŽāϤ⧠āĻāĻŋāĻā§ āĻĒāĻžāĻāϝāĻŧāĻž āĻāĻāĻŋāϤ:
- āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻž āĻŦā§āϞāĻ I/OāĨ¤ āĻāĻā§āĻāĻž, āĻāĻĒāύāĻŋ āĻāĻŋ āϏāϤā§āϝāĻŋāĻ āύā§āĻāĻŋāĻ āĻĒāĻžāϰāĻĢāϰāĻŽā§āϝāĻžāύā§āϏ āϏāĻš āĻ āύā§āĻāϰāĻŖ āĻāϰāĻž NVMe āĻāĻļāĻž āĻāϰā§āĻāĻŋāϞā§āύ? đ
- āϏā§āĻĨāĻŋāϰāĻāĻžāĻŦā§ āϏāĻāĻāϞāĻŋāϤ āĻĒā§āϰāϧāĻžāύ QEMU āĻā§āĻĄ (āĻ āύā§āĻŦāĻžāĻĻāĻ, āĻ āύā§āϝāĻžāύā§āϝ āĻ āύā§āĻāϰāĻŖ āĻāϰāĻž āĻĄāĻŋāĻāĻžāĻāϏ, āĻāϤā§āϝāĻžāĻĻāĻŋ)
- āĻĄāĻžāĻāύāĻžāĻŽāĻŋāĻā§āϝāĻžāϞāĻŋ āĻā§āϏā§āĻ āĻā§āĻĄ WASM āĻ āĻāĻŽā§āĻĒāĻžāĻāϞ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§
QEMU āĻā§āϏā§āϰ āĻŦā§āĻļāĻŋāώā§āĻā§āϝ
āĻāĻĒāύāĻŋ āϏāĻŽā§āĻāĻŦāϤ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻ āύā§āĻŽāĻžāύ āĻāϰā§āĻā§āύ, āĻā§āϏā§āĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻ āύā§āĻāϰāĻŖ āĻāϰāĻžāϰ āĻā§āĻĄ āĻāĻŦāĻ āĻšā§āϏā§āĻ āĻŽā§āĻļāĻŋāύ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āϤā§āϰāĻŋ āĻāϰāĻžāϰ āĻā§āĻĄ QEMU-āϤ⧠āĻāϞāĻžāĻĻāĻž āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤ āĻĒā§āϰāĻā§āϤāĻĒāĻā§āώā§, āĻāĻāĻŋ āĻāĻŽāύāĻāĻŋ āĻāĻāĻā§ āĻā§āĻļāϞā§:
- āĻā§āϏā§āĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ āĻāĻā§
- āĻšāϞ āĻāĻā§āϏāĻŋāϞāĻžāϰā§āĻāϰāĻ āϰā§āĻĨāĻžā§, āĻšāĻžāϰā§āĻĄāĻāϝāĻŧā§āϝāĻžāϰ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞāĻžāĻāĻā§āĻļāύā§āϰ āĻāύā§āϝ KVM Linux (āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āĻā§āϏā§āĻ āĻāĻŦāĻ āĻšā§āϏā§āĻ āϏāĻŋāϏā§āĻā§āĻŽā§āϰ āĻāύā§āϝ), āϝā§āĻā§āύ⧠āϏā§āĻĨāĻžāύ⧠āĻāĻžāϏā§āĻ-āĻāύ-āĻāĻžāĻāĻŽ āĻā§āĻĄ āĻā§āύāĻžāϰā§āĻļāύā§āϰ āĻāύā§āϝ TCGāĨ¤ QEMU 2.9 āĻĨā§āĻā§ āĻļā§āϰ⧠āĻāϰā§, HAXM āĻšāĻžāϰā§āĻĄāĻāϝāĻŧā§āϝāĻžāϰ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞāĻžāĻāĻā§āĻļāύ āϏā§āĻā§āϝāĻžāύā§āĻĄāĻžāϰā§āĻĄā§āϰ āĻāύā§āϝ āϏāĻŽāϰā§āĻĨāύ āĻĻā§āĻāĻž āϝāĻžāϝāĻŧ Windows ()
- āϝāĻĻāĻŋ TCG āĻšāĻžāϰā§āĻĄāĻāϝāĻŧā§āϝāĻžāϰ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞāĻžāĻāĻā§āĻļāύā§āϰ āĻĒāϰāĻŋāĻŦāϰā§āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āϤāĻžāĻšāϞ⧠āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻšā§āϏā§āĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰā§āϰ āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āϏāĻžāϰā§āĻŦāĻāύā§āύ āĻĻā§āĻāĻžāώā§āϰ āĻāύā§āϝ āĻāϞāĻžāĻĻāĻž āĻā§āĻĄ āĻā§āύāĻžāϰā§āĻļāύ āϏāĻŽāϰā§āĻĨāύ āϰāϝāĻŧā§āĻā§āĨ¤
- ... āĻāĻŦāĻ āĻāĻ āϏāĻŽāϏā§āϤ āĻāĻŋāĻā§āϰ āĻāĻžāϰāĻĒāĻžāĻļā§ - āĻ āύā§āĻāϰāĻŖ āĻāϰāĻž āĻĒā§āϰāĻŋāĻĢā§āϰāĻžāϞ, āĻāĻāĻāĻžāϰ āĻāύā§āĻāĻžāϰāĻĢā§āϏ, āĻŽāĻžāĻāĻā§āϰā§āĻļāύ, āϰā§āĻāϰā§āĻĄ-āϰāĻŋāĻĒā§āϞ⧠āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤
āϝāĻžāĻāĻšā§āĻ, āĻāĻĒāύāĻŋ āĻāĻŋ āĻāĻžāύā§āύ: QEMU āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āϏāĻŽā§āĻĒā§āϰā§āĻŖ āĻāĻŽā§āĻĒāĻŋāĻāĻāĻžāϰāĻ āύāϝāĻŧ, āĻšā§āϏā§āĻ āĻāĻžāϰā§āύā§āϞ⧠āĻāĻāĻāĻŋ āĻĒā§āĻĨāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰāĻāĻžāϰā§āϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāϰ āĻāύā§āϝ āĻĒā§āϰāϏā§āϏāϰāĻā§āĻ āĻ āύā§āĻāϰāĻŖ āĻāϰāϤ⧠āĻĒāĻžāϰā§, āϝāĻž āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ, āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻŦāĻžāĻāύāĻžāϰāĻŋ āϝāύā§āϤā§āϰā§āϰ āĻāύā§āϝ AFL fuzzer āĻĻā§āĻŦāĻžāϰāĻžāĨ¤ āϏāĻŽā§āĻāĻŦāϤ āĻā§āĻ JS āĻĨā§āĻā§ QEMU āĻāϰ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻāĻ āĻŽā§āĻĄāĻāĻŋ āĻĒā§āϰā§āĻ āĻāϰāϤ⧠āĻāĻžāύ? đ
āĻŦā§āĻļāĻŋāϰāĻāĻžāĻ āĻĻā§āϰā§āĻāϏā§āĻĨāĻžāϝāĻŧā§ āĻŦāĻŋāύāĻžāĻŽā§āϞā§āϝā§āϰ āϏāĻĢā§āĻāĻāϝāĻŧā§āϝāĻžāϰā§āϰ āĻŽāϤā§, QEMU āĻāϞā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧ configure и make. āϧāϰāĻž āϝāĻžāĻ āĻāĻĒāύāĻŋ āĻāĻŋāĻā§ āϝā§āĻ āĻāϰāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻā§āύ: āĻāĻāĻāĻŋ TCG āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ, āĻĨā§āϰā§āĻĄ āĻŦāĻžāϏā§āϤāĻŦāĻžāϝāĻŧāύ, āĻ
āύā§āϝ āĻāĻŋāĻā§āĨ¤ āĻ
āĻā§āĻāύāĻĢā§āϰ āϏāĻžāĻĨā§ āϝā§āĻāĻžāϝā§āĻā§āϰ āϏāĻŽā§āĻāĻžāĻŦāύāĻžāϝāĻŧ āĻā§āĻļāĻŋ/āĻāϝāĻŧāĻā§āĻāĻŋāϤ āĻšāĻāϝāĻŧāĻžāϰ āĻāύā§āϝ āϤāĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§ āĻāϰāĻŦā§āύ āύāĻž (āϝāĻĨāĻžāϝāĻĨāĻāĻžāĻŦā§ āĻāύā§āĻĄāĻžāϰāϞāĻžāĻāύ āĻāϰā§āύ) - āĻāϏāϞā§, configure QEMU āĻāϰ āĻĻā§āĻļā§āϝāϤ āϏā§āĻŦ-āϞāĻŋāĻāĻŋāϤ āĻāĻŦāĻ āĻāĻŋāĻā§ āĻĨā§āĻā§ āĻāϤā§āĻĒāύā§āύ āĻšāϝāĻŧ āύāĻžāĨ¤
WebAssembly
āϤāĻžāĻšāϞ⧠āĻāĻ āĻāĻŋāύāĻŋāϏāĻāĻŋāĻā§ WebAssembly (āĻāϰāĻĢā§ WASM) āĻŦāϞāĻž āĻšāϝāĻŧ āĻāĻŋ? āĻāĻāĻŋ Asm.js-āĻāϰ āĻĒā§āϰāϤāĻŋāϏā§āĻĨāĻžāĻĒāύ, āĻāϰ āĻŦā§āϧ āĻāĻžāĻāĻžāϏā§āĻā§āϰāĻŋāĻĒā§āĻ āĻā§āĻĄ āĻšāĻāϝāĻŧāĻžāϰ āĻāĻžāύ āĻāϰ⧠āύāĻžāĨ¤ āĻŦāĻŋāĻĒāϰā§āϤā§, āĻāĻāĻŋ āϏāĻŽā§āĻĒā§āϰā§āĻŖāϰā§āĻĒā§ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻāĻŦāĻ āĻ āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§, āĻāĻŦāĻ āĻāĻŽāύāĻāĻŋ āĻāĻāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻž āϞā§āĻāĻž āĻā§āĻŦ āϏāĻšāĻ āύāϝāĻŧ: āĻāĻŽā§āĻĒā§āϝāĻžāĻā§āĻā§āϰ āĻāύā§āϝ, āĻāĻāĻŋ āĻŦāĻŋāύā§āϝāĻžāϏ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰāĻž āĻšāϝāĻŧ .
āĻāĻĒāύāĻŋ āĻšāϝāĻŧāϤ⧠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 āĻā§āϝāĻžāĻļā§āϰ āĻāύā§āĻŽāĻžāύāĻŋāĻ āĻāĻāĻžāϰ āĻāϤāĨ¤ āĻāϏāϞ āĻŦāĻŋāώāϝāĻŧāĻāĻŋ āĻšāϞ āĻāĻŋāĻāĻāĻāĻŽāĻāĻāϤ⧠āϏāĻŦāĻāĻŋāĻā§āĻ āĻā§āϰā§āϤāϰ: āϝāĻĻāĻŋāĻ āϏā§āĻāĻžāύ⧠āϏāĻšāĻžāϝāĻŧāĻ āĻĢāĻžāĻāĻļāύ āϰāϝāĻŧā§āĻā§ āϝāĻž āϞā§āĻĄ/āϏā§āĻā§āϰ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰ⧠āĻā§āϏā§āĻ āĻāĻŽāĻāĻŽāĻāĻ (āĻāĻāĻŋ āĻāĻžāĻĄāĻŧāĻž āĻāĻŽāϰāĻž āĻāĻāύ āĻā§āĻĨāĻžāϝāĻŧ āĻĨāĻžāĻāĻŦ?), āϤāĻžāϰāĻž āϤāĻžāĻĻā§āϰ āĻ āύā§āĻŦāĻžāĻĻ āĻā§āϝāĻžāĻļā§ āĻāĻāĻāĻŋ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻāĻāĻžāϰ⧠āϏāĻāϰāĻā§āώāĻŖ āĻāϰā§, āϝāĻžāϰ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻžāĻāϰāĻŖ āϏāϰāĻžāϏāϰāĻŋ āϏāĻŽā§āĻĒā§āϰāĻāĻžāϰ āĻŦā§āϞāĻā§ āĻāĻŽā§āĻŦā§āĻĄ āĻāϰāĻž āϏā§āĻŦāĻŋāϧāĻžāĻāύāĻāĨ¤ āĻĒā§āϰāĻļā§āύ āĻšāϞ, āĻāĻ āĻāĻžāĻ āĻžāĻŽā§āϰ āĻā§āύ āĻ āĻĢāϏā§āĻ āĻāĻŽāĻžāύā§āĻĄā§āϰ āĻāĻāĻāĻŋ āĻā§āĻ āĻāĻŦāĻ āĻĻā§āϰā§āϤ āĻā§āϰāĻŽ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻŦāĻā§āϝāĻŧā§ āĻĻāĻā§āώāϤāĻžāϰ āϏāĻžāĻĨā§ āĻĒā§āϰāĻā§āϰāĻŋāϝāĻŧāĻž āĻāϰāĻž āĻšāϝāĻŧ?
- āĻāĻāĻžāύ⧠āĻāĻĒāύāĻŋ āĻāĻ āĻŦāĻž āĻĻā§āĻāĻŋ āϏāĻāϰāĻā§āώāĻŋāϤ āϰā§āĻāĻŋāϏā§āĻāĻžāϰā§āϰ āĻāĻĻā§āĻĻā§āĻļā§āϝ āĻĒāϰāĻŋāĻŦāϰā§āϤāύ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻŋāĻŦāĻŋ āĻāϞāĻŋāĻ āϏāĻā§āώāĻŽ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ āĻāĻŦāĻ āĻāĻā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻāϝāĻŧā§āĻāĻāĻŋ āĻā§āĻ āĻŦāϰā§āĻŖāύāĻž āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ
inline-āĻāϰ āĻŽāϤ āĻĢāĻžāĻāĻļāύflush_icache_range(āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āϰ āĻā§āώā§āϤā§āϰ⧠āύāϝāĻŧ)
āĻĢāĻžāĻāϞ tcg-target.inc.c, āĻ
āĻŦāĻļā§āϝāĻ, āϏāĻžāϧāĻžāϰāĻŖāϤ āĻāĻāĻžāϰ⧠āĻ
āύā§āĻ āĻŦāĻĄāĻŧ āĻšāϝāĻŧ āĻāĻŦāĻ āĻāϤ⧠āĻŦā§āĻļ āĻāĻŋāĻā§ āĻŦāĻžāϧā§āϝāϤāĻžāĻŽā§āϞāĻ āĻĢāĻžāĻāĻļāύ āĻĨāĻžāĻā§:
- āĻā§āύ āύāĻŋāϰā§āĻĻā§āĻļāĻžāĻŦāϞ⧠āĻā§āύ āĻ āĻĒāĻžāϰā§āύā§āĻĄā§ āĻāĻžāĻ āĻāϰāϤ⧠āĻĒāĻžāϰ⧠āϤāĻžāϰ āĻāĻĒāϰ āĻŦāĻŋāϧāĻŋāύāĻŋāώā§āϧ āϏāĻš āĻĒā§āϰāĻžāϰāĻŽā§āĻāĻŋāĻāϤāĻžāĨ¤ āĻ āύā§āϝ āĻŦā§āϝāĻžāĻāĻāύā§āĻĄ āĻĨā§āĻā§ āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§ āĻāĻŽāĻžāϰ āĻĻā§āĻŦāĻžāϰāĻž āĻ āύā§āϞāĻŋāĻĒāĻŋ
- āĻĢāĻžāĻāĻļāύ āϝāĻž āĻāĻāĻāĻŋ āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻŦāĻžāĻāĻāĻā§āĻĄ āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āύā§āϝāĻŧ
- āĻāĻĒāύāĻŋ āĻāĻāĻžāύ⧠āĻ
āĻā§āĻāĻŋāϞāĻŋāϝāĻŧāĻžāϰ⧠āĻĢāĻžāĻāĻļāύ āϰāĻžāĻāϤ⧠āĻĒāĻžāϰā§āύ, āĻāĻŦāĻ āĻāĻĒāύāĻŋ āϏā§āĻā§āϝāĻžāĻāĻŋāĻ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋ āĻĨā§āĻā§āĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ
tcg/tcg.c
āύāĻŋāĻā§āϰ āĻāύā§āϝ, āĻāĻŽāĻŋ āύāĻŋāĻŽā§āύāϞāĻŋāĻāĻŋāϤ āĻā§āĻļāϞāĻāĻŋ āĻŦā§āĻā§ āύāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ: āĻĒāϰāĻŦāϰā§āϤ⧠āĻ
āύā§āĻŦāĻžāĻĻ āĻŦā§āϞāĻā§āϰ āĻĒā§āϰāĻĨāĻŽ āĻļāĻŦā§āĻĻāĻā§āϞāĻŋāϤā§, āĻāĻŽāĻŋ āĻāĻžāϰāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ āϞāĻŋāĻā§āĻāĻŋāϞāĻžāĻŽ: āĻāĻāĻāĻŋ āĻļā§āϰ⧠āĻāĻŋāĻšā§āύ (āĻāĻļā§āĻĒāĻžāĻļā§ āĻāĻāĻāĻŋ āύāĻŋāϰā§āĻĻāĻŋāώā§āĻ āĻŽāĻžāύ 0xFFFFFFFF, āϝāĻž āĻāĻŋāĻŦāĻŋ-āϰ āĻŦāϰā§āϤāĻŽāĻžāύ āĻ
āĻŦāϏā§āĻĨāĻž āύāĻŋāϰā§āϧāĻžāϰāĻŖ āĻāϰā§), āĻĒā§āϰāϏāĻā§āĻ, āĻā§āĻĒāύā§āύ āĻŽāĻĄāĻŋāĻāϞ āĻāĻŦāĻ āĻĄāĻŋāĻŦāĻžāĻāĻŋāĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻŽā§āϝāĻžāĻāĻŋāĻ āύāĻŽā§āĻŦāϰāĨ¤ āĻĒā§āϰāĻĨāĻŽā§ āĻāĻŋāĻšā§āύ āĻŦāϏāĻžāύ⧠āĻšāϝāĻŧā§āĻāĻŋāϞ 0xFFFFFFFF - nāϝā§āĻāĻžāύ⧠n - āĻāĻāĻāĻŋ āĻā§āĻ āϧāύāĻžāϤā§āĻŽāĻ āϏāĻāĻā§āϝāĻž, āĻāĻŦāĻ āĻĒā§āϰāϤāĻŋāĻŦāĻžāϰ āĻāĻāĻŋ āĻĻā§āĻāĻžāώā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§ āĻāĻžāϰā§āϝāĻāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§ 1 āĻĻā§āĻŦāĻžāϰāĻž āĻŦā§āĻĻā§āϧāĻŋ āĻĒā§āϝāĻŧā§āĻā§āĨ¤ āϝāĻāύ āĻāĻāĻŋ āĻĒā§āĻāĻā§āĻā§ 0xFFFFFFFE, āϏāĻāĻāϞāύ āĻāĻā§āĻāĻŋāϞ, āĻŽāĻĄāĻŋāĻāϞāĻāĻŋ āĻĢāĻžāĻāĻļāύ āĻā§āĻŦāĻŋāϞ⧠āϏāĻāϰāĻā§āώāĻŋāϤ āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻāĻāĻŋ āĻā§āĻ "āϞāĻā§āĻāĻžāϰ" āĻ āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ, āϝā§āĻāĻžāύ āĻĨā§āĻā§ āϏāĻŽā§āĻĒāĻžāĻĻāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ tcg_qemu_tb_exec, āĻāĻŦāĻ āĻŽāĻĄāĻŋāĻāϞāĻāĻŋ QEMU āĻŽā§āĻŽāϰāĻŋ āĻĨā§āĻā§ āϏāϰāĻžāύ⧠āĻšāϝāĻŧā§āĻā§āĨ¤
āĻā§āϞāĻžāϏāĻŋāĻāĻā§āϞāĻŋāĻā§ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻāϰāĻžāϰ āĻāύā§āϝ, "āĻā§āϰā§āϝāĻžāĻ, āĻĒā§āϰāĻāĻžāϰā§āϰ āĻšā§āĻĻāϝāĻŧā§āϰ āĻāύā§āϝ āĻāĻ āĻļāĻŦā§āĻĻā§ āĻāϤāĻāĻž āĻāĻĄāĻŧāĻŋāϤ..."āĨ¤ āϝāĻžāĻāĻšā§āĻ, āϏā§āĻŽā§āϤāĻŋ āĻā§āĻĨāĻžāĻ āĻĢā§āĻā§ āĻāĻŋāϞ. āϤāĻžāĻāĻžāĻĄāĻŧāĻž, āĻāĻāĻŋ QEMU āĻĻā§āĻŦāĻžāϰāĻž āĻĒāϰāĻŋāĻāĻžāϞāĻŋāϤ āĻŽā§āĻŽāϰāĻŋ āĻāĻŋāϞ! āĻāĻŽāĻžāϰ āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻā§āĻĄ āĻāĻŋāϞ āϝāĻž āĻĒāϰāĻŦāϰā§āϤ⧠āύāĻŋāϰā§āĻĻā§āĻļāύāĻž āϞā§āĻāĻžāϰ āϏāĻŽāϝāĻŧ (āĻāĻžāϞ, āĻ āϰā§āĻĨāĻžā§ āĻāĻāĻāĻŋ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ), āϝāĻžāϰ āϞāĻŋāĻā§āĻāĻāĻŋ āĻāĻā§ āĻāĻ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āĻāĻŋāϞ āϤāĻžāĻā§ āĻŽā§āĻā§ āĻĢā§āϞā§āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āĻāĻāĻŋ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰā§āύāĻŋāĨ¤ āĻāϏāϞā§, āϏāĻŦāĻā§āϝāĻŧā§ āϏāĻšāĻ āĻā§āώā§āϤā§āϰā§, QEMU āϏā§āĻāĻžāϰā§āĻāĻāĻĒā§ āĻŽā§āĻŽāϰāĻŋ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰ⧠āĻāĻŦāĻ āϏā§āĻāĻžāύ⧠āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻā§āĻĄ āϞāĻŋāĻā§āĨ¤ āϝāĻāύ āĻŦāĻžāĻĢāĻžāϰ āĻĢā§āϰāĻŋāϝāĻŧā§ āϝāĻžāϝāĻŧ, āĻā§āĻĄāĻāĻŋ āĻĢā§āϞ⧠āĻĻā§āĻāϝāĻŧāĻž āĻšāϝāĻŧ āĻāĻŦāĻ āĻĒāϰāĻŦāϰā§āϤā§āĻāĻŋ āϤāĻžāϰ āĻāĻžāϝāĻŧāĻāĻžāϝāĻŧ āϞāĻŋāĻāϤ⧠āĻļā§āϰ⧠āĻāϰā§āĨ¤
āĻā§āĻĄāĻāĻŋ āĻ
āϧā§āϝāϝāĻŧāύ āĻāϰāĻžāϰ āĻĒāϰā§, āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒā§āϰā§āĻāĻŋ āϝ⧠āĻŽā§āϝāĻžāĻāĻŋāĻ āύāĻŽā§āĻŦāϰā§āϰ āĻā§āĻļāϞāĻāĻŋ āĻāĻŽāĻžāĻā§ āĻĒā§āϰāĻĨāĻŽ āĻĒāĻžāϏ⧠āĻāĻāĻāĻŋ āĻ
āĻĒā§āϰāĻāϞāĻŋāϤ āĻŦāĻžāĻĢāĻžāϰ⧠āĻāĻŋāĻā§ āĻā§āϞ āĻŽā§āĻā§āϤ āĻāϰ⧠āĻāĻžāĻĻāĻž āϧā§āĻŦāĻāϏā§āϰ āĻā§āώā§āϤā§āϰ⧠āĻŦā§āϝāϰā§āĻĨ āύāĻž āĻšāĻāϝāĻŧāĻžāϰ āĻ
āύā§āĻŽāϤāĻŋ āĻĻāĻŋāϝāĻŧā§āĻā§āĨ¤ āĻāĻŋāύā§āϤ⧠āĻā§ āĻĒāϰ⧠āĻāĻŽāĻžāϰ āĻĢāĻžāĻāĻļāύ āĻŦāĻžāĻāĻĒāĻžāϏ āĻŦāĻžāĻĢāĻžāϰ āĻĒā§āύāϰā§āϞāĻŋāĻāύ? āĻāĻŽāϏā§āĻā§āϰāĻŋāĻĒā§āĻā§āύ āĻĄā§āĻā§āϞāĻĒāĻžāϰāĻĻā§āϰ āĻĒāϰāĻžāĻŽāϰā§āĻļ āĻ
āύā§āϝāĻžāϝāĻŧā§, āϝāĻāύ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āϏāĻŽāϏā§āϝāĻžāϝāĻŧ āĻĒāĻĄāĻŧā§āĻāĻŋāϞāĻžāĻŽ, āĻāĻŽāĻŋ āĻĢāϞāĻžāĻĢāϞ āĻā§āĻĄāĻāĻŋ āĻāĻŦāĻžāϰ āύā§āĻāĻŋāĻ āĻ
ā§āϝāĻžāĻĒā§āϞāĻŋāĻā§āĻļāύ⧠āĻĒā§āϰā§āĻ āĻāϰā§āĻāĻŋ, āĻāĻāĻŋāϤ⧠āĻŽā§āĻāĻŋāϞāĻž āϰā§āĻāϰā§āĻĄ-āϰāĻŋāĻĒā§āϞ⧠āϏā§āĻ āĻāϰā§āĻāĻŋ... āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§, āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻŽāĻŋ āĻāĻāĻāĻŋ āϏāĻšāĻ āĻāĻŋāύāĻŋāϏ āĻŦā§āĻāϤ⧠āĻĒā§āϰā§āĻāĻŋ: āĻĒā§āϰāϤāĻŋāĻāĻŋ āĻŦā§āϞāĻā§āϰ āĻāύā§āϝ, āĻ struct TranslationBlock āĻāϰ āĻŦāϰā§āĻŖāύāĻž āϏāĻšāĨ¤ āĻ
āύā§āĻŽāĻžāύ āĻāϰā§āύ āĻā§āĻĨāĻžāϝāĻŧ... āĻāĻāĻž āĻ āĻŋāĻ, āĻŦāĻžāĻĢāĻžāϰ⧠āĻŦā§āϞāĻā§āϰ āĻ āĻŋāĻ āĻāĻā§āĨ¤ āĻāĻāĻŋ āĻāĻĒāϞāĻŦā§āϧāĻŋ āĻāϰā§, āĻāĻŽāĻŋ āĻā§āϰāĻžāĻ (āĻ
āύā§āϤāϤ āĻāĻŋāĻā§) āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻā§āĻĄāĻŧā§ āĻĻā§āĻāϝāĻŧāĻžāϰ āϏāĻŋāĻĻā§āϧāĻžāύā§āϤ āύāĻŋāϝāĻŧā§āĻāĻŋ āĻāĻŦāĻ āĻā§āĻŦāϞ āĻŽā§āϝāĻžāĻāĻŋāĻ āύāĻŽā§āĻŦāϰāĻāĻŋ āĻĢā§āϞ⧠āĻĻāĻŋāϝāĻŧā§āĻāĻŋāϞāĻžāĻŽ āĻāĻŦāĻ āĻ
āĻŦāĻļāĻŋāώā§āĻ āĻļāĻŦā§āĻĻāĻā§āϞāĻŋāĻā§ āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰāĻŋāϤ āĻāϰā§āĻāĻŋāϞāĻžāĻŽ struct TranslationBlock, āĻāĻāĻāĻŋ āĻāĻāĻāĻāĻžāĻŦā§ āϞāĻŋāĻā§āĻāϝā§āĻā§āϤ āϤāĻžāϞāĻŋāĻāĻž āϤā§āϰāĻŋ āĻāϰāĻž āϝāĻž āĻ
āύā§āĻŦāĻžāĻĻ āĻā§āϝāĻžāĻļā§ āϰāĻŋāϏā§āĻ āĻšāϞ⧠āĻĻā§āϰā§āϤ āĻ
āϤāĻŋāĻā§āϰāĻŽ āĻāϰāĻž āϝāĻžāϝāĻŧ āĻāĻŦāĻ āĻŽā§āĻŽāϰāĻŋ āĻāĻžāϞāĻŋ āĻāϰāĻž āϝāĻžāϝāĻŧāĨ¤
āĻāĻŋāĻā§ āĻā§āϰāĻžāĻ āϰāϝāĻŧā§ āĻā§āĻā§: āĻāĻĻāĻžāĻšāϰāĻŖāϏā§āĻŦāϰā§āĻĒ, āĻā§āĻĄ āĻŦāĻžāĻĢāĻžāϰ⧠āĻāĻŋāĻšā§āύāĻŋāϤ āĻĒāϝāĻŧā§āύā§āĻāĻžāϰ - āϤāĻžāĻĻā§āϰ āĻŽāϧā§āϝ⧠āĻāĻŋāĻā§ āϏāĻšāĻ BinaryenExpressionRef, āĻ
āϰā§āĻĨāĻžā§, āϤāĻžāϰāĻž āϝ⧠āĻ
āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāĻā§āϞāĻŋāĻā§ āϰā§āĻāĻŋāĻāĻāĻžāĻŦā§ āĻā§āύāĻžāϰā§āĻ āĻāϰāĻž āĻŦā§āϏāĻŋāĻ āĻŦā§āϞāĻā§ āϰāĻžāĻāĻž āĻĻāϰāĻāĻžāϰ āϤāĻž āĻĻā§āĻā§, āĻ
āĻāĻļāĻāĻŋ āĻšāϞ BB āĻā§āϞāĻŋāϰ āĻŽāϧā§āϝ⧠āϏā§āĻĨāĻžāύāĻžāύā§āϤāϰā§āϰ āĻļāϰā§āϤ, āĻ
āĻāĻļāĻāĻŋ āĻā§āĻĨāĻžāϝāĻŧ āϝā§āϤ⧠āĻšāĻŦā§āĨ¤ āĻ āĻŋāĻ āĻāĻā§, āϰāĻŋāϞā§āĻĒāĻžāϰā§āϰ āĻāύā§āϝ āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻĒā§āϰāϏā§āϤā§āϤ āĻŦā§āϞāĻ āϰāϝāĻŧā§āĻā§ āϝāĻž āĻļāϰā§āϤ āĻ
āύā§āϏāĻžāϰ⧠āϏāĻāϝā§āĻā§āϤ āĻāϰāĻž āĻĻāϰāĻāĻžāϰāĨ¤ āϤāĻžāĻĻā§āϰ āĻāϞāĻžāĻĻāĻž āĻāϰāĻžāϰ āĻāύā§āϝ, āĻ
āύā§āĻŽāĻžāύāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧ āϝ⧠āϏā§āĻā§āϞāĻŋ āĻāĻŽāĻĒāĻā§āώ⧠āĻāĻžāϰāĻāĻŋ āĻŦāĻžāĻāĻ āĻĻā§āĻŦāĻžāϰāĻž āϏāĻžāϰāĻŋāĻŦāĻĻā§āϧ, āϤāĻžāĻ āĻāĻĒāύāĻŋ āύāĻŋāϰāĻžāĻĒāĻĻā§ āϞā§āĻŦā§āϞā§āϰ āĻāύā§āϝ āĻāĻŽāĻĒāĻā§āώ⧠āĻāϞā§āϞā§āĻāϝā§āĻā§āϝ āĻĻā§āĻāĻŋ āĻŦāĻŋāĻ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāϤ⧠āĻĒāĻžāϰā§āύ, āĻĒā§āϰāϝāĻŧā§āĻāύ āĻšāϞ⧠āĻāĻĒāύāĻžāĻā§ āĻāĻāĻŋ āϏāϰāĻžāϤ⧠āĻŽāύ⧠āϰāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤ āϝāĻžāĻāĻšā§āĻ, TCG āϞā§āĻĒ āĻĨā§āĻā§ āĻĒā§āϰāϏā§āĻĨāĻžāύ āĻāϰāĻžāϰ āĻāĻžāϰāĻŖ āύāĻŋāϰā§āĻĻā§āĻļ āĻāϰāϤ⧠āĻāĻ āϧāϰāύā§āϰ āϞā§āĻŦā§āϞāĻā§āϞāĻŋ āĻāϤāĻŋāĻŽāϧā§āϝā§āĻ QEMU-āϤ⧠āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āĻšāϝāĻŧā§āĻā§āĨ¤
Binaryen āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰā§
WebAssembly-āĻāϰ āĻŽāĻĄāĻŋāĻāϞāĻā§āϞāĻŋāϤ⧠āĻĢāĻžāĻāĻļāύ āϰāϝāĻŧā§āĻā§, āϝāĻžāϰ āĻĒā§āϰāϤāĻŋāĻāĻŋāϤ⧠āĻāĻāĻāĻŋ āĻŦāĻĄāĻŋ āϰāϝāĻŧā§āĻā§, āϝāĻž āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāĨ¤ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύāĻā§āϞāĻŋ āĻšāϞ āĻāĻāύāĻžāϰ⧠āĻāĻŦāĻ āĻŦāĻžāĻāύāĻžāϰāĻŋ āĻ āĻĒāĻžāϰā§āĻļāύ, āĻ āύā§āϝāĻžāύā§āϝ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύā§āϰ āϤāĻžāϞāĻŋāĻāĻž, āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĒā§āϰāĻŦāĻžāĻš āĻāϤā§āϝāĻžāĻĻāĻŋāϰ āϏāĻŽāύā§āĻŦāϝāĻŧā§ āĻāĻ āĻŋāϤ āĻŦā§āϞāĻāĨ¤ āĻāĻŽāĻŋ āĻāĻā§āĻ āĻŦāϞā§āĻāĻŋ, āĻāĻāĻžāύ⧠āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĒā§āϰāĻŦāĻžāĻš āĻāĻā§āĻ-āϏā§āϤāϰā§āϰ āĻļāĻžāĻāĻž, āϞā§āĻĒ, āĻĢāĻžāĻāĻļāύ āĻāϞ āĻāϤā§āϝāĻžāĻĻāĻŋāϰ āĻŽāϤ⧠āϏā§āύāĻŋāϰā§āĻĻāĻŋāώā§āĻāĻāĻžāĻŦā§ āϏāĻāĻāĻ āĻŋāϤ āĻšāϝāĻŧāĨ¤ āĻĢāĻžāĻāĻļāύ āĻāϰā§āĻā§āĻŽā§āύā§āĻ āϏā§āĻā§āϝāĻžāĻā§āϰ āĻāĻĒāϰ āĻĒāĻžāϏ āĻāϰāĻž āĻšāϝāĻŧ āύāĻž, āĻāĻŋāύā§āϤ⧠āϏā§āĻĒāώā§āĻāĻāĻžāĻŦā§, āĻ āĻŋāĻ JS āĻŽāϤ. āĻāĻāĻžāĻĄāĻŧāĻžāĻ āĻā§āϞā§āĻŦāĻžāϞ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻāĻā§, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻŋ āϏā§āĻā§āϞāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻŋāύāĻŋ, āϤāĻžāĻ āĻāĻŽāĻŋ āĻāĻĒāύāĻžāĻā§ āϏā§āĻā§āϞāĻŋ āϏāĻŽā§āĻĒāϰā§āĻā§ āĻŦāϞāĻŦ āύāĻžāĨ¤
āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋāϰ āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞāĻ āϰāϝāĻŧā§āĻā§, āĻļā§āύā§āϝ āĻĨā§āĻā§ āϏāĻāĻā§āϝāĻžāϝā§āĻā§āϤ, āĻĒā§āϰāĻāĻžāϰā§āϰ: int32 / int64 / float / doubleāĨ¤ āĻāĻ āĻā§āώā§āϤā§āϰā§, āĻĒā§āϰāĻĨāĻŽ n āϏā§āĻĨāĻžāύā§āϝāĻŧ āĻā§āϰāĻŋāϝāĻŧā§āĻŦāϞ āĻšāϞ āĻĢāĻžāĻāĻļāύ⧠āĻĒāĻžāϏ āĻāϰāĻž āĻāϰā§āĻā§āĻŽā§āύā§āĻāĨ¤ āĻ āύā§āĻā§āϰāĻš āĻāϰ⧠āĻŽāύ⧠āϰāĻžāĻāĻŦā§āύ āϝ⧠āϝāĻĻāĻŋāĻ āĻāĻāĻžāύ⧠āϏāĻŦāĻāĻŋāĻā§ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻā§āώā§āϤā§āϰ⧠āϏāĻŽā§āĻĒā§āϰā§āĻŖ āύāĻŋāĻŽā§āύ-āϏā§āϤāϰā§āϰ āύāϝāĻŧ, āĻĒā§āϰā§āĻŖāϏāĻāĻā§āϝāĻžāĻā§āϞāĻŋ āĻāĻāύāĻ "āϏā§āĻŦāĻžāĻā§āώāϰāĻŋāϤ/āĻāύāϏāĻžāĻāύāĻĄ" āĻŦā§āĻļāĻŋāώā§āĻā§āϝ āĻŦāĻšāύ āĻāϰ⧠āύāĻž: āϏāĻāĻā§āϝāĻžāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻāϰāĻŖ āĻāϰ⧠āϤāĻž āĻ āĻĒāĻžāϰā§āĻļāύ āĻā§āĻĄā§āϰ āĻāĻĒāϰ āύāĻŋāϰā§āĻāϰ āĻāϰā§āĨ¤
āϏāĻžāϧāĻžāϰāĻŖāĻāĻžāĻŦā§ āĻŦāϞāϤ⧠āĻā§āϞā§, Binaryen āĻĒā§āϰāĻĻāĻžāύ āĻāϰ⧠: āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻŽāĻĄāĻŋāĻāϞ āϤā§āϰāĻŋ āĻāϰā§āύ, āϤāĻžāϰ āĻŽāϧā§āϝ⧠āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āϤā§āϰāĻŋ āĻāϰā§āύ - āĻāĻāύāĻžāϰā§, āĻŦāĻžāĻāύāĻžāϰāĻŋ, āĻ āύā§āϝāĻžāύā§āϝ āĻāĻā§āϏāĻĒā§āϰā§āĻļāύ āĻĨā§āĻā§ āĻŦā§āϞāĻ, āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻĒā§āϰāĻŦāĻžāĻš āĻāϤā§āϝāĻžāĻĻāĻŋāĨ¤ āϤāĻžāϰāĻĒāϰ⧠āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ āĻĢāĻžāĻāĻļāύ āϤā§āϰāĻŋ āĻāϰā§āύ āϝāĻžāϰ āĻļāϰā§āϰ āĻšāĻŋāϏāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ āĻāĻŋāĻŦā§āϝāĻā§āϤāĻŋāĨ¤ āϝāĻĻāĻŋ āĻāĻĒāύāĻžāϰ, āĻāĻŽāĻžāϰ āĻŽāϤā§, āĻāĻāĻāĻŋ āύāĻŋāĻŽā§āύ-āϏā§āϤāϰā§āϰ āϰā§āĻĒāĻžāύā§āϤāϰ āĻā§āϰāĻžāĻĢ āĻĨāĻžāĻā§, āϤāĻžāĻšāϞ⧠āϰāĻŋāϞā§āĻĒāĻžāϰ āĻāĻĒāĻžāĻĻāĻžāύ āĻāĻĒāύāĻžāĻā§ āϏāĻžāĻšāĻžāϝā§āϝ āĻāϰāĻŦā§āĨ¤ āϝāϤāĻĻā§āϰ āĻāĻŽāĻŋ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻŋ, āĻāĻāĻāĻŋ āĻŦā§āϞāĻā§ āĻāĻā§āϏāĻŋāĻāĻŋāĻāĻļāύ āĻĒā§āϰāĻŦāĻžāĻšā§āϰ āĻāĻā§āĻ-āϏā§āϤāϰā§āϰ āύāĻŋāϝāĻŧāύā§āϤā§āϰāĻŖ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ, āϝāϤāĻā§āώāĻŖ āύāĻž āĻāĻāĻŋ āĻŦā§āϞāĻā§āϰ āϏā§āĻŽāĻžāύāĻžāϰ āĻŦāĻžāĻāϰ⧠āύāĻž āϝāĻžāϝāĻŧ - āĻ āϰā§āĻĨāĻžā§, āĻ āĻā§āϝāύā§āϤāϰā§āĻŖ āĻĻā§āϰā§āϤ āĻĒāĻžāĻĨ / āϧā§āϰ āĻāϰāĻž āϏāĻŽā§āĻāĻŦ āĻŦāĻŋāϞā§āĻ-āĻāύ 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);āĻāĻŋāĻāĻāĻāĻŽāĻāĻ āĻāĻŦāĻ āĻā§āĻāϏ-āĻāϰ āĻŦāĻŋāĻļā§āĻŦāĻā§āϞāĻŋāĻā§ āĻā§āύā§āĻāĻžāĻŦā§ āϏāĻāϝā§āĻā§āϤ āĻāϰāĻžāϰ āĻāύā§āϝ āĻāĻŦāĻ āĻāĻāĻ āϏāĻŽāϝāĻŧā§ āϏāĻāĻāϞāĻŋāϤ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋ āĻĻā§āϰā§āϤ āĻ
ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻžāϰ āĻāύā§āϝ, āĻāĻāĻāĻŋ āĻ
ā§āϝāĻžāϰ⧠āϤā§āϰāĻŋ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞ (āϞāĻā§āĻāĻžāϰ⧠āĻāĻŽāĻĻāĻžāύāĻŋ āĻāϰāĻžāϰ āĻāύā§āϝ āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋāϰ āĻāĻāĻāĻŋ āĻā§āĻŦāĻŋāϞ), āĻāĻŦāĻ āϤā§āϰāĻŋ āĻāϰāĻž āĻĢāĻžāĻāĻļāύāĻā§āϞāĻŋ āϏā§āĻāĻžāύ⧠āϏā§āĻĨāĻžāĻĒāύ āĻāϰāĻž āĻšāϝāĻŧā§āĻāĻŋāϞāĨ¤ āĻĻā§āϰā§āϤ āϏā§āĻāĻāĻāĻŋ āĻāĻŖāύāĻž āĻāϰāĻžāϰ āĻāύā§āϝ, āĻļā§āύā§āϝ āĻļāĻŦā§āĻĻ āĻ
āύā§āĻŦāĻžāĻĻ āĻŦā§āϞāĻā§āϰ āϏā§āĻā§āĻāĻŋ āĻĒā§āϰāĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻšāĻŋāϏāĻžāĻŦā§ āĻŦā§āϝāĻŦāĻšā§āϤ āĻšāϝāĻŧā§āĻāĻŋāϞ, āĻāĻŋāύā§āϤ⧠āϤāĻžāϰāĻĒāϰ⧠āĻāĻ āϏā§āϤā§āϰāĻāĻŋ āĻŦā§āϝāĻŦāĻšāĻžāϰ āĻāϰ⧠āĻāĻŖāύāĻž āĻāϰāĻž āϏā§āĻāĻāĻāĻŋ āĻā§āĻŦāϞ āĻā§āώā§āϤā§āϰā§āϰ āĻŽāϧā§āϝ⧠āĻĢāĻŋāĻ āĻšāϤ⧠āĻļā§āϰ⧠āĻāϰ⧠struct TranslationBlock.
āĻāĻĒāĻžāϝāĻŧ āĻĻā§āĻŦāĻžāϰāĻž, (āĻŦāϰā§āϤāĻŽāĻžāύ⧠āĻāĻāĻāĻŋ āĻ āϏā§āĻĒāώā§āĻ āϞāĻžāĻāϏā§āύā§āϏ āϏāĻš) āĻļā§āϧā§āĻŽāĻžāϤā§āϰ āĻĢāĻžāϝāĻŧāĻžāϰāĻĢāĻā§āϏ⧠āĻāĻžāϞ āĻāĻžāĻ āĻāϰā§āĨ¤ āĻā§āϰā§āĻŽ āĻĄā§āĻā§āϞāĻĒāĻžāϰ āĻāĻŋāϞā§āύ āĻā§āύā§āĻāĻžāĻŦā§ āĻĒā§āϰāϏā§āϤā§āϤ āύāϝāĻŧ āϝ⧠āĻā§āĻ WebAssembly āĻŽāĻĄāĻŋāĻāϞāĻā§āϞāĻŋāϰ āĻāĻ āĻšāĻžāĻāĻžāϰā§āϰāĻ āĻŦā§āĻļāĻŋ āĻāĻĻāĻžāĻšāϰāĻŖ āϤā§āϰāĻŋ āĻāϰāϤ⧠āĻāĻžāĻāĻŦā§, āϤāĻžāĻ āϤāĻžāϰāĻž āĻĒā§āϰāϤāĻŋāĻāĻŋāϰ āĻāύā§āϝ āĻāĻžāϰā§āĻā§āϝāĻŧāĻžāϞ āĻ āĻŋāĻāĻžāύāĻžāϰ āϏā§āĻĨāĻžāύā§āϰ āĻāĻāĻāĻŋ āĻāĻŋāĻāĻžāĻŦāĻžāĻāĻ āĻŦāϰāĻžāĻĻā§āĻĻ āĻāϰā§āĻā§...
āĻāĻāύ āĻ āĻĒāϰā§āϝāύā§āϤāĻ. āĻā§āĻ āĻāĻā§āϰāĻšā§ āĻšāϞ⧠āϏāĻŽā§āĻāĻŦāϤ āĻ āύā§āϝ āύāĻŋāĻŦāύā§āϧ āĻšāĻŦā§. āϝāĻĨāĻž, āĻ āύā§āϤāϤ āĻ āĻŦāĻļā§āώ āĻŽāĻžāϤā§āϰ āĻŦā§āϞāĻ āĻĄāĻŋāĻāĻžāĻāϏ āĻāĻžāĻ āĻāϰā§. āĻāϝāĻŧā§āĻŦ āĻ ā§āϝāĻžāϏā§āĻŽā§āĻŦāϞāĻŋ āĻŽāĻĄāĻŋāĻāϞāĻā§āϞāĻŋāϰ āϏāĻāĻāϞāύāĻā§ āĻ ā§āϝāĻžāϏāĻŋāĻā§āĻā§āϰā§āύāĻžāϏ āĻāϰāĻžāĻ āĻŦā§āϧāĻāĻŽā§āϝ āĻšāϤ⧠āĻĒāĻžāϰā§, āϝā§āĻŽāύāĻāĻŋ āĻā§āĻāϏ āĻŦāĻŋāĻļā§āĻŦā§ āĻĒā§āϰāĻĨāĻžāĻāϤ, āϝā§āĻšā§āϤ⧠āĻāĻāύāĻ āĻāĻāĻāĻŋ āĻĻā§āĻāĻžāώ⧠āϰāϝāĻŧā§āĻā§ āϝā§āĻāĻŋ āύā§āĻāĻŋāĻ āĻŽāĻĄāĻŋāĻāϞ āĻĒā§āϰāϏā§āϤā§āϤ āύāĻž āĻšāĻāϝāĻŧāĻž āĻĒāϰā§āϝāύā§āϤ āĻāĻ āϏāĻŽāϏā§āϤ āĻāϰāϤ⧠āĻĒāĻžāϰā§āĨ¤
āĻ āĻŦāĻļā§āώ⧠āĻāĻāĻāĻŋ āϧāĻžāĻāϧāĻž: āĻāĻĒāύāĻŋ āĻāĻāĻāĻŋ 32-āĻŦāĻŋāĻ āĻāϰā§āĻāĻŋāĻā§āĻāĻāĻžāϰ⧠āĻāĻāĻāĻŋ āĻŦāĻžāĻāύāĻžāϰāĻŋ āϏāĻāĻāϞāύ āĻāϰā§āĻā§āύ, āĻāĻŋāύā§āϤ⧠āĻā§āĻĄāĻāĻŋ, āĻŽā§āĻŽāϰāĻŋ āĻ āĻĒāĻžāϰā§āĻļāύā§āϰ āĻŽāĻžāϧā§āϝāĻŽā§, āĻŦāĻžāĻāύāĻžāϰāĻŋāύ āĻĨā§āĻā§, āϏā§āĻā§āϝāĻžāĻā§āϰ āĻā§āĻĨāĻžāĻ āĻŦāĻž 2-āĻŦāĻŋāĻ āĻ āĻŋāĻāĻžāύāĻž āϏā§āĻĨāĻžāύā§āϰ āĻāĻĒāϰā§āϰ 32 āĻāĻŋāĻāĻžāĻŦāĻžāĻāĻā§āϰ āĻ āύā§āϝ āĻā§āĻĨāĻžāĻ āĻāĻ ā§ āϝāĻžāϝāĻŧāĨ¤ āϏāĻŽāϏā§āϝāĻž āĻšāϞ āϝ⧠āĻŦāĻžāĻāύāĻžāϰāĻŋāύā§āϰ āĻĻā§āώā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻāĻāĻŋ āĻā§āĻŦ āĻŦāĻĄāĻŧ āĻāĻāĻāĻŋ āĻĢāϞāϏā§āĻŦāϰā§āĻĒ āĻ āĻŋāĻāĻžāύāĻž āĻ ā§āϝāĻžāĻā§āϏā§āϏ āĻāϰāĻā§āĨ¤ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻĒā§āϤā§?
āĻ ā§āϝāĻžāĻĄāĻŽāĻŋāύā§āϰ āĻĒāĻĨā§
āĻāĻŽāĻŋ āĻļā§āώ āĻĒāϰā§āϝāύā§āϤ āĻāĻāĻž āĻĒāϰā§āĻā§āώāĻž āĻāϰ⧠āĻĻā§āĻāĻŋāύāĻŋ, āĻāĻŋāύā§āϤ⧠āĻāĻŽāĻžāϰ āĻĒā§āϰāĻĨāĻŽ āĻāĻŋāύā§āϤāĻž āĻāĻŋāϞ, "āϝāĻĻāĻŋ āĻāĻŽāĻŋ ā§Šā§¨-āĻŦāĻŋāĻ āĻāύāϏā§āĻāϞ āĻāϰāĻŋ?" LinuxāĻāϰāĻĒāϰ āĻ ā§āϝāĻžāĻĄā§āϰā§āϏ āϏā§āĻĒā§āϏā§āϰ āĻāĻĒāϰā§āϰ āĻ āĻāĻļāĻāĻŋ āĻāĻžāϰā§āύā§āϞ āĻĻāĻāϞ āĻāϰāĻŦā§āĨ¤ āĻĒā§āϰāĻļā§āύ āĻļā§āϧ⧠āĻāĻāĻāĻžāĻ, āĻāϰ āĻāϤāĻāĻž āĻ āĻāĻļ āĻĻāĻāϞ āĻāϰāĻž āĻšāĻŦā§: ā§§ āĻāĻŋāĻŦāĻŋ āύāĻžāĻāĻŋ ⧍ āĻāĻŋāĻŦāĻŋāĨ¤
āĻāĻāĻāĻŋ āĻĒā§āϰā§āĻā§āϰāĻžāĻŽāĻžāϰā§āϰ āĻāĻĒāĻžāϝāĻŧā§ (āĻ āύā§āĻļā§āϞāύāĻāĻžāϰā§āĻĻā§āϰ āĻāύā§āϝ āĻŦāĻŋāĻāϞā§āĻĒ)
āĻ āĻŋāĻāĻžāύāĻž āϏā§āĻĨāĻžāύā§āϰ āĻļā§āϰā§āώ⧠āĻāĻāĻāĻŋ āĻŦā§āĻĻāĻŦā§āĻĻ āĻĢā§āĻāĻāĻžāύ⧠āϝāĻžāĻāĨ¤ āĻāĻŽāĻŋ āύāĻŋāĻā§āĻ āĻŦā§āĻāϤ⧠āĻĒāĻžāϰāĻāĻŋ āύāĻž āĻā§āύ āĻāĻāĻŋ āĻāĻžāĻ āĻāϰ⧠- āϏā§āĻāĻžāύ⧠āĻāϤāĻŋāĻŽāϧā§āϝ⧠āĻāĻāĻāĻŋ āϏā§āĻā§āϝāĻžāĻ āĻĨāĻžāĻāϤ⧠āĻšāĻŦā§āĨ¤ āĻāĻŋāύā§āϤ⧠"āĻāĻŽāϰāĻž āĻ āύā§āĻļā§āϞāύāĻāĻžāϰā§: āϏāĻŦāĻāĻŋāĻā§ āĻāĻŽāĻžāĻĻā§āϰ āĻāύā§āϝ āĻāĻžāĻ āĻāϰā§, āĻāĻŋāύā§āϤ⧠āĻā§āĻ āĻāĻžāύ⧠āύāĻž āĻā§āύ..."
// 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));
}... āĻāĻāĻž āϏāϤā§āϝ āϝ⧠āĻāĻāĻŋ āĻā§āϝāĻžāϞāĻā§āϰāĻŋāύā§āĻĄā§āϰ āϏāĻžāĻĨā§ āϏāĻžāĻŽāĻā§āĻāϏā§āϝāĻĒā§āϰā§āĻŖ āύāϝāĻŧ, āĻāĻŋāύā§āϤā§, āĻāĻžāĻā§āϝāĻā§āϰāĻŽā§, āĻāĻžāϞāĻā§āϰāĻŋāύā§āĻĄ āύāĻŋāĻā§āĻ āĻā§āĻŦ āĻāĻžāϰā§āϝāĻāϰāĻāĻžāĻŦā§ āϏāĻŦāĻžāĻāĻā§ āϏā§āĻāĻžāύ āĻĨā§āĻā§ āĻ ā§āϞ⧠āĻĻā§āϝāĻŧ :)
āϏāĻŽā§āĻāĻŦāϤ āĻā§āĻ āĻāĻŽāĻžāϰ āĻāĻ āĻā§āĻĄāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāϰ⧠āϤāĻžāϰ āĻāϰāĻ āĻāĻžāϞ āĻŦā§āϝāĻžāĻā§āϝāĻž āĻĻā§āĻŦā§ ...
āĻāϤā§āϏ: www.habr.com
