āĻāĻ āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŽāĻŋ āĻŽāĻāĻž āĻāĻ°āĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ˛āĻžāĻŽ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻĒāĻ°ā§āĻ¤āĻ¤āĻž āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻāĻ°ā§āĻ¨ āĻāĻŦāĻ āĻŽā§āĻļāĻŋāĻ¨ āĻā§āĻĄ āĻĨā§āĻā§ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻ (āĻāĻ°ā§ āĻ¸āĻ āĻŋāĻāĻāĻžāĻŦā§, Asm.js) āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻļāĻŋāĻā§āĻ¨āĨ¤ āĻĒāĻ°ā§āĻā§āĻˇāĻžāĻ° āĻāĻ¨ā§āĻ¯ QEMU āĻŦā§āĻā§ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻāĻŦāĻ āĻāĻŋāĻā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§ āĻšāĻžāĻŦāĻ°ā§āĻ° āĻāĻĒāĻ° āĻāĻāĻāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§ āĻāĻŽāĻžāĻā§ WebAssembly-āĻ āĻĒā§āĻ°ā§āĻā§āĻā§āĻāĻāĻŋ āĻ°āĻŋāĻŽā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻāĻŦāĻ āĻāĻŽāĻ¨āĻāĻŋ āĻ¨āĻŋāĻā§āĻā§ āĻā§āĻĄāĻŧā§ āĻĻā§āĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻĒā§āĻ¤ āĻāĻŽāĻŋ āĻā§āĻ¨ā§āĻāĻžāĻŦā§ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒāĻāĻŋ āĻāĻžāĻāĻ¨āĻŋ... āĻāĻžāĻ āĻāĻ˛āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻŦ āĻ§ā§āĻ°ā§ āĻ§ā§āĻ°ā§, āĻāĻŦāĻ āĻāĻāĻ¨, āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§āĻ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§ āĻšāĻžāĻāĻŋāĻ°
āĻāĻ°ā§āĻŽ
āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻļāĻŋāĻā§āĻāĻŋ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻžāĻāĻžāĻ¸ā§āĻā§āĻ°āĻŋāĻĒā§āĻā§ QEMU āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧ, āĻāĻāĻŦāĻžāĻ° āĻāĻāĻŋ āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻ°āĻžāĻ° āĻāĻŦāĻ āĻĒā§āĻ°āĻžāĻ¨ā§ āĻā§āĻ˛ā§āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§āĻāĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤
āĻ¤ā§āĻ°ā§āĻāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻ: āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒā§āĻ°āĻāĻžāĻļ āĻĨā§āĻā§ āĻļāĻžāĻāĻž
āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻā§āĻ˛ āĻāĻŋāĻ˛ āĻāĻĒāĻ¸ā§āĻā§āĻ°āĻŋāĻŽ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ 2.4.1 āĻĨā§āĻā§ āĻāĻŽāĻžāĻ° āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖāĻāĻŋ āĻĢā§āĻ°ā§āĻ āĻāĻ°āĻžāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻāĻŋ āĻāĻŽāĻžāĻ° āĻāĻžāĻā§ āĻāĻāĻāĻŋ āĻāĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛: āĻ¯āĻĻāĻŋ āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ°āĻŋāĻ˛āĻŋāĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻā§ āĻ¤āĻŦā§ āĻāĻāĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ 2.4 āĻāĻ° āĻā§āĻ¯āĻŧā§ āĻāĻ°āĻ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§āĻ˛ āĻāĻŦāĻ āĻāĻ°āĻ āĻŦā§āĻļāĻŋ āĻļāĻžāĻāĻž master
. āĻāĻŦāĻ āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻŋ āĻāĻŽāĻžāĻ° āĻ¨āĻŋāĻā§āĻ° āĻŦāĻžāĻāĻā§āĻ˛āĻŋāĻ° āĻāĻāĻāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¯ā§āĻ āĻāĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻāĻ˛ā§āĻĒāĻ¨āĻž āĻāĻ°ā§āĻāĻŋ, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻ° āĻ
āĻ¨ā§āĻ¯ āĻāĻžāĻ°ā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻāĨ¤ āĻ¯ā§ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻāĻž āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻāĻŋāĻāĻžāĻŦā§. āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻžāĻ¨ā§ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛: QEMU āĻ¸ā§āĻĨāĻŋāĻ° āĻĨāĻžāĻā§ āĻ¨āĻž, āĻāĻŦāĻ āĻāĻ āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§ āĻ¤āĻžāĻ°āĻž āĻā§āĻ¨āĻžāĻ°ā§āĻ āĻāĻ°āĻž āĻā§āĻĄā§āĻ° 10 āĻļāĻ¤āĻžāĻāĻļ āĻ
āĻĒā§āĻāĻŋāĻŽāĻžāĻāĻā§āĻļāĻ¨ āĻā§āĻˇāĻŖāĻž āĻāĻ°ā§āĻāĻŋāĻ˛ā§ˇ "āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻšāĻŋāĻŽāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻāĻ°āĻ¤ā§ āĻ¯āĻžāĻā§āĻāĻŋ," āĻāĻŽāĻŋ āĻāĻžāĻŦāĻ˛āĻžāĻŽ āĻāĻŦāĻ āĻā§āĻā§ āĻĒāĻĄāĻŧāĻ˛āĻžāĻŽā§ˇ āĻāĻāĻžāĻ¨ā§ āĻāĻŽāĻžāĻĻā§āĻ° āĻāĻāĻāĻŋ āĻĄāĻŋāĻā§āĻ°ā§āĻļāĻ¨ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§: QEMU.js-āĻāĻ° āĻāĻāĻ-āĻĨā§āĻ°ā§āĻĄ āĻĒā§āĻ°āĻā§āĻ¤āĻŋāĻ° āĻāĻžāĻ°āĻŖā§ āĻāĻŦāĻ āĻāĻ¸āĻ˛ QEMU āĻŽāĻžāĻ˛ā§āĻāĻŋ-āĻĨā§āĻ°ā§āĻĄāĻŋāĻāĻ¯āĻŧā§āĻ° āĻ
āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻā§ āĻŦā§āĻāĻžāĻ¯āĻŧ āĻ¨āĻž (āĻ
āĻ°ā§āĻĨāĻžā§, āĻāĻāĻ āĻ¸āĻžāĻĨā§ āĻāĻāĻžāĻ§āĻŋāĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻāĻšā§āĻ¨ āĻā§āĻĄ āĻĒāĻžāĻĨ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻā§āĻˇāĻŽāĻ¤āĻž, āĻāĻŦāĻ āĻļā§āĻ§ā§ "āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻžāĻ°ā§āĻ¨ā§āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§āĻ¨") āĻ¨āĻ¯āĻŧ, āĻāĻāĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§āĻ°ā§āĻŖ, āĻĨā§āĻ°ā§āĻĄāĻā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻāĻžāĻāĻā§āĻ˛āĻŋ āĻŦāĻžāĻāĻ°ā§ āĻĨā§āĻā§ āĻāĻ˛ āĻāĻ°āĻ¤ā§ āĻ¸āĻā§āĻˇāĻŽ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻŽāĻžāĻā§ "āĻāĻāĻŋ āĻāĻžāĻ˛ā§" āĻāĻ°āĻ¤ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛āĨ¤ āĻāĻāĻŋ āĻāĻāĻ¤ā§āĻ°ā§āĻāĻ°āĻŖā§āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻŋāĻā§ āĻĒā§āĻ°āĻžāĻā§āĻ¤āĻŋāĻ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĻāĻŋāĻ˛āĨ¤ āĻ¤āĻŦā§ āĻļāĻžāĻāĻž āĻĨā§āĻā§ āĻāĻŋāĻā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻ¨āĻžāĻ° āĻāĻāĻ¨āĻžāĻ āĻāĻā§āĻā§ master
, āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§ āĻāĻŽāĻŋ āĻāĻŽāĻžāĻ° āĻā§āĻĄ āĻāĻāĻ¤ā§āĻ°āĻŋāĻ¤ āĻāĻ°āĻžāĻ° āĻā§āĻˇā§āĻāĻž āĻāĻ°ā§āĻāĻŋ, āĻĒāĻ¯āĻŧā§āĻ¨ā§āĻ āĻ°āĻŋāĻ˛āĻŋāĻā§ (āĻāĻŦāĻ āĻ¤āĻžāĻ āĻāĻŽāĻžāĻ° āĻļāĻžāĻāĻžāĻ¯āĻŧ) āĻā§āĻ°āĻŋāĻ āĻŦāĻžāĻāĻžāĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¯ā§āĻ āĻāĻ°āĻž āĻšāĻ¤ āĻ¨āĻžāĨ¤
āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯ā§ āĻĒā§āĻ°ā§āĻā§āĻāĻžāĻāĻĒāĻāĻŋ āĻĢā§āĻ˛ā§ āĻĻā§āĻāĻ¯āĻŧāĻž, āĻ
āĻāĻļāĻā§āĻ˛āĻŋāĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻŋāĻā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻāĻŦāĻ āĻ¨āĻ¤ā§āĻ¨ āĻāĻŋāĻā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻāĻ¸ā§āĻāĻ°āĻŖ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻž āĻāĻāĻ¨āĻ āĻŦā§āĻ§āĻāĻŽā§āĻ¯ āĻāĻŦāĻ āĻāĻāĻ¨ āĻĨā§āĻā§ master
.
āĻā§āĻ˛ āĻ¨āĻŽā§āĻŦāĻ° āĻĻā§āĻ: TLP āĻĒāĻĻā§āĻ§āĻ¤āĻŋ
āĻ¸āĻāĻā§āĻˇā§āĻĒā§, āĻāĻāĻŋ āĻāĻāĻāĻŋ āĻā§āĻ˛ āĻ¨āĻ¯āĻŧ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§, āĻāĻāĻŋ "āĻā§āĻĨāĻžāĻ¯āĻŧ āĻāĻŦāĻ āĻā§āĻāĻžāĻŦā§ āĻ¸āĻ°āĻžāĻ¨ā§ āĻ¯āĻžāĻ¯āĻŧ?" āĻāĻŦāĻ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻāĻžāĻŦā§ "āĻāĻŽāĻ°āĻž āĻāĻŋ āĻ¸ā§āĻāĻžāĻ¨ā§ āĻ¯āĻžāĻŦ?" āĻāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖ āĻā§āĻ˛ āĻŦā§āĻāĻžāĻŦā§āĻāĻŋāĻ° āĻļāĻ°ā§āĻ¤ā§ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻāĻ˛ā§āĻĒ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻāĻāĻāĻŋ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯ āĻŽāĻžāĻ¤ā§āĻ°āĨ¤ āĻāĻ āĻ āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§ āĻāĻ¨āĻžāĻĄāĻŧāĻŋ āĻĒā§āĻ°ā§āĻā§āĻ°āĻžāĻŽāĻŋāĻ āĻāĻāĻāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ¸āĻā§āĻāĻ¤ āĻŦāĻŋāĻāĻ˛ā§āĻĒ āĻāĻŋāĻ˛, āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻŽāĻŋ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧāĻāĻžāĻŦā§ āĻāĻāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§āĻ¤ā§āĻ¤āĻŋ āĻāĻ°āĻ¤ā§ āĻāĻžāĻāĻ¨āĻŋāĨ¤ āĻāĻāĻŦāĻžāĻ° āĻāĻŽāĻŋ āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻžāĻ¨ā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻŋ āĻāĻ°āĻ¤ā§ āĻā§āĻ¯āĻŧā§āĻāĻŋāĻ˛āĻžāĻŽ: āĻĒāĻžāĻ°āĻŽāĻžāĻŖāĻŦāĻŋāĻ āĻāĻŽāĻŋāĻ, āĻ¸āĻā§āĻ¤āĻ¨ āĻā§āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ (āĻāĻŦāĻ "āĻāĻāĻž āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ (āĻ¸āĻ¤āĻ°ā§āĻāĻ¤āĻž āĻ¸āĻš) āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ āĻā§āĻˇāĻ°āĻā§ āĻāĻāĻ¤ā§āĻ°ā§ āĻ¸ā§āĻā§āĻ°āĻŋāĻ āĻāĻ°āĻž āĻ¨āĻ¯āĻŧ", āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻ˛āĻŋāĻ¨āĻžāĻ¸ āĻāĻ°āĻāĻžāĻ˛ā§āĻĄāĻ¸ āĻāĻāĻŦāĻžāĻ° āĻāĻāĻāĻŋāĻā§āĻ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§ āĻāĻžāĻ°āĻ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻ˛ā§āĻāĻŋāĻ˛ā§āĻ¨) āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤
āĻā§āĻ˛ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤āĻŋāĻ¨: āĻĢā§āĻ°ā§āĻĄ āĻ¨āĻž āĻā§āĻ¨ā§ āĻāĻ˛ā§ āĻ¨āĻžāĻŽāĻž
āĻāĻŽāĻŋ āĻāĻāĻ¨āĻ āĻāĻāĻŋ āĻĨā§āĻā§ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻāĻ¨āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻ¨ āĻāĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ āĻ¯ā§ āĻ¨ā§āĻ¯ā§āĻ¨āĻ¤āĻŽ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§āĻ§ā§āĻ° āĻĒāĻĨ āĻ āĻ¨ā§āĻ¸āĻ°āĻŖ āĻāĻ°āĻŦ āĻ¨āĻž, āĻāĻŦāĻ āĻāĻāĻŋ "āĻŦāĻĄāĻŧ āĻšāĻāĻ¯āĻŧāĻžāĻ° āĻāĻĒāĻžāĻ¯āĻŧ" āĻāĻ°āĻŦ, āĻ¯āĻĨāĻž, āĻ¸ā§āĻā§āĻ°ā§āĻ¯āĻžāĻ āĻĨā§āĻā§ āĻāĻŽāĻžāĻ° TCG āĻŦā§āĻ¯āĻžāĻāĻāĻ¨ā§āĻĄ āĻ˛āĻŋāĻāĻŦ, āĻ¯āĻžāĻ¤ā§ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻĒāĻ°ā§ āĻŦāĻ˛āĻ¤ā§ āĻšāĻŦā§, "āĻšā§āĻ¯āĻžāĻ, āĻāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ, āĻ§ā§āĻ°ā§ āĻ§ā§āĻ°ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻŽāĻŋ āĻ¸āĻŦāĻāĻŋāĻā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž - āĻāĻāĻžāĻŦā§āĻ TCI āĻ˛ā§āĻāĻž āĻšāĻ¯āĻŧ..." āĻ āĻ§āĻŋāĻāĻ¨ā§āĻ¤ā§, āĻāĻāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻāĻāĻžāĻŦā§ āĻāĻāĻāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§āĻ° āĻŽāĻ¤ā§ āĻŽāĻ¨ā§ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻŋ. āĻ¯ā§āĻŽāĻ¨ āĻ¤āĻžāĻ°āĻž āĻŦāĻ˛ā§, âāĻā§āĻ¨ā§āĻ āĻāĻĄāĻŧā§ āĻšāĻ¯āĻŧā§āĻā§Ņ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§āĻāĻž āĻ¨āĻ¯āĻŧâ: āĻā§āĻĄāĻāĻŋ āĻ āĻŦāĻļā§āĻ¯āĻ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻāĻ¤ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻāĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž - āĻāĻāĻŋāĻā§ āĻ āĻŦāĻļā§āĻ¯āĻ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ¸āĻāĻāĻ˛āĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻĒā§āĻļ āĻāĻ°āĻ¤ā§ āĻšāĻŦā§, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§ JS āĻŦāĻŋāĻļā§āĻŦ āĻĨā§āĻā§ āĻāĻāĻāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻ āĻŦāĻ¸ā§āĻ¤ā§, āĻ¯āĻž āĻāĻāĻ¨āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨āĨ¤ āĻā§āĻĨāĻžāĻ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻž āĻšāĻŦā§āĨ¤ āĻ¯āĻžāĻāĻšā§āĻ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ RISC āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§, āĻ¯āĻ¤āĻĻā§āĻ° āĻāĻŽāĻŋ āĻŦā§āĻāĻ¤ā§ āĻĒāĻžāĻ°āĻŋ, āĻāĻāĻāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻšāĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻ¨āĻž āĻā§āĻ¯āĻžāĻļā§ āĻ¸ā§āĻĒāĻˇā§āĻāĻāĻžāĻŦā§ āĻ°āĻŋāĻ¸ā§āĻ āĻāĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ - āĻ¯āĻĻāĻŋ āĻāĻāĻŋ āĻāĻŽāĻžāĻĻā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§, āĻ¯ā§āĻā§āĻ¨ā§ āĻā§āĻˇā§āĻ¤ā§āĻ°ā§, āĻāĻāĻŋ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋāĨ¤ āĻāĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻāĻŽāĻžāĻ° āĻļā§āĻˇ āĻĒā§āĻ°āĻā§āĻˇā§āĻāĻž āĻĨā§āĻā§, āĻāĻŽāĻŋ āĻļāĻŋāĻā§āĻāĻŋ āĻ¯ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻāĻŋ āĻ āĻ¨ā§āĻŦāĻžāĻĻ āĻŦā§āĻ˛āĻā§āĻ° āĻŽāĻžāĻāĻāĻžāĻ¨ā§ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§ āĻŦāĻ˛ā§ āĻŽāĻ¨ā§ āĻšāĻā§āĻā§ āĻ¨āĻž, āĻ¤āĻžāĻ āĻāĻŽāĻžāĻĻā§āĻ° āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻā§āĻ¨ā§ āĻ āĻĢāĻ¸ā§āĻ āĻĨā§āĻā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻž āĻŦāĻžāĻāĻāĻā§āĻĄā§āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ āĻ¨ā§āĻ āĻāĻŦāĻ āĻāĻŽāĻ°āĻž āĻāĻāĻŋ āĻāĻŋāĻŦāĻŋ-āĻ¤ā§ āĻĢāĻžāĻāĻļāĻ¨ āĻĨā§āĻā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĨ¤ .
āĻ¤āĻžāĻ°āĻž āĻāĻ¸ā§ āĻ˛āĻžāĻĨāĻŋ āĻŽāĻžāĻ°āĻ˛
āĻ¯āĻĻāĻŋāĻ āĻāĻŽāĻŋ āĻā§āĻ˛āĻžāĻ āĻŽāĻžāĻ¸ā§ āĻā§āĻĄāĻāĻŋ āĻāĻŦāĻžāĻ° āĻ˛āĻŋāĻāĻ¤ā§ āĻļā§āĻ°ā§ āĻāĻ°āĻŋ, āĻāĻāĻāĻŋ āĻŽā§āĻ¯āĻžāĻāĻŋāĻ āĻāĻŋāĻ āĻ
āĻ˛āĻā§āĻˇā§āĻ¯ā§ āĻ¤ā§āĻ°āĻŋ āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛: āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻāĻŋāĻāĻšāĻžāĻŦ āĻĨā§āĻā§ āĻāĻŋāĻ āĻŋāĻā§āĻ˛āĻŋ āĻāĻ¸ā§āĻ¯ā§ āĻāĻŦāĻ āĻĒā§āĻ˛ āĻ
āĻ¨ā§āĻ°ā§āĻ§ā§āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻā§ āĻŦāĻŋāĻā§āĻāĻĒā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§ āĻāĻ¸ā§, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻāĻžāĻ¨ā§, āĻšāĻ āĻžā§ āĻĨā§āĻ°ā§āĻĄā§ āĻāĻ˛ā§āĻ˛ā§āĻ āĻāĻ°ā§āĻ¨
āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ°ā§ āĻāĻŋāĻ˛
- āĻā§āĻ¨ā§ āĻāĻ¨āĻ¸ā§āĻāĻ˛ā§āĻļāĻ¨ āĻāĻžāĻĄāĻŧāĻžāĻ āĻļāĻŋāĻā§āĻˇāĻžāĻŽā§āĻ˛āĻ āĻāĻŋāĻā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž
- āĻāĻāĻāĻāĻ¸-āĻ āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨, āĻ¯ā§āĻāĻžāĻ¨ā§ āĻā§āĻāĻŦ āĻ āĻ¨ā§āĻ¸āĻžāĻ°ā§, āĻāĻāĻŽāĻžāĻ¤ā§āĻ° āĻ ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻā§āĻļāĻ¨ āĻ¯āĻž āĻĢā§āĻ˛āĻžāĻāĻ¤ā§ āĻā§āĻĄ āĻā§āĻ¨āĻžāĻ°ā§āĻļāĻ¨ āĻāĻ°āĻžāĻ° āĻ āĻ§āĻŋāĻāĻžāĻ° āĻ°āĻžāĻā§ āĻ¤āĻž āĻšāĻ˛ āĻāĻāĻāĻŋ āĻā§āĻāĻ¸ āĻāĻā§āĻāĻŋāĻ¨ (āĻāĻāĻŋ āĻāĻŋ āĻ¸āĻ¤ā§āĻ¯?)
- āĻŽāĻŋāĻ¨āĻŋ-āĻāĻāĻ¸-āĻāĻ° āĻĒā§āĻ°āĻĻāĻ°ā§āĻļāĻ¨ - āĻāĻāĻ-āĻĢā§āĻ˛āĻĒāĻŋ, āĻ āĻ¨ā§āĻ¤āĻ°ā§āĻ¨āĻŋāĻ°ā§āĻŽāĻŋāĻ¤, āĻ¸āĻŦ āĻ§āĻ°āĻŖā§āĻ° āĻĢāĻžāĻ°ā§āĻŽāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ°, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ...
āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ° āĻ°āĻžāĻ¨āĻāĻžāĻāĻŽ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯
āĻāĻŽāĻŋ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻŦāĻ˛ā§āĻāĻŋ, QEMU āĻŽāĻžāĻ˛ā§āĻāĻŋāĻĨā§āĻ°ā§āĻĄāĻŋāĻāĻ¯āĻŧā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻŦāĻĻā§āĻ§, āĻ¤āĻŦā§ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻāĻŋ āĻ¨ā§āĻāĨ¤ āĻ āĻŋāĻ āĻāĻā§, āĻ¯ā§, āĻ¨āĻž... āĻĒā§āĻ°āĻĨāĻŽā§ āĻāĻāĻŋ āĻāĻā§āĻŦāĻžāĻ°ā§āĻ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻāĻŋāĻ˛ āĻ¨āĻž, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻāĻ¯āĻŧā§āĻŦāĻāĻ¯āĻŧāĻžāĻ°ā§āĻāĻžāĻ°āĻ°āĻž āĻšāĻžāĻāĻŋāĻ° - āĻ¯āĻ¤āĻĻā§āĻ° āĻāĻŽāĻŋ āĻŦā§āĻāĻŋ, āĻāĻāĻŋ āĻŦāĻžāĻ°ā§āĻ¤āĻž āĻĒāĻžāĻ¸ āĻāĻ°āĻžāĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻŽāĻžāĻ˛ā§āĻāĻŋāĻĨā§āĻ°ā§āĻĄāĻŋāĻ āĻāĻžāĻ āĻāĻ°āĻž āĻā§āĻ°āĻŋāĻ¯āĻŧā§āĻŦāĻ˛ āĻāĻžāĻĄāĻŧāĻž. āĻ¸ā§āĻŦāĻžāĻāĻžāĻŦāĻŋāĻāĻāĻžāĻŦā§āĻ, āĻāĻžāĻ āĻāĻ°āĻž āĻŽā§āĻŽāĻ°āĻŋ āĻŽāĻĄā§āĻ˛ā§āĻ° āĻāĻĒāĻ° āĻāĻŋāĻ¤ā§āĻ¤āĻŋ āĻāĻ°ā§ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻā§āĻĄ āĻĒā§āĻ°ā§āĻ āĻāĻ°āĻžāĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻāĻāĻŋ āĻāĻ˛ā§āĻ˛ā§āĻāĻ¯ā§āĻā§āĻ¯ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¤ā§āĻ°āĻŋ āĻāĻ°ā§āĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ° āĻāĻ¨āĻāĻŖā§āĻ° āĻāĻžāĻĒā§ āĻ¨āĻžāĻŽā§ āĻ¤āĻž āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ SharedArrayBuffers
. āĻāĻāĻŋ āĻ§ā§āĻ°ā§ āĻ§ā§āĻ°ā§ āĻāĻžāĻ˛ā§ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻāĻŋāĻ˛, āĻ¤āĻžāĻ°āĻž āĻŦāĻŋāĻāĻŋāĻ¨ā§āĻ¨ āĻŦā§āĻ°āĻžāĻāĻāĻžāĻ°ā§ āĻāĻ° āĻĒā§āĻ°āĻŦāĻ°ā§āĻ¤āĻ¨ āĻāĻĻāĻ¯āĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋāĻ˛, āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻ¤āĻžāĻ°āĻž āĻ¨āĻŦāĻŦāĻ°ā§āĻˇ āĻāĻĻāĻ¯āĻžāĻĒāĻ¨ āĻāĻ°ā§āĻāĻŋāĻ˛, āĻāĻŦāĻ āĻ¤āĻžāĻ°āĻĒāĻ°ā§ āĻŽā§āĻ˛ā§āĻāĻĄāĻžāĻāĻ¨... āĻ¯āĻžāĻ° āĻĒāĻ°ā§ āĻ¤āĻžāĻ°āĻž āĻāĻ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ā§ āĻĒā§āĻāĻā§āĻāĻŋāĻ˛ āĻ¯ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°āĻŋāĻŽāĻžāĻĒ āĻŽā§āĻāĻž āĻŦāĻž āĻŽā§āĻāĻž, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻāĻžāĻ āĻāĻ°āĻž āĻ¸ā§āĻŽā§āĻ¤āĻŋ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻĨā§āĻ°ā§āĻĄ āĻāĻžāĻāĻ¨ā§āĻāĻžāĻ° āĻŦā§āĻĻā§āĻ§āĻŋ, āĻāĻāĻž āĻ¸āĻŦ āĻāĻāĻ
āĻĻā§āĻŦāĻŋāĻ¤ā§āĻ¯āĻŧ āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯āĻāĻŋ āĻšāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻļāĻ¨ā§āĻ° āĻ
āĻ¸āĻŽā§āĻāĻŦāĻ¤āĻž: āĻāĻĒāĻ¨āĻŋ āĻ¸āĻšāĻāĻāĻžāĻŦā§ āĻ¨āĻŋāĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻž, āĻŦāĻ°ā§āĻ¤āĻŽāĻžāĻ¨ āĻĒā§āĻ°āĻ¸āĻā§āĻ āĻ¸āĻāĻ°āĻā§āĻˇāĻŖ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻāĻŦāĻ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻ¸āĻžāĻĨā§ āĻāĻāĻāĻŋ āĻ¨āĻ¤ā§āĻ¨āĻāĻŋāĻ¤ā§ āĻ¸ā§āĻ¯ā§āĻāĻ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŦā§āĻ¨ āĻ¨āĻžāĨ¤ āĻāĻ˛ āĻ¸ā§āĻā§āĻ¯āĻžāĻ JS āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛ āĻŽā§āĻļāĻŋāĻ¨ āĻĻā§āĻŦāĻžāĻ°āĻž āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻŋāĻ¤ āĻšāĻ¯āĻŧāĨ¤ āĻŽāĻ¨ā§ āĻšāĻŦā§, āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻā§, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻŽāĻ°āĻž āĻāĻāĻ¨āĻ āĻĒā§āĻ°ā§āĻŦā§āĻ° āĻĒā§āĻ°āĻŦāĻžāĻšāĻā§āĻ˛āĻŋ āĻ¸āĻŽā§āĻĒā§āĻ°ā§āĻŖāĻ°ā§āĻĒā§ āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¯āĻŧāĻžāĻ˛āĻŋ āĻĒāĻ°āĻŋāĻāĻžāĻ˛āĻ¨āĻž āĻāĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§āĻāĻŋ? āĻāĻ¸āĻ˛ āĻŦāĻŋāĻˇāĻ¯āĻŧāĻāĻŋ āĻšāĻ˛ āĻ¯ā§ QEMU-āĻ¤ā§ āĻŦā§āĻ˛āĻ I/O āĻĒā§āĻ°āĻ¯āĻŧā§āĻ āĻāĻ°āĻž āĻšāĻ¯āĻŧ āĻā§āĻ°ā§āĻāĻŋāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻāĻŦāĻ āĻāĻāĻžāĻ¨ā§āĻ āĻ¨āĻŋāĻŽā§āĻ¨-āĻ¸ā§āĻ¤āĻ°ā§āĻ° āĻ¸ā§āĻā§āĻ¯āĻžāĻ āĻŽā§āĻ¯āĻžāĻ¨āĻŋāĻĒā§āĻ˛ā§āĻļāĻ¨āĻā§āĻ˛āĻŋ āĻāĻžāĻā§ āĻāĻ¸āĻŦā§āĨ¤ āĻ¸ā§āĻāĻžāĻā§āĻ¯āĻŦāĻļāĻ¤, Emscipten-āĻ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§āĻ āĻ
ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻ
āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ āĻāĻāĻāĻŋ āĻĒā§āĻ°āĻā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ°āĻ¯āĻŧā§āĻā§, āĻāĻŽāĻ¨āĻāĻŋ āĻĻā§āĻāĻŋ:
āĻāĻ āĻŽā§āĻšā§āĻ°ā§āĻ¤ā§, āĻāĻŽāĻŋ āĻāĻāĻ¨āĻ āĻā§āĻĄāĻāĻŋāĻā§ WASM-āĻ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻāĻāĻāĻŋāĻ¤ā§ āĻŦāĻŋāĻāĻā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°āĻŋāĻ¨āĻŋ āĻāĻŦāĻ Emterpreter āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻāĻ°ā§ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°ā§āĻāĻŋ, āĻ¤āĻžāĻ āĻŦā§āĻ˛āĻ āĻĄāĻŋāĻāĻžāĻāĻ¸āĻā§āĻ˛āĻŋ āĻāĻāĻ¨āĻ āĻāĻžāĻ āĻāĻ°ā§ āĻ¨āĻž (āĻĒāĻ°āĻŦāĻ°ā§āĻ¤ā§ āĻ¸āĻŋāĻ°āĻŋāĻā§ āĻĻā§āĻā§āĻ¨, āĻ¯ā§āĻŽāĻ¨ āĻ¤āĻžāĻ°āĻž āĻŦāĻ˛ā§...)āĨ¤ āĻ āĻ°ā§āĻĨāĻžā§, āĻļā§āĻˇ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻĒāĻ¨āĻžāĻ° āĻāĻ āĻŽāĻāĻžāĻ° āĻ¸ā§āĻ¤āĻ°āĻ¯ā§āĻā§āĻ¤ āĻāĻŋāĻ¨āĻŋāĻ¸āĻāĻŋāĻ° āĻŽāĻ¤ā§ āĻāĻŋāĻā§ āĻĒāĻžāĻāĻ¯āĻŧāĻž āĻāĻāĻŋāĻ¤:
- āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻž āĻŦā§āĻ˛āĻ I/OāĨ¤ āĻāĻā§āĻāĻž, āĻāĻĒāĻ¨āĻŋ āĻāĻŋ āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ āĻ¨ā§āĻāĻŋāĻ āĻĒāĻžāĻ°āĻĢāĻ°āĻŽā§āĻ¯āĻžāĻ¨ā§āĻ¸ āĻ¸āĻš āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻž NVMe āĻāĻļāĻž āĻāĻ°ā§āĻāĻŋāĻ˛ā§āĻ¨? đ
- āĻ¸ā§āĻĨāĻŋāĻ°āĻāĻžāĻŦā§ āĻ¸āĻāĻāĻ˛āĻŋāĻ¤ āĻĒā§āĻ°āĻ§āĻžāĻ¨ QEMU āĻā§āĻĄ (āĻ āĻ¨ā§āĻŦāĻžāĻĻāĻ, āĻ āĻ¨ā§āĻ¯āĻžāĻ¨ā§āĻ¯ āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻž āĻĄāĻŋāĻāĻžāĻāĻ¸, āĻāĻ¤ā§āĻ¯āĻžāĻĻāĻŋ)
- āĻĄāĻžāĻāĻ¨āĻžāĻŽāĻŋāĻā§āĻ¯āĻžāĻ˛āĻŋ āĻā§āĻ¸ā§āĻ āĻā§āĻĄ WASM āĻ āĻāĻŽā§āĻĒāĻžāĻāĻ˛ āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§
QEMU āĻā§āĻ¸ā§āĻ° āĻŦā§āĻļāĻŋāĻˇā§āĻā§āĻ¯
āĻāĻĒāĻ¨āĻŋ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻāĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§ āĻ āĻ¨ā§āĻŽāĻžāĻ¨ āĻāĻ°ā§āĻā§āĻ¨, āĻā§āĻ¸ā§āĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻ āĻ¨ā§āĻāĻ°āĻŖ āĻāĻ°āĻžāĻ° āĻā§āĻĄ āĻāĻŦāĻ āĻšā§āĻ¸ā§āĻ āĻŽā§āĻļāĻŋāĻ¨ āĻ¨āĻŋāĻ°ā§āĻĻā§āĻļāĻžāĻŦāĻ˛ā§ āĻ¤ā§āĻ°āĻŋ āĻāĻ°āĻžāĻ° āĻā§āĻĄ QEMU-āĻ¤ā§ āĻāĻ˛āĻžāĻĻāĻž āĻāĻ°āĻž āĻšāĻ¯āĻŧā§āĻā§āĨ¤ āĻĒā§āĻ°āĻā§āĻ¤āĻĒāĻā§āĻˇā§, āĻāĻāĻŋ āĻāĻŽāĻ¨āĻāĻŋ āĻāĻāĻā§ āĻā§āĻļāĻ˛ā§:
- āĻā§āĻ¸ā§āĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ° āĻāĻā§
- āĻšāĻ˛ āĻāĻā§āĻ¸āĻŋāĻ˛āĻžāĻ°ā§āĻāĻ°, āĻ¯āĻĨāĻž, āĻ˛āĻŋāĻ¨āĻžāĻā§āĻ¸ā§ āĻšāĻžāĻ°ā§āĻĄāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ā§āĻ° āĻāĻ¨ā§āĻ¯ KVM (āĻĒāĻ°āĻ¸ā§āĻĒāĻ°ā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻā§āĻ¸ā§āĻ āĻāĻŦāĻ āĻšā§āĻ¸ā§āĻ āĻ¸āĻŋāĻ¸ā§āĻā§āĻŽā§āĻ° āĻāĻ¨ā§āĻ¯), āĻ¯ā§ āĻā§āĻ¨ā§ āĻāĻžāĻ¯āĻŧāĻāĻžāĻ¯āĻŧ JIT āĻā§āĻĄ āĻ¤ā§āĻ°āĻŋāĻ° āĻāĻ¨ā§āĻ¯ TCGāĨ¤ QEMU 2.9 āĻĻāĻŋāĻ¯āĻŧā§ āĻļā§āĻ°ā§ āĻāĻ°ā§, Windows āĻ HAXM āĻšāĻžāĻ°ā§āĻĄāĻāĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻāĻžāĻ°ā§āĻā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻāĻā§āĻļāĻ¨ āĻ¸ā§āĻā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§āĻ° āĻāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻāĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§āĻā§ (
āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ ) - āĻ¯āĻĻāĻŋ 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 (āĻā§āĻˇā§āĻĻā§āĻ° āĻā§āĻĄ āĻā§āĻ¨āĻžāĻ°ā§āĻāĻ°)
āĻāĻŋāĻ¸āĻŋāĻāĻŋ 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 āĻĒā§āĻ°āĻĻāĻžāĻ¨ āĻāĻ°ā§
āĻ¯āĻžāĻāĻšā§āĻ, āĻāĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻā§āĻ¨ā§ āĻĻā§āĻāĻžāĻˇā§āĻ° āĻāĻĻāĻžāĻšāĻ°āĻŖ āĻ āĻĒā§āĻ°āĻ¯āĻŧā§āĻāĻ¨ā§āĻ¯āĻŧ āĻ¤ā§āĻ°āĻŋ āĻāĻŦāĻ āĻŽā§āĻā§ āĻĢā§āĻ˛āĻž āĻāĻžāĻĄāĻŧāĻžāĻ āĻĢā§āĻ˛āĻžāĻāĻ¤ā§ āĻā§āĻĄ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻāĻ°āĻ¤ā§ āĻāĻžāĻ¨, āĻ¤āĻžāĻšāĻ˛ā§ āĻāĻ āĻ¯ā§āĻā§āĻ¤āĻŋāĻāĻŋāĻā§ āĻāĻāĻāĻŋ 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
.
āĻāĻĒāĻžāĻ¯āĻŧ āĻĻā§āĻŦāĻžāĻ°āĻž,
āĻāĻāĻ¨ āĻ āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤āĻ. āĻā§āĻ āĻāĻā§āĻ°āĻšā§ āĻšāĻ˛ā§ āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻ āĻ¨ā§āĻ¯ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻšāĻŦā§. āĻ¯āĻĨāĻž, āĻ āĻ¨ā§āĻ¤āĻ¤ āĻ āĻŦāĻļā§āĻˇ āĻŽāĻžāĻ¤ā§āĻ° āĻŦā§āĻ˛āĻ āĻĄāĻŋāĻāĻžāĻāĻ¸ āĻāĻžāĻ āĻāĻ°ā§. āĻāĻ¯āĻŧā§āĻŦ āĻ ā§āĻ¯āĻžāĻ¸ā§āĻŽā§āĻŦāĻ˛āĻŋ āĻŽāĻĄāĻŋāĻāĻ˛āĻā§āĻ˛āĻŋāĻ° āĻ¸āĻāĻāĻ˛āĻ¨āĻā§ āĻ ā§āĻ¯āĻžāĻ¸āĻŋāĻā§āĻā§āĻ°ā§āĻ¨āĻžāĻ¸ āĻāĻ°āĻžāĻ āĻŦā§āĻ§āĻāĻŽā§āĻ¯ āĻšāĻ¤ā§ āĻĒāĻžāĻ°ā§, āĻ¯ā§āĻŽāĻ¨āĻāĻŋ āĻā§āĻāĻ¸ āĻŦāĻŋāĻļā§āĻŦā§ āĻĒā§āĻ°āĻĨāĻžāĻāĻ¤, āĻ¯ā§āĻšā§āĻ¤ā§ āĻāĻāĻ¨āĻ āĻāĻāĻāĻŋ āĻĻā§āĻāĻžāĻˇā§ āĻ°āĻ¯āĻŧā§āĻā§ āĻ¯ā§āĻāĻŋ āĻ¨ā§āĻāĻŋāĻ āĻŽāĻĄāĻŋāĻāĻ˛ āĻĒā§āĻ°āĻ¸ā§āĻ¤ā§āĻ¤ āĻ¨āĻž āĻšāĻāĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ āĻāĻ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻāĻ°āĻ¤ā§ āĻĒāĻžāĻ°ā§āĨ¤
āĻ āĻŦāĻļā§āĻˇā§ āĻāĻāĻāĻŋ āĻ§āĻžāĻāĻ§āĻž: āĻāĻĒāĻ¨āĻŋ āĻāĻāĻāĻŋ 32-āĻŦāĻŋāĻ āĻāĻ°ā§āĻāĻŋāĻā§āĻāĻāĻžāĻ°ā§ āĻāĻāĻāĻŋ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋ āĻ¸āĻāĻāĻ˛āĻ¨ āĻāĻ°ā§āĻā§āĻ¨, āĻāĻŋāĻ¨ā§āĻ¤ā§ āĻā§āĻĄāĻāĻŋ, āĻŽā§āĻŽāĻ°āĻŋ āĻ āĻĒāĻžāĻ°ā§āĻļāĻ¨ā§āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§, āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻ¨ āĻĨā§āĻā§, āĻ¸ā§āĻā§āĻ¯āĻžāĻā§āĻ° āĻā§āĻĨāĻžāĻ āĻŦāĻž 2-āĻŦāĻŋāĻ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ¸ā§āĻĨāĻžāĻ¨ā§āĻ° āĻāĻĒāĻ°ā§āĻ° 32 āĻāĻŋāĻāĻžāĻŦāĻžāĻāĻā§āĻ° āĻ āĻ¨ā§āĻ¯ āĻā§āĻĨāĻžāĻ āĻāĻ ā§ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻ¯ā§ āĻŦāĻžāĻāĻ¨āĻžāĻ°āĻŋāĻ¨ā§āĻ° āĻĻā§āĻˇā§āĻāĻŋāĻā§āĻŖ āĻĨā§āĻā§ āĻāĻāĻŋ āĻā§āĻŦ āĻŦāĻĄāĻŧ āĻāĻāĻāĻŋ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§āĻĒ āĻ āĻŋāĻāĻžāĻ¨āĻž āĻ ā§āĻ¯āĻžāĻā§āĻ¸ā§āĻ¸ āĻāĻ°āĻā§āĨ¤ āĻāĻŋāĻāĻžāĻŦā§ āĻāĻ āĻāĻžāĻāĻžāĻāĻžāĻāĻŋ āĻĒā§āĻ¤ā§?
āĻ ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ā§āĻ° āĻĒāĻĨā§
āĻāĻŽāĻŋ āĻāĻāĻŋ āĻĒāĻ°ā§āĻā§āĻˇāĻž āĻāĻ°ā§ āĻļā§āĻˇ āĻāĻ°āĻŋāĻ¨āĻŋ, āĻ¤āĻŦā§ āĻāĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻāĻŋāĻ¨ā§āĻ¤āĻž āĻāĻŋāĻ˛ "āĻ¯āĻĻāĻŋ āĻāĻŽāĻŋ 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));
}
... āĻāĻāĻž āĻ¸āĻ¤ā§āĻ¯ āĻ¯ā§ āĻāĻāĻŋ āĻā§āĻ¯āĻžāĻ˛āĻā§āĻ°āĻŋāĻ¨ā§āĻĄā§āĻ° āĻ¸āĻžāĻĨā§ āĻ¸āĻžāĻŽāĻā§āĻāĻ¸ā§āĻ¯āĻĒā§āĻ°ā§āĻŖ āĻ¨āĻ¯āĻŧ, āĻāĻŋāĻ¨ā§āĻ¤ā§, āĻāĻžāĻā§āĻ¯āĻā§āĻ°āĻŽā§, āĻāĻžāĻ˛āĻā§āĻ°āĻŋāĻ¨ā§āĻĄ āĻ¨āĻŋāĻā§āĻ āĻā§āĻŦ āĻāĻžāĻ°ā§āĻ¯āĻāĻ°āĻāĻžāĻŦā§ āĻ¸āĻŦāĻžāĻāĻā§ āĻ¸ā§āĻāĻžāĻ¨ āĻĨā§āĻā§ āĻ ā§āĻ˛ā§ āĻĻā§āĻ¯āĻŧ :)
āĻ¸āĻŽā§āĻāĻŦāĻ¤ āĻā§āĻ āĻāĻŽāĻžāĻ° āĻāĻ āĻā§āĻĄāĻāĻŋ āĻā§āĻāĻžāĻŦā§ āĻāĻžāĻ āĻāĻ°ā§ āĻ¤āĻžāĻ° āĻāĻ°āĻ āĻāĻžāĻ˛ āĻŦā§āĻ¯āĻžāĻā§āĻ¯āĻž āĻĻā§āĻŦā§ ...
āĻāĻ¤ā§āĻ¸: www.habr.com