QEMU.js: āĻāĻ–āĻ¨ āĻ¸āĻŋāĻ°āĻŋāĻ¯āĻŧāĻžāĻ¸ āĻāĻŦāĻ‚ WASM āĻāĻ° āĻ¸āĻžāĻĨā§‡

āĻāĻ• āĻ¸āĻŽāĻ¯āĻŧ āĻ†āĻŽāĻŋ āĻŽāĻœāĻž āĻ•āĻ°āĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ˛āĻžāĻŽ āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤āĻ¤āĻž āĻĒā§āĻ°āĻŽāĻžāĻŖ āĻ•āĻ°ā§āĻ¨ āĻāĻŦāĻ‚ āĻŽā§‡āĻļāĻŋāĻ¨ āĻ•ā§‹āĻĄ āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ (āĻ†āĻ°ā§‹ āĻ¸āĻ āĻŋāĻ•āĻ­āĻžāĻŦā§‡, Asm.js) āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ āĻ¤āĻž āĻļāĻŋāĻ–ā§āĻ¨āĨ¤ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻžāĻ° āĻœāĻ¨ā§āĻ¯ QEMU āĻŦā§‡āĻ›ā§‡ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻ¸āĻŽāĻ¯āĻŧ āĻĒāĻ°ā§‡ āĻšāĻžāĻŦāĻ°ā§‡āĻ° āĻ‰āĻĒāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ā§‡ āĻ†āĻŽāĻžāĻ•ā§‡ WebAssembly-āĻ āĻĒā§āĻ°ā§‹āĻœā§‡āĻ•ā§āĻŸāĻŸāĻŋ āĻ°āĻŋāĻŽā§‡āĻ• āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻžāĻŽāĻ°ā§āĻļ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻ¨āĻŋāĻœā§‡āĻ•ā§‡ āĻ›ā§‡āĻĄāĻŧā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻžāĻ¯āĻŧ āĻ¸āĻŽāĻžāĻĒā§āĻ¤ āĻ†āĻŽāĻŋ āĻ•ā§‹āĻ¨ā§‹āĻ­āĻžāĻŦā§‡ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒāĻŸāĻŋ āĻšāĻžāĻ‡āĻ¨āĻŋ... āĻ•āĻžāĻœ āĻšāĻ˛āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ–ā§āĻŦ āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡, āĻāĻŦāĻ‚ āĻāĻ–āĻ¨, āĻ¸āĻŽā§āĻĒā§āĻ°āĻ¤āĻŋ āĻ¸ā§‡āĻ‡ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡ āĻšāĻžāĻœāĻŋāĻ° āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻŦāĻŋāĻˇāĻ¯āĻŧā§‡āĻ° āĻ‰āĻĒāĻ° "āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻŸāĻŋ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻļā§‡āĻˇ āĻšāĻ˛?" āĻ†āĻŽāĻžāĻ° āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤ āĻ‰āĻ¤ā§āĻ¤āĻ°ā§‡āĻ° āĻœāĻŦāĻžāĻŦā§‡, āĻ†āĻŽāĻŋ āĻļā§āĻ¨ā§‡āĻ›āĻŋ "āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻļā§‹āĻ¨āĻžāĻšā§āĻ›ā§‡āĨ¤" āĻ­āĻžāĻ˛, āĻ†āĻĒāĻ¨āĻŋ āĻ¯āĻĻāĻŋ āĻĒāĻžāĻ°ā§‡āĻ¨, āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻŦāĻ¨ā§āĻ§ āĻšāĻŦā§‡. āĻšāĻ¯āĻŧāĻ¤ā§‹ āĻ•ā§‡āĻ‰ āĻāĻŸāĻž āĻĻāĻ°āĻ•āĻžāĻ°ā§€ āĻ–ā§āĻāĻœā§‡ āĻĒāĻžāĻŦā§‡āĻ¨. āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻĒāĻžāĻ āĻ• QEMU āĻ•ā§‹āĻĄ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻļāĻ¨ āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄā§‡āĻ° āĻĄāĻŋāĻœāĻžāĻ‡āĻ¨ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻ¤āĻĨā§āĻ¯ āĻļāĻŋāĻ–āĻŦā§‡, āĻ¸ā§‡āĻ‡āĻ¸āĻžāĻĨā§‡ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ“āĻ¯āĻŧā§‡āĻŦ āĻ…ā§āĻ¯āĻžāĻĒā§āĻ˛āĻŋāĻ•ā§‡āĻļāĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻ•āĻŸāĻŋ āĻœāĻžāĻ¸ā§āĻŸ-āĻ‡āĻ¨-āĻŸāĻžāĻ‡āĻŽ āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛āĻžāĻ° āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻšāĻ¯āĻŧāĨ¤

āĻ•āĻ°ā§āĻŽ

āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻ‡āĻ¤āĻŋāĻŽāĻ§ā§āĻ¯ā§‡āĻ‡ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸā§‡ QEMU āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧ, āĻāĻ‡āĻŦāĻžāĻ° āĻāĻŸāĻŋ āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻžāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ•āĻ°āĻžāĻ° āĻāĻŦāĻ‚ āĻĒā§āĻ°āĻžāĻ¨ā§‹ āĻ­ā§āĻ˛ā§‡āĻ° āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨ā§‡āĻ“āĻ¯āĻŧāĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤

āĻ¤ā§āĻ°ā§āĻŸāĻŋ āĻ¨āĻŽā§āĻŦāĻ° āĻāĻ•: āĻŦāĻŋāĻ¨ā§āĻĻā§ āĻĒā§āĻ°āĻ•āĻžāĻļ āĻĨā§‡āĻ•ā§‡ āĻļāĻžāĻ–āĻž

āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻ­ā§āĻ˛ āĻ›āĻŋāĻ˛ āĻ†āĻĒāĻ¸ā§āĻŸā§āĻ°āĻŋāĻŽ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ 2.4.1 āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻžāĻ° āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖāĻŸāĻŋ āĻĢā§‹āĻ°ā§āĻ• āĻ•āĻ°āĻžāĨ¤ āĻ¤āĻžāĻ°āĻĒāĻ°ā§‡ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•āĻžāĻ›ā§‡ āĻāĻ•āĻŸāĻŋ āĻ­āĻžāĻ˛ āĻ§āĻžāĻ°āĻŖāĻž āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: āĻ¯āĻĻāĻŋ āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ°āĻŋāĻ˛āĻŋāĻœ āĻŦāĻŋāĻĻā§āĻ¯āĻŽāĻžāĻ¨ āĻĨāĻžāĻ•ā§‡ āĻ¤āĻŦā§‡ āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ 2.4 āĻāĻ° āĻšā§‡āĻ¯āĻŧā§‡ āĻ†āĻ°āĻ“ āĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻļā§€āĻ˛ āĻāĻŦāĻ‚ āĻ†āĻ°āĻ“ āĻŦā§‡āĻļāĻŋ āĻļāĻžāĻ–āĻž master. āĻāĻŦāĻ‚ āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ¨āĻŋāĻœā§‡āĻ° āĻŦāĻžāĻ—āĻ—ā§āĻ˛āĻŋāĻ° āĻāĻ•āĻŸāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯ā§āĻ¯ āĻĒāĻ°āĻŋāĻŽāĻžāĻŖ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻĒāĻ°āĻŋāĻ•āĻ˛ā§āĻĒāĻ¨āĻž āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻžāĻ° āĻ…āĻ¨ā§āĻ¯ āĻ•āĻžāĻ°ā§‹āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡āĨ¤ āĻ¯ā§‡ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻāĻŸāĻž āĻĒāĻ°āĻŋāĻŖāĻ¤ āĻ•āĻŋāĻ­āĻžāĻŦā§‡. āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻžāĻ¨ā§‡ āĻŦāĻŋāĻˇāĻ¯āĻŧ āĻšāĻ˛: QEMU āĻ¸ā§āĻĨāĻŋāĻ° āĻĨāĻžāĻ•ā§‡ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻāĻ• āĻĒāĻ°ā§āĻ¯āĻžāĻ¯āĻŧā§‡ āĻ¤āĻžāĻ°āĻž āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻŸ āĻ•āĻ°āĻž āĻ•ā§‹āĻĄā§‡āĻ° 10 āĻļāĻ¤āĻžāĻ‚āĻļ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ˜ā§‹āĻˇāĻŖāĻž āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§ˇ "āĻšā§āĻ¯āĻžāĻ, āĻāĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻšāĻŋāĻŽāĻžāĻ¯āĻŧāĻŋāĻ¤ āĻ•āĻ°āĻ¤ā§‡ āĻ¯āĻžāĻšā§āĻ›āĻŋ," āĻ†āĻŽāĻŋ āĻ­āĻžāĻŦāĻ˛āĻžāĻŽ āĻāĻŦāĻ‚ āĻ­ā§‡āĻ™ā§‡ āĻĒāĻĄāĻŧāĻ˛āĻžāĻŽā§ˇ āĻāĻ–āĻžāĻ¨ā§‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻāĻ•āĻŸāĻŋ āĻĄāĻŋāĻ—ā§āĻ°ā§‡āĻļāĻ¨ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡: QEMU.js-āĻāĻ° āĻāĻ•āĻ•-āĻĨā§āĻ°ā§‡āĻĄ āĻĒā§āĻ°āĻ•ā§ƒāĻ¤āĻŋāĻ° āĻ•āĻžāĻ°āĻŖā§‡ āĻāĻŦāĻ‚ āĻ†āĻ¸āĻ˛ QEMU āĻŽāĻžāĻ˛ā§āĻŸāĻŋ-āĻĨā§āĻ°ā§‡āĻĄāĻŋāĻ‚āĻ¯āĻŧā§‡āĻ° āĻ…āĻ¨ā§āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋāĻ•ā§‡ āĻŦā§‹āĻāĻžāĻ¯āĻŧ āĻ¨āĻž (āĻ…āĻ°ā§āĻĨāĻžā§Ž, āĻāĻ•āĻ‡ āĻ¸āĻžāĻĨā§‡ āĻāĻ•āĻžāĻ§āĻŋāĻ• āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•āĻšā§€āĻ¨ āĻ•ā§‹āĻĄ āĻĒāĻžāĻĨ āĻĒāĻ°āĻŋāĻšāĻžāĻ˛āĻ¨āĻž āĻ•āĻ°āĻžāĻ° āĻ•ā§āĻˇāĻŽāĻ¤āĻž, āĻāĻŦāĻ‚ āĻļā§āĻ§ā§ "āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°ā§āĻ¨") āĻ¨āĻ¯āĻŧ, āĻāĻŸāĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻ—ā§āĻ°ā§āĻ¤ā§āĻŦāĻĒā§‚āĻ°ā§āĻŖ, āĻĨā§āĻ°ā§‡āĻĄāĻ—ā§āĻ˛āĻŋāĻ° āĻĒā§āĻ°āĻ§āĻžāĻ¨ āĻ•āĻžāĻœāĻ—ā§āĻ˛āĻŋ āĻŦāĻžāĻ‡āĻ°ā§‡ āĻĨā§‡āĻ•ā§‡ āĻ•āĻ˛ āĻ•āĻ°āĻ¤ā§‡ āĻ¸āĻ•ā§āĻˇāĻŽ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻŽāĻžāĻ•ā§‡ "āĻāĻŸāĻŋ āĻšāĻžāĻ˛ā§" āĻ•āĻ°āĻ¤ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻāĻŸāĻŋ āĻāĻ•āĻ¤ā§āĻ°ā§€āĻ•āĻ°āĻŖā§‡āĻ° āĻ¸āĻŽāĻ¯āĻŧ āĻ•āĻŋāĻ›ā§ āĻĒā§āĻ°āĻžāĻ•ā§ƒāĻ¤āĻŋāĻ• āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛āĨ¤ āĻ¤āĻŦā§‡ āĻļāĻžāĻ–āĻž āĻĨā§‡āĻ•ā§‡ āĻ•āĻŋāĻ›ā§ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ āĻ†āĻ¨āĻžāĻ° āĻ˜āĻŸāĻ¨āĻžāĻ“ āĻ˜āĻŸā§‡āĻ›ā§‡ master, āĻ¯āĻžāĻ° āĻ¸āĻžāĻĨā§‡ āĻ†āĻŽāĻŋ āĻ†āĻŽāĻžāĻ° āĻ•ā§‹āĻĄ āĻāĻ•āĻ¤ā§āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻžāĻ° āĻšā§‡āĻˇā§āĻŸāĻž āĻ•āĻ°ā§‡āĻ›āĻŋ, āĻĒāĻ¯āĻŧā§‡āĻ¨ā§āĻŸ āĻ°āĻŋāĻ˛āĻŋāĻœā§‡ (āĻāĻŦāĻ‚ āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻžāĻ° āĻļāĻžāĻ–āĻžāĻ¯āĻŧ) āĻšā§‡āĻ°āĻŋāĻ“ āĻŦāĻžāĻ›āĻžāĻ‡ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ¸ā§āĻŦāĻŋāĻ§āĻž āĻ¯ā§‹āĻ— āĻ•āĻ°āĻž āĻšāĻ¤ āĻ¨āĻžāĨ¤

āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻ†āĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻĒā§āĻ°ā§‹āĻŸā§‹āĻŸāĻžāĻ‡āĻĒāĻŸāĻŋ āĻĢā§‡āĻ˛ā§‡ āĻĻā§‡āĻ“āĻ¯āĻŧāĻž, āĻ…āĻ‚āĻļāĻ—ā§āĻ˛āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ āĻāĻŸāĻŋāĻ•ā§‡ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•āĻ°āĻž āĻāĻŦāĻ‚ āĻ¨āĻ¤ā§āĻ¨ āĻ•āĻŋāĻ›ā§āĻ° āĻ‰āĻĒāĻ° āĻ­āĻŋāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°ā§‡ āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻ¤ā§āĻ¨ āĻ¸āĻ‚āĻ¸ā§āĻ•āĻ°āĻŖ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻāĻ–āĻ¨āĻ“ āĻŦā§‹āĻ§āĻ—āĻŽā§āĻ¯ āĻāĻŦāĻ‚ āĻāĻ–āĻ¨ āĻĨā§‡āĻ•ā§‡ master.

āĻ­ā§āĻ˛ āĻ¨āĻŽā§āĻŦāĻ° āĻĻā§āĻ‡: TLP āĻĒāĻĻā§āĻ§āĻ¤āĻŋ

āĻ¸āĻ‚āĻ•ā§āĻˇā§‡āĻĒā§‡, āĻāĻŸāĻŋ āĻāĻ•āĻŸāĻŋ āĻ­ā§āĻ˛ āĻ¨āĻ¯āĻŧ, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡, āĻāĻŸāĻŋ "āĻ•ā§‹āĻĨāĻžāĻ¯āĻŧ āĻāĻŦāĻ‚ āĻ•ā§€āĻ­āĻžāĻŦā§‡ āĻ¸āĻ°āĻžāĻ¨ā§‹ āĻ¯āĻžāĻ¯āĻŧ?" āĻāĻŦāĻ‚ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ­āĻžāĻŦā§‡ "āĻ†āĻŽāĻ°āĻž āĻ•āĻŋ āĻ¸ā§‡āĻ–āĻžāĻ¨ā§‡ āĻ¯āĻžāĻŦ?" āĻ‰āĻ­āĻ¯āĻŧā§‡āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ­ā§āĻ˛ āĻŦā§‹āĻāĻžāĻŦā§āĻāĻŋāĻ° āĻļāĻ°ā§āĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§āĻ°āĻ•āĻ˛ā§āĻĒ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻžāĻ° āĻāĻ•āĻŸāĻŋ āĻŦā§ˆāĻļāĻŋāĻˇā§āĻŸā§āĻ¯ āĻŽāĻžāĻ¤ā§āĻ°āĨ¤ āĻāĻ‡ āĻ…āĻŦāĻ¸ā§āĻĨāĻžāĻ° āĻŽāĻ§ā§āĻ¯ā§‡ āĻ†āĻ¨āĻžāĻĄāĻŧāĻŋ āĻĒā§āĻ°ā§‹āĻ—ā§āĻ°āĻžāĻŽāĻŋāĻ‚ āĻāĻ•āĻŸāĻŋ āĻ¨ā§āĻ¯āĻžāĻ¯āĻŧāĻ¸āĻ™ā§āĻ—āĻ¤ āĻŦāĻŋāĻ•āĻ˛ā§āĻĒ āĻ›āĻŋāĻ˛, āĻ•āĻŋāĻ¨ā§āĻ¤ā§, āĻ¸ā§āĻŦāĻžāĻ­āĻžāĻŦāĻŋāĻ•āĻ­āĻžāĻŦā§‡āĻ‡, āĻ†āĻŽāĻŋ āĻ…āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ā§€āĻ¯āĻŧāĻ­āĻžāĻŦā§‡ āĻāĻŸāĻŋ āĻĒā§āĻ¨āĻ°āĻžāĻŦā§ƒāĻ¤ā§āĻ¤āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ‡āĻ¨āĻŋāĨ¤ āĻāĻ‡āĻŦāĻžāĻ° āĻ†āĻŽāĻŋ āĻŦā§āĻĻā§āĻ§āĻŋāĻŽāĻžāĻ¨ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻāĻŸāĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻšā§‡āĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛āĻžāĻŽ: āĻĒāĻžāĻ°āĻŽāĻžāĻŖāĻŦāĻŋāĻ• āĻ•āĻŽāĻŋāĻŸ, āĻ¸āĻšā§‡āĻ¤āĻ¨ āĻ•ā§‹āĻĄ āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤āĻ¨ (āĻāĻŦāĻ‚ "āĻāĻŸāĻž āĻ•āĻŽā§āĻĒāĻžāĻ‡āĻ˛ āĻ¨āĻž āĻšāĻ“āĻ¯āĻŧāĻž āĻĒāĻ°ā§āĻ¯āĻ¨ā§āĻ¤ (āĻ¸āĻ¤āĻ°ā§āĻ•āĻ¤āĻž āĻ¸āĻš) āĻ°ā§āĻ¯āĻžāĻ¨ā§āĻĄāĻŽ āĻ…āĻ•ā§āĻˇāĻ°āĻ•ā§‡ āĻāĻ•āĻ¤ā§āĻ°ā§‡ āĻ¸ā§āĻŸā§āĻ°āĻŋāĻ‚ āĻ•āĻ°āĻž āĻ¨āĻ¯āĻŧ", āĻ¯ā§‡āĻŽāĻ¨āĻŸāĻŋ āĻ˛āĻŋāĻ¨āĻžāĻ¸ āĻŸāĻ°āĻ­āĻžāĻ˛ā§āĻĄāĻ¸ āĻāĻ•āĻŦāĻžāĻ° āĻ‰āĻ‡āĻ•āĻŋāĻ•ā§‹āĻŸ āĻ…āĻ¨ā§āĻ¸āĻžāĻ°ā§‡ āĻ•āĻžāĻ°āĻ“ āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻ˛ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨) āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤

āĻ­ā§āĻ˛ āĻ¨āĻŽā§āĻŦāĻ° āĻ¤āĻŋāĻ¨: āĻĢā§‹āĻ°ā§āĻĄ āĻ¨āĻž āĻœā§‡āĻ¨ā§‡ āĻœāĻ˛ā§‡ āĻ¨āĻžāĻŽāĻž

āĻ†āĻŽāĻŋ āĻāĻ–āĻ¨āĻ“ āĻāĻŸāĻŋ āĻĨā§‡āĻ•ā§‡ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻĒāĻ°āĻŋāĻ¤ā§āĻ°āĻžāĻŖ āĻĒāĻžāĻ‡āĻ¨āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻ¨ āĻ†āĻŽāĻŋ āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ¨ā§āĻ¯ā§‚āĻ¨āĻ¤āĻŽ āĻĒā§āĻ°āĻ¤āĻŋāĻ°ā§‹āĻ§ā§‡āĻ° āĻĒāĻĨ āĻ…āĻ¨ā§āĻ¸āĻ°āĻŖ āĻ•āĻ°āĻŦ āĻ¨āĻž, āĻāĻŦāĻ‚ āĻāĻŸāĻŋ "āĻŦāĻĄāĻŧ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ‰āĻĒāĻžāĻ¯āĻŧ" āĻ•āĻ°āĻŦ, āĻ¯āĻĨāĻž, āĻ¸ā§āĻ•ā§āĻ°ā§āĻ¯āĻžāĻš āĻĨā§‡āĻ•ā§‡ āĻ†āĻŽāĻžāĻ° TCG āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻ˛āĻŋāĻ–āĻŦ, āĻ¯āĻžāĻ¤ā§‡ āĻ¨āĻž āĻšāĻ¯āĻŧ āĻĒāĻ°ā§‡ āĻŦāĻ˛āĻ¤ā§‡ āĻšāĻŦā§‡, "āĻšā§āĻ¯āĻžāĻ, āĻāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡, āĻ§ā§€āĻ°ā§‡ āĻ§ā§€āĻ°ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ†āĻŽāĻŋ āĻ¸āĻŦāĻ•āĻŋāĻ›ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ āĻ¨āĻž - āĻāĻ­āĻžāĻŦā§‡āĻ‡ TCI āĻ˛ā§‡āĻ–āĻž āĻšāĻ¯āĻŧ..." āĻ…āĻ§āĻŋāĻ•āĻ¨ā§āĻ¤ā§, āĻāĻŸāĻŋ āĻĒā§āĻ°āĻžāĻĨāĻŽāĻŋāĻ•āĻ­āĻžāĻŦā§‡ āĻāĻ•āĻŸāĻŋ āĻ¸ā§āĻ¸ā§āĻĒāĻˇā§āĻŸ āĻ¸āĻŽāĻžāĻ§āĻžāĻ¨ā§‡āĻ° āĻŽāĻ¤ā§‹ āĻŽāĻ¨ā§‡ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛, āĻ¯ā§‡āĻšā§‡āĻ¤ā§ āĻ†āĻŽāĻŋ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻŋ. āĻ¯ā§‡āĻŽāĻ¨ āĻ¤āĻžāĻ°āĻž āĻŦāĻ˛ā§‡, “āĻ˜ā§‡āĻ¨ā§āĻŸ āĻœāĻĄāĻŧā§‹ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡Ņƒ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¸ā§‡āĻŸāĻž āĻ¨āĻ¯āĻŧ”: āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖ āĻ¸āĻšāĻœāĻ­āĻžāĻŦā§‡ āĻāĻ¤ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ°āĻŋāĻ¤ āĻ•āĻ°āĻž āĻ¯āĻžāĻ¯āĻŧ āĻ¨āĻž - āĻāĻŸāĻŋāĻ•ā§‡ āĻ…āĻŦāĻļā§āĻ¯āĻ‡ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻ¸āĻ‚āĻ•āĻ˛āĻ¨ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻŦā§āĻ°āĻžāĻ‰āĻœāĻžāĻ°ā§‡ āĻĒā§āĻļ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻŦā§‡, āĻ¯āĻžāĻ° āĻĢāĻ˛ā§‡ JS āĻŦāĻŋāĻļā§āĻŦ āĻĨā§‡āĻ•ā§‡ āĻāĻ•āĻŸāĻŋ āĻ¨āĻŋāĻ°ā§āĻĻāĻŋāĻˇā§āĻŸ āĻŦāĻ¸ā§āĻ¤ā§, āĻ¯āĻž āĻāĻ–āĻ¨āĻ“ āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨āĨ¤ āĻ•ā§‹āĻĨāĻžāĻ“ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻŦā§‡āĨ¤ āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ RISC āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡, āĻ¯āĻ¤āĻĻā§‚āĻ° āĻ†āĻŽāĻŋ āĻŦā§āĻāĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋ, āĻāĻ•āĻŸāĻŋ āĻ¸āĻžāĻ§āĻžāĻ°āĻŖ āĻĒāĻ°āĻŋāĻ¸ā§āĻĨāĻŋāĻ¤āĻŋ āĻšāĻ˛ āĻĒā§āĻ¨āĻ°ā§āĻ¤ā§āĻĒāĻžāĻĻāĻŋāĻ¤ āĻ•ā§‹āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¨āĻŋāĻ°ā§āĻĻā§‡āĻļāĻ¨āĻž āĻ•ā§āĻ¯āĻžāĻļā§‡ āĻ¸ā§āĻĒāĻˇā§āĻŸāĻ­āĻžāĻŦā§‡ āĻ°āĻŋāĻ¸ā§‡āĻŸ āĻ•āĻ°āĻžāĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ - āĻ¯āĻĻāĻŋ āĻāĻŸāĻŋ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻŦā§‡, āĻ¯ā§‡āĻ•ā§‹āĻ¨ā§‹ āĻ•ā§āĻˇā§‡āĻ¤ā§āĻ°ā§‡, āĻāĻŸāĻŋ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋāĨ¤ āĻ‰āĻĒāĻ°āĻ¨ā§āĻ¤ā§, āĻ†āĻŽāĻžāĻ° āĻļā§‡āĻˇ āĻĒā§āĻ°āĻšā§‡āĻˇā§āĻŸāĻž āĻĨā§‡āĻ•ā§‡, āĻ†āĻŽāĻŋ āĻļāĻŋāĻ–ā§‡āĻ›āĻŋ āĻ¯ā§‡ āĻ¨āĻŋāĻ¯āĻŧāĻ¨ā§āĻ¤ā§āĻ°āĻŖāĻŸāĻŋ āĻ…āĻ¨ā§āĻŦāĻžāĻĻ āĻŦā§āĻ˛āĻ•ā§‡āĻ° āĻŽāĻžāĻāĻ–āĻžāĻ¨ā§‡ āĻ¸ā§āĻĨāĻžāĻ¨āĻžāĻ¨ā§āĻ¤āĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ āĻŦāĻ˛ā§‡ āĻŽāĻ¨ā§‡ āĻšāĻšā§āĻ›ā§‡ āĻ¨āĻž, āĻ¤āĻžāĻ‡ āĻ†āĻŽāĻžāĻĻā§‡āĻ° āĻ¸āĻ¤ā§āĻ¯āĻŋāĻ‡ āĻ•ā§‹āĻ¨ā§‹ āĻ…āĻĢāĻ¸ā§‡āĻŸ āĻĨā§‡āĻ•ā§‡ āĻŦā§āĻ¯āĻžāĻ–ā§āĻ¯āĻž āĻ•āĻ°āĻž āĻŦāĻžāĻ‡āĻŸāĻ•ā§‹āĻĄā§‡āĻ° āĻĒā§āĻ°āĻ¯āĻŧā§‹āĻœāĻ¨ āĻ¨ā§‡āĻ‡ āĻāĻŦāĻ‚ āĻ†āĻŽāĻ°āĻž āĻāĻŸāĻŋ āĻŸāĻŋāĻŦāĻŋ-āĻ¤ā§‡ āĻĢāĻžāĻ‚āĻļāĻ¨ āĻĨā§‡āĻ•ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°āĻŋāĨ¤ .

āĻ¤āĻžāĻ°āĻž āĻāĻ¸ā§‡ āĻ˛āĻžāĻĨāĻŋ āĻŽāĻžāĻ°āĻ˛

āĻ¯āĻĻāĻŋāĻ“ āĻ†āĻŽāĻŋ āĻœā§āĻ˛āĻžāĻ‡ āĻŽāĻžāĻ¸ā§‡ āĻ•ā§‹āĻĄāĻŸāĻŋ āĻ†āĻŦāĻžāĻ° āĻ˛āĻŋāĻ–āĻ¤ā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°āĻŋ, āĻāĻ•āĻŸāĻŋ āĻŽā§āĻ¯āĻžāĻœāĻŋāĻ• āĻ•āĻŋāĻ• āĻ…āĻ˛āĻ•ā§āĻˇā§āĻ¯ā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻšāĻ¯āĻŧā§‡āĻ›āĻŋāĻ˛: āĻ¸āĻžāĻ§āĻžāĻ°āĻŖāĻ¤ āĻ—āĻŋāĻŸāĻšāĻžāĻŦ āĻĨā§‡āĻ•ā§‡ āĻšāĻŋāĻ āĻŋāĻ—ā§āĻ˛āĻŋ āĻ‡āĻ¸ā§āĻ¯ā§ āĻāĻŦāĻ‚ āĻĒā§āĻ˛ āĻ…āĻ¨ā§āĻ°ā§‹āĻ§ā§‡āĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻž āĻ¸āĻŽā§āĻĒāĻ°ā§āĻ•ā§‡ āĻŦāĻŋāĻœā§āĻžāĻĒā§āĻ¤āĻŋ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ āĻ†āĻ¸ā§‡, āĻ•āĻŋāĻ¨ā§āĻ¤ā§ āĻāĻ–āĻžāĻ¨ā§‡, āĻšāĻ āĻžā§Ž āĻĨā§āĻ°ā§‡āĻĄā§‡ āĻ‰āĻ˛ā§āĻ˛ā§‡āĻ– āĻ•āĻ°ā§āĻ¨ āĻāĻ•āĻŸāĻŋ qemu āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ āĻšāĻŋāĻ¸āĻžāĻŦā§‡ Binaryen āĻĒā§āĻ°āĻ¸āĻ™ā§āĻ—ā§‡, "āĻ¤āĻŋāĻ¨āĻŋ āĻāĻŽāĻ¨ āĻ•āĻŋāĻ›ā§ āĻ•āĻ°ā§‡āĻ›āĻŋāĻ˛ā§‡āĻ¨, āĻšāĻ¯āĻŧāĻ¤ā§‹ āĻ¤āĻŋāĻ¨āĻŋ āĻ•āĻŋāĻ›ā§ āĻŦāĻ˛āĻŦā§‡āĻ¨āĨ¤" āĻ†āĻŽāĻ°āĻž 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 (āĻĒāĻ°āĻ¸ā§āĻĒāĻ°ā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¸āĻžāĻŽāĻžā§āĻœāĻ¸ā§āĻ¯āĻĒā§‚āĻ°ā§āĻŖ āĻ—ā§‡āĻ¸ā§āĻŸ āĻāĻŦāĻ‚ āĻšā§‹āĻ¸ā§āĻŸ āĻ¸āĻŋāĻ¸ā§āĻŸā§‡āĻŽā§‡āĻ° āĻœāĻ¨ā§āĻ¯), āĻ¯ā§‡ āĻ•ā§‹āĻ¨ā§‹ āĻœāĻžāĻ¯āĻŧāĻ—āĻžāĻ¯āĻŧ JIT āĻ•ā§‹āĻĄ āĻ¤ā§ˆāĻ°āĻŋāĻ° āĻœāĻ¨ā§āĻ¯ TCGāĨ¤ QEMU 2.9 āĻĻāĻŋāĻ¯āĻŧā§‡ āĻļā§āĻ°ā§ āĻ•āĻ°ā§‡, Windows āĻ HAXM āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ āĻ¸ā§āĻŸā§āĻ¯āĻžāĻ¨ā§āĻĄāĻžāĻ°ā§āĻĄā§‡āĻ° āĻœāĻ¨ā§āĻ¯ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ‰āĻĒāĻ¸ā§āĻĨāĻŋāĻ¤ āĻšāĻ¯āĻŧā§‡āĻ›ā§‡ (āĻŦāĻŋāĻ¸ā§āĻ¤āĻžāĻ°āĻŋāĻ¤)
  • āĻ¯āĻĻāĻŋ TCG āĻšāĻžāĻ°ā§āĻĄāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ° āĻ­āĻžāĻ°ā§āĻšā§āĻ¯āĻŧāĻžāĻ˛āĻžāĻ‡āĻœā§‡āĻļāĻ¨ā§‡āĻ° āĻĒāĻ°āĻŋāĻŦāĻ°ā§āĻ¤ā§‡ āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ¤āĻžāĻšāĻ˛ā§‡ āĻĒā§āĻ°āĻ¤āĻŋāĻŸāĻŋ āĻšā§‹āĻ¸ā§āĻŸ āĻ†āĻ°ā§āĻ•āĻŋāĻŸā§‡āĻ•āĻšāĻžāĻ°ā§‡āĻ° āĻĒāĻžāĻļāĻžāĻĒāĻžāĻļāĻŋ āĻ¸āĻžāĻ°ā§āĻŦāĻœāĻ¨ā§€āĻ¨ āĻĻā§‹āĻ­āĻžāĻˇā§€āĻ° āĻœāĻ¨ā§āĻ¯ āĻ†āĻ˛āĻžāĻĻāĻž āĻ•ā§‹āĻĄ āĻœā§‡āĻ¨āĻžāĻ°ā§‡āĻļāĻ¨ āĻ¸āĻŽāĻ°ā§āĻĨāĻ¨ āĻ°āĻ¯āĻŧā§‡āĻ›ā§‡āĨ¤
  • ... āĻāĻŦāĻ‚ āĻāĻ‡ āĻ¸āĻŽāĻ¸ā§āĻ¤ āĻ•āĻŋāĻ›ā§āĻ° āĻšāĻžāĻ°āĻĒāĻžāĻļā§‡ - āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻž āĻĒā§‡āĻ°āĻŋāĻĢā§‡āĻ°āĻžāĻ˛, āĻ‡āĻ‰āĻœāĻžāĻ° āĻ‡āĻ¨ā§āĻŸāĻžāĻ°āĻĢā§‡āĻ¸, āĻŽāĻžāĻ‡āĻ—ā§āĻ°ā§‡āĻļāĻ¨, āĻ°ā§‡āĻ•āĻ°ā§āĻĄ-āĻ°āĻŋāĻĒā§āĻ˛ā§‡ āĻ‡āĻ¤ā§āĻ¯āĻžāĻĻāĻŋāĨ¤

āĻ¯āĻžāĻ‡āĻšā§‹āĻ•, āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋ āĻœāĻžāĻ¨ā§‡āĻ¨: QEMU āĻļā§āĻ§ā§āĻŽāĻžāĻ¤ā§āĻ° āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖ āĻ•āĻŽā§āĻĒāĻŋāĻ‰āĻŸāĻžāĻ°āĻ‡ āĻ¨āĻ¯āĻŧ, āĻšā§‹āĻ¸ā§āĻŸ āĻ•āĻžāĻ°ā§āĻ¨ā§‡āĻ˛ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§ƒāĻĨāĻ• āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ°āĻ•āĻžāĻ°ā§€āĻ° āĻĒā§āĻ°āĻ•ā§āĻ°āĻŋāĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻĒā§āĻ°āĻ¸ā§‡āĻ¸āĻ°āĻ•ā§‡āĻ“ āĻ…āĻ¨ā§āĻ•āĻ°āĻŖ āĻ•āĻ°āĻ¤ā§‡ āĻĒāĻžāĻ°ā§‡, āĻ¯āĻž āĻŦā§āĻ¯āĻŦāĻšāĻžāĻ° āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ, āĻ‰āĻĻāĻžāĻšāĻ°āĻŖāĻ¸ā§āĻŦāĻ°ā§‚āĻĒ, āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻ¯āĻ¨ā§āĻ¤ā§āĻ°ā§‡āĻ° āĻœāĻ¨ā§āĻ¯ AFL fuzzer āĻĻā§āĻŦāĻžāĻ°āĻžāĨ¤ āĻ¸āĻŽā§āĻ­āĻŦāĻ¤ āĻ•ā§‡āĻ‰ JS āĻĨā§‡āĻ•ā§‡ QEMU āĻāĻ° āĻ…āĻĒāĻžāĻ°ā§‡āĻļāĻ¨ā§‡āĻ° āĻāĻ‡ āĻŽā§‹āĻĄāĻŸāĻŋ āĻĒā§‹āĻ°ā§āĻŸ āĻ•āĻ°āĻ¤ā§‡ āĻšāĻžāĻ¨? 😉

āĻŦā§‡āĻļāĻŋāĻ°āĻ­āĻžāĻ— āĻĻā§€āĻ°ā§āĻ˜āĻ¸ā§āĻĨāĻžāĻ¯āĻŧā§€ āĻŦāĻŋāĻ¨āĻžāĻŽā§‚āĻ˛ā§āĻ¯ā§‡āĻ° āĻ¸āĻĢā§āĻŸāĻ“āĻ¯āĻŧā§āĻ¯āĻžāĻ°ā§‡āĻ° āĻŽāĻ¤ā§‹, QEMU āĻ•āĻ˛ā§‡āĻ° āĻŽāĻžāĻ§ā§āĻ¯āĻŽā§‡ āĻ¤ā§ˆāĻ°āĻŋ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ configure и make. āĻ§āĻ°āĻž āĻ¯āĻžāĻ• āĻ†āĻĒāĻ¨āĻŋ āĻ•āĻŋāĻ›ā§ āĻ¯ā§‹āĻ— āĻ•āĻ°āĻžāĻ° āĻ¸āĻŋāĻĻā§āĻ§āĻžāĻ¨ā§āĻ¤ āĻ¨āĻŋāĻ¯āĻŧā§‡āĻ›ā§‡āĻ¨: āĻāĻ•āĻŸāĻŋ TCG āĻŦā§āĻ¯āĻžāĻ•āĻāĻ¨ā§āĻĄ, āĻĨā§āĻ°ā§‡āĻĄ āĻŦāĻžāĻ¸ā§āĻ¤āĻŦāĻžāĻ¯āĻŧāĻ¨, āĻ…āĻ¨ā§āĻ¯ āĻ•āĻŋāĻ›ā§āĨ¤ āĻ…āĻŸā§‹āĻ•āĻ¨āĻĢā§‡āĻ° āĻ¸āĻžāĻĨā§‡ āĻ¯ā§‹āĻ—āĻžāĻ¯ā§‹āĻ—ā§‡āĻ° āĻ¸āĻŽā§āĻ­āĻžāĻŦāĻ¨āĻžāĻ¯āĻŧ āĻ–ā§āĻļāĻŋ/āĻ­āĻ¯āĻŧāĻ™ā§āĻ•āĻŋāĻ¤ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻœāĻ¨ā§āĻ¯ āĻ¤āĻžāĻĄāĻŧāĻžāĻšā§āĻĄāĻŧā§‹ āĻ•āĻ°āĻŦā§‡āĻ¨ āĻ¨āĻž (āĻ¯āĻĨāĻžāĻ¯āĻĨāĻ­āĻžāĻŦā§‡ āĻ†āĻ¨ā§āĻĄāĻžāĻ°āĻ˛āĻžāĻ‡āĻ¨ āĻ•āĻ°ā§āĻ¨) - āĻ†āĻ¸āĻ˛ā§‡, configure QEMU āĻāĻ° āĻĻā§ƒāĻļā§āĻ¯āĻ¤ āĻ¸ā§āĻŦ-āĻ˛āĻŋāĻ–āĻŋāĻ¤ āĻāĻŦāĻ‚ āĻ•āĻŋāĻ›ā§ āĻĨā§‡āĻ•ā§‡ āĻ‰āĻ¤ā§āĻĒāĻ¨ā§āĻ¨ āĻšāĻ¯āĻŧ āĻ¨āĻžāĨ¤

WebAssembly

āĻ¤āĻžāĻšāĻ˛ā§‡ āĻāĻ‡ āĻœāĻŋāĻ¨āĻŋāĻ¸āĻŸāĻŋāĻ•ā§‡ WebAssembly (āĻ“āĻ°āĻĢā§‡ WASM) āĻŦāĻ˛āĻž āĻšāĻ¯āĻŧ āĻ•āĻŋ? āĻāĻŸāĻŋ Asm.js-āĻāĻ° āĻĒā§āĻ°āĻ¤āĻŋāĻ¸ā§āĻĨāĻžāĻĒāĻ¨, āĻ†āĻ° āĻŦā§ˆāĻ§ āĻœāĻžāĻ­āĻžāĻ¸ā§āĻ•ā§āĻ°āĻŋāĻĒā§āĻŸ āĻ•ā§‹āĻĄ āĻšāĻ“āĻ¯āĻŧāĻžāĻ° āĻ­āĻžāĻ¨ āĻ•āĻ°ā§‡ āĻ¨āĻžāĨ¤ āĻŦāĻŋāĻĒāĻ°ā§€āĻ¤ā§‡, āĻāĻŸāĻŋ āĻ¸āĻŽā§āĻĒā§‚āĻ°ā§āĻŖāĻ°ā§‚āĻĒā§‡ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋ āĻāĻŦāĻ‚ āĻ…āĻĒā§āĻŸāĻŋāĻŽāĻžāĻ‡āĻœ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧā§‡āĻ›ā§‡, āĻāĻŦāĻ‚ āĻāĻŽāĻ¨āĻ•āĻŋ āĻāĻŸāĻŋāĻ¤ā§‡ āĻāĻ•āĻŸāĻŋ āĻĒā§‚āĻ°ā§āĻŖāĻ¸āĻ‚āĻ–ā§āĻ¯āĻž āĻ˛ā§‡āĻ–āĻž āĻ–ā§āĻŦ āĻ¸āĻšāĻœ āĻ¨āĻ¯āĻŧ: āĻ•āĻŽā§āĻĒā§āĻ¯āĻžāĻ•ā§āĻŸā§‡āĻ° āĻœāĻ¨ā§āĻ¯, āĻāĻŸāĻŋ āĻŦāĻŋāĻ¨ā§āĻ¯āĻžāĻ¸ā§‡ āĻ¸āĻ‚āĻ°āĻ•ā§āĻˇāĻŖ āĻ•āĻ°āĻž āĻšāĻ¯āĻŧ āĻāĻ˛āĻ‡āĻŦāĻŋ 128.

āĻ†āĻĒāĻ¨āĻŋ āĻšāĻ¯āĻŧāĻ¤ā§‹ 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 āĻ—āĻŋāĻ—āĻžāĻŦāĻžāĻ‡āĻŸā§‡āĻ° āĻ…āĻ¨ā§āĻ¯ āĻ•ā§‹āĻĨāĻžāĻ“ āĻ‰āĻ ā§‡ āĻ¯āĻžāĻ¯āĻŧāĨ¤ āĻ¸āĻŽāĻ¸ā§āĻ¯āĻž āĻšāĻ˛ āĻ¯ā§‡ āĻŦāĻžāĻ‡āĻ¨āĻžāĻ°āĻŋāĻ¨ā§‡āĻ° āĻĻā§ƒāĻˇā§āĻŸāĻŋāĻ•ā§‹āĻŖ āĻĨā§‡āĻ•ā§‡ āĻāĻŸāĻŋ āĻ–ā§āĻŦ āĻŦāĻĄāĻŧ āĻāĻ•āĻŸāĻŋ āĻĢāĻ˛āĻ¸ā§āĻŦāĻ°ā§‚āĻĒ āĻ āĻŋāĻ•āĻžāĻ¨āĻž āĻ…ā§āĻ¯āĻžāĻ•ā§āĻ¸ā§‡āĻ¸ āĻ•āĻ°āĻ›ā§‡āĨ¤ āĻ•āĻŋāĻ­āĻžāĻŦā§‡ āĻāĻ‡ āĻ•āĻžāĻ›āĻžāĻ•āĻžāĻ›āĻŋ āĻĒā§‡āĻ¤ā§‡?

āĻ…ā§āĻ¯āĻžāĻĄāĻŽāĻŋāĻ¨ā§‡āĻ° āĻĒāĻĨā§‡

āĻ†āĻŽāĻŋ āĻāĻŸāĻŋ āĻĒāĻ°ā§€āĻ•ā§āĻˇāĻž āĻ•āĻ°ā§‡ āĻļā§‡āĻˇ āĻ•āĻ°āĻŋāĻ¨āĻŋ, āĻ¤āĻŦā§‡ āĻ†āĻŽāĻžāĻ° āĻĒā§āĻ°āĻĨāĻŽ āĻšāĻŋāĻ¨ā§āĻ¤āĻž āĻ›āĻŋāĻ˛ "āĻ¯āĻĻāĻŋ āĻ†āĻŽāĻŋ 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

āĻāĻ•āĻŸāĻŋ āĻŽāĻ¨ā§āĻ¤āĻŦā§āĻ¯ āĻœā§āĻĄāĻŧā§āĻ¨