เบกเบตเบเบฑเปเบเปเบถเปเบเบเปเบญเบเบเบฑเบเบชเบดเบเปเบเบกเปเบงเบ เบเบดเบชเบนเบเบเบฒเบเบเบตเปเบเบเบฑเบเบเบฑเบเบเบญเบเบเบฐเบเบงเบเบเบฒเบ เปเบฅเบฐเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบเบชเปเบฒเบ JavaScript (เบเบตเปเบเบฑเบเปเบเบเบเบงเปเบฒ, Asm.js) เบเบฒเบเบฅเบฐเบซเบฑเบเปเบเบทเปเบญเบเบเบฑเบ. QEMU เปเบเปเบเบทเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบฅเบญเบ, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเบเปเปเบกเบฒเบเบปเบเบเบงเบฒเบกเปเบเปเบเบทเบเบเบฝเบเปเบงเปเปเบ Habr. เปเบเบเปเบฒเปเบซเบฑเบเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบทเบเปเบเบฐเบเปเบฒเปเบซเป remake เปเบเบเบเบฒเบเปเบ WebAssembly, เปเบฅเบฐเปเบกเปเบเบฐเบเบฑเปเบเปเบเบปเบฒเบเปเบงเบเบเบปเบเปเบญเบ เปเบเบทเบญเบเปเบฅเปเบง เบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเปเปโเบเปเบญเบโเบเบฒเบโเปเบเบโเบเบฒเบโเปเบโเบซเบเบถเปเบ ... เบงเบฝเบโเปเบฎเบฑเบโเบเบฒเบโเบเปเบฒโเปเบเปโเบเปเบฒโเปเบเบตเบโเปเบโ, เปเบเปโเบเปเบฒโเบซเบผเบฒเบโ, เปเบฅเบฐโเปเบโเบเบฑเบโเบเบธโเบเบฑเบโ, เบเปเปโเบเบปเบโเบกเบฒโเบเบตเปโเปเบโเบเบปเบโเบเบงเบฒเบกโเบเบฑเปเบโเปเบเปโเบเบฒโเบเบปเบโเบเบถเปเบโ.
เบงเบฝเบเบเบฒเบ
เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเบงเบดเบเบตเบเบฒเบ "เบเบฒเบเบญเบฑเบ" port QEMU เบเบฑเบ JavaScript, เปเบงเบฅเบฒเบเบตเปเบกเบฑเบเปเบเปเบเบทเบเบเบฑเบเบชเบดเบเปเบเปเบฎเบฑเบเบกเบฑเบเบขเปเบฒเบเบชเบฐเบซเบฅเบฒเบเปเบฅเบฐเบเปเปเปเบฎเบฑเบเบเปเปเบฒเบเบงเบฒเบกเบเบดเบเบเบฒเบเปเบเบปเปเบฒ.
เบเปเปเบเบดเบเบเบฒเบเบญเบฑเบเบเบฑเบเบซเบเบถเปเบ: เบชเบฒเบเบฒเบเบฒเบเบเบฒเบเบเปเบญเบเบเบธเบ
เบเบงเบฒเบกโเบเบดเบโเบเบฒเบโเบเบฑเปเบโเบเปเบฒโเบญเบดเบโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเปเบกเปเบโเบเบฒเบ fork เปเบงเบตโเบเบฑเบโเบเบญเบโเบเปเบฒโเบเบฐโเปเบเบปเปเบฒโเบเบฒเบโเบชเบฐโเบเบฑเบโเบเบปเปเบโเบชเบฐโเบเบฑเบ 2.4.1โ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเบญเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบเบต: เบเปเบฒเบเบฒเบเบเปเบญเบเบเบธเบเบกเบตเบขเบนเป, เบกเบฑเบเบญเบฒเบเบเบฐเปเบเบฑเบเบเบงเบฒเบกเบซเบกเบฑเปเบเบเบปเบเบซเบผเบฒเบเบเปเบงเบฒเบเปเบฒเบเบเบฒเบ 2.4, เปเบฅเบฐเปเบกเปเบเบฐเบเบฑเปเบเบซเบผเบฒเบเบเบฑเปเบเบเบฑเปเบเบชเบฒเบเบฒ. master
. เปเบฅเบฐเบเบฑเบเบเบฑเปเบเปเบเปเบเปเบญเบเบงเบฒเบเปเบเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเปเบฒเบเบงเบเปเบกเบเปเบกเปเบเบญเบเบเบปเบเปเบญเบ, เบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบเบปเบเบญเบทเปเบเปเบฅเบตเบ. เบเบฑเปเบเบญเบฒเบเบเบฐเปเบกเปเบเบงเบดเบเบตเบเบตเปเบกเบฑเบเบซเบฑเบเบญเบญเบ. เปเบเปเบเบตเปเปเบกเปเบเบชเบดเปเบเบเบตเป: QEMU เบเปเปเปเบเปเบขเบทเบเบขเบนเป, เปเบฅเบฐเปเบเบเบฒเบเบเบธเบเบเบงเบเปเบเบปเบฒเบเปเปเบเบฐเบเบฒเบเบเบฒเบเปเบเบตเปเบกเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบญเบเบฅเบฐเบซเบฑเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเบ 10 เปเบเบตเปเบเบฑเบ. "เปเบกเปเบเปเบฅเปเบง, เบเบญเบเบเบตเปเบเปเบญเบเบเบฐเปเบเปเปเบเบ," เบเปเบญเบเบเบดเบเปเบฅเบฐเปเบเบเบซเบฑเบ. เบเบตเปเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบฒเปเบเบฑเบเบเปเบญเบเปเบฎเบฑเบเปเบซเป digression: เปเบเบทเปเบญเบเบเบฒเบเบฅเบฑเบเบชเบฐเบเบฐเบเบฝเบงเบเบฐเบเบนเปเบเบญเบ QEMU.js เปเบฅเบฐเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒ QEMU เบเบปเปเบเบชเบฐเบเบฑเบเบเปเปเปเบเปเบซเบกเบฒเบเบเบงเบฒเบกเบงเปเบฒเบเปเปเบกเบตเบซเบผเบฒเบ threading (เบเบฑเปเบเปเบกเปเบ, เบเบงเบฒเบกเบชเบฒเบกเบฒเบเปเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเปเบญเบกเบเบฑเบเบซเบผเบฒเบเปเบชเบฑเปเบเบเบฒเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเปเบเปเบฝเบงเบเปเบญเบ, เปเบฅเบฐ. เบเปเปเบเบฝเบเปเบเป "เปเบเปเปเบเปเบเบเบฑเบเบซเบกเบปเบ") เปเบกเปเบเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบกเบฑเบ, เบซเบเปเบฒเบเบตเปเบเบปเปเบเบเปเบเบญเบเบเบฐเบเบนเปเบเบตเปเบเปเบญเบเบเปเบญเบ "เปเบฎเบฑเบเปเบซเปเบกเบฑเบเบญเบญเบ" เปเบเบทเปเบญเปเบซเปเบชเบฒเบกเบฒเบเปเบเบซเบฒเบเบฒเบเบเบฒเบเบเบญเบ. เบเบตเปเปเบเปเบชเปเบฒเบเบเบฑเบเบซเบฒเบเปเบฒเบกเบฐเบเบฒเบเบเบฒเบเบขเปเบฒเบเปเบเบฅเบฐเบซเบงเปเบฒเบเบเบฒเบเบฅเบงเบกเบเบปเบง. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบเบฒเบเบชเปเบงเบเบเบญเบเบเบฒเบเบเปเบฝเบเปเบเบเบเบฒเบเบชเบฒเบเบฒ master
, เบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฐเบเบฒเบเบฒเบก merge เบฅเบฐเบซเบฑเบเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ, เบเบฑเบเปเบเปเบฎเบฑเบ cherry เปเบเบเบฒเบเบเปเบญเบเบเบธเบ (เปเบฅเบฐเบเบฑเปเบเบเบฑเปเบเปเบเบชเบฒเบเบฒเบเบญเบเบเปเบฒเบเบฐเปเบเบปเปเบฒ) เบเบฑเบเบญเบฒเบเบเบฐเบเปเปเปเบเปเปเบเบตเปเบกเบเบงเบฒเบกเบชเบฐเบเบงเบ.
เปเบเบเบเบปเปเบงเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบกเบฑเบเบเบฑเบเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบตเปเบเบฐเบเบดเปเบกเปเบเบทเปเบญเบเบเบปเปเบเปเบเบ, เบเบญเบเบกเบฑเบเบญเบญเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบงเบเบเปเบฒเบเปเปเบฅเบฐเบชเปเบฒเบเบฎเบธเปเบเปเบซเบกเปเบเบฒเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบเปเบเบเบญเบตเบเปเบชเปเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบชเบปเบเบเบงเปเบฒเปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบเบเบฒเบ. master
.
เบเบงเบฒเบกเบเบดเบเบเบฒเบเบญเบฑเบเบเบฑเบเบชเบญเบ: เบงเบดเบเบตเบเบฒเบ TLP
เปเบเบเปเบเบทเปเบญเปเบเปเปเบฅเปเบง, เบเบตเปเบเปเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเบฒเบ, เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เบกเบฑเบเปเบเบฑเบเบเบฝเบเปเบเปเบฅเบฑเบเบชเบฐเบเบฐเบเบญเบเบเบฒเบเบชเปเบฒเบเปเบเบเบเบฒเบเปเบเปเบเบทเปเบญเบเปเบเบเบญเบเบเบงเบฒเบกเปเบเบปเปเบฒเปเบเบเบดเบเบเบตเปเบชเบปเบกเบเบนเบเบเบญเบเบเบฑเบเบชเบญเบ "เบเปเบญเบเปเบฅเบฐเบงเบดเบเบตเบเบฒเบเบเปเบฒเบเบญเบญเบเปเบ?" เปเบฅเบฐเปเบเบเบเบปเปเบงเปเบ "เบเบงเบเปเบฎเบปเบฒเบเบฐเปเบเบเบตเปเบเบฑเปเบเบเป?" เปเบเปเบเบทเปเบญเบเปเบเปเบซเบผเบปเปเบฒเบเบตเป เบเบฒเบเบเบฝเบเปเบเบฅเปเบเบฅเบก clumsy เปเบเบฑเบเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเปเบซเบกเบฒเบฐเบชเบปเบก, เปเบเป, เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เบเปเบญเบเบเปเปเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเบเปเปเบฒเบญเบตเบเปเบเบเบเปเปเบเปเบฒเปเบเบฑเบ. เปเบงเบฅเบฒเบเบตเปเบเปเบญเบเบขเบฒเบเปเบฎเบฑเบเบกเบฑเบเบขเปเบฒเบเบชเบฐเบซเบฅเบฒเบ: commits เบเบฐเบฅเปเบฒเบกเบฐเบเบน, เบเบฒเบเบเปเบฝเบเปเบเบเบฅเบฐเบซเบฑเบเบชเบฐเบเบด (เปเบฅเบฐเบเปเปเปเบกเปเบ "stringing random เบเบปเบงเบญเบฑเบเบชเบญเบเบฎเปเบงเบกเบเบฑเบเบเบปเบเบเปเบงเบฒเบกเบฑเบเบฅเบงเบเบฅเบงเบก (เบกเบตเบเปเบฒเปเบเบทเบญเบ)", Linus Torvalds เปเบเบตเบเปเบงเบปเปเบฒเบเปเบฝเบงเบเบฑเบเปเบเบเบนเปเบซเบเบถเปเบ, เบญเบตเบเบเบฒเบก Wikiquote), เปเบฅเบฐเบญเบทเปเบเป.
เบเบงเบฒเบกเบเบดเบเบเบฒเบเบเบตเปเบชเบฒเบก: เปเบเบปเปเบฒเปเบเปเบเบเปเปเบฒเปเบเบเบเปเปเบฎเบนเป ford
เบเปเบญเบเบเบฑเบเบเปเปเปเบเปเบเปเบฒเบเบฑเบเบกเบฑเบเบขเปเบฒเบเบชเบปเบกเบเบนเบ, เปเบเปเบเบญเบเบเบตเปเบเปเบญเบเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบเปเปเบเบฐเบเบดเบเบฑเบเบเบฒเบกเปเบชเบฑเปเบเบเบฒเบเบเบญเบเบเบฒเบเบเปเปเบเปเบฒเบเบขเปเบฒเบเบซเบเปเบญเบ, เปเบฅเบฐเปเบฎเบฑเบเบกเบฑเบ "เปเบเบฑเบเบเบนเปเปเบซเบเป", เบเบท, เบเบฝเบ TCG backend เบเบญเบเบเปเบญเบเบเบฒเบเบเบธเบเปเบฅเบตเปเบกเบเบปเปเบ, เปเบเบทเปเบญเบเปเปเปเบเบฑเบ. เบเปเบญเบเปเบงเบปเปเบฒเบเปเปเบกเบฒ, "เปเบกเปเบเปเบฅเปเบง, เปเบเปเบเบญเบ, เบเปเบฒ, เปเบเปเบเปเบญเบเบเปเปเบชเบฒเบกเบฒเบเบเบงเบเบเบธเบกเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบ - เบเบฑเปเบเปเบกเปเบเบงเบดเบเบตเบเบตเป TCI เบเบทเบเบเบฝเบ ... " เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบเบตเปเปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเบดเปเบเบเบทเบงเปเบฒเปเบเบฑเบเบเบฒเบเปเบเปเปเบเบเบตเปเบเบฑเบเปเบเบ, เบเบฑเบเบเบฑเปเบเปเบเป เบเปเบญเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเบฒเบเบชเบญเบ. เปเบเบเบฐเบเบฐเบเบตเปเบเบงเบเปเบเบปเบฒเปเบงเบปเปเบฒเบงเปเบฒ, "Ghent เปเบเปเบฅเบงเบเบฅเบงเบกั, เปเบเปเบเปเปเปเบกเปเบเบญเบฑเบเบเบฑเปเบ ": เบฅเบฐเบซเบฑเบเปเบกเปเบ, เปเบเปเบเบญเบ, เบเบนเป, เปเบเปเบเบฒเบเบเบงเบเบเบธเบกเบเปเปเบชเบฒเบกเบฒเบเบเบทเบเปเบญเบเบเบฝเบเปเบเปเบเบฑเบเบกเบฑเบ - เบกเบฑเบเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเบเบธเบเบเบนเปเบขเปเบฒเบเบเบฐเปเบเปเบเปเบเบปเปเบฒเปเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบฅเบงเบเบฅเบงเบก, เปเบเบดเปเบเบเปเปเปเบซเปเปเบเบตเบเบงเบฑเบเบเบธเบเบตเปเปเบเปเบเบญเบเบเบฒเบเปเบฅเบ JS, เปเบเบดเปเบเบเบฑเบเบเปเบญเบเบเบฒเบ. เปเบเปโเบฎเบฑเบโเบเบฒเบโเบเบฑเบโเบเบถเบโเปเบงเปโเบเบฒเบโเบเปเบญเบโ. เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ RISC เบเบปเบเบเบฐเบเบด, เปเบเบปเปเบฒเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบ, เบชเบฐเบเบฒเบเบฐเบเบฒเบเบเบปเบเบเบฐเบเบดเปเบกเปเบเบเบงเบฒเบกเบเปเบญเบเบเบฒเบเบเบตเปเบเบฐเบเบฑเบเบเปเบฒ cache เบเปเบฒเปเบเบฐเบเปเบฒเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบเปเบซเบกเปเบขเปเบฒเบเบเบฑเบเปเบเบ - เบเปเบฒเบเบตเปเบเปเปเปเบกเปเบเบชเบดเปเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ, เปเบเบเปเบฅเบฐเบเบตเปเบเบเปเปเบเบฒเบก, เบกเบฑเบเปเบเปเบเบดเบ. เบเบญเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเบเบงเบฒเบกเบเบฐเบเบฒเบเบฒเบกเบชเบธเบเบเปเบฒเบเบเบญเบเบเปเบญเบ, เบเปเบญเบเปเบเปเบฎเบฝเบเบฎเบนเปเบงเปเบฒเบเบฒเบเบเบงเบเบเบธเบกเปเบเบดเปเบเบเบทเบงเปเบฒเบเปเปเบเบทเบเปเบญเบเปเบเบซเบฒเบเบฒเบเบเบญเบเบเบฅเบฑเบญเบเบเบฒเบเปเบเบเบฒเบชเบฒ, เบเบฑเปเบเบเบฑเปเบเบเบงเบเปเบฎเบปเบฒเบเปเปเบเปเปเบเปเบญเบเบเบฒเบ bytecode เบเบตเปเบเบทเบเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบฒเบเบเบฒเบเบเบปเบเปเบเบตเบเปเบเป, เปเบฅเบฐเบเบงเบเปเบฎเบปเบฒเบชเบฒเบกเบฒเบเบชเปเบฒเบเบกเบฑเบเบเบฒเบเบซเบเปเบฒเบเบตเปเบขเบนเปเปเบ TB. .
เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบกเบฒเปเบฅเบฐเปเบเบฐ
เปเบเบดเบเปเบกเปเบเบงเปเบฒเบเปเบญเบเปเบเปเปเบฅเบตเปเบกเบเบฝเบเบฅเบฐเบซเบฑเบเบเบทเบเปเบซเบกเปเปเบเปเบเบทเบญเบเบเปเบฅเบฐเบเบปเบ, เปเบซเบเบเบฒเบ magic เปเบเปเปเบเบตเบเบเบถเปเบเปเบเบเบเปเปเปเบเปเบชเบฑเบเปเบเบเปเบซเบฑเบ: เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบเบปเบเบซเบกเบฒเบเบเบฒเบ GitHub เบกเบฒเบฎเบญเบเปเบเบฑเบเบเบฒเบเปเบเปเบเปเบเบทเบญเบเบเปเบฝเบงเบเบฑเบเบเบฒเบเบเบญเบเบชเบฐเบซเบเบญเบเบเปเปเบเบฑเบเบซเบฒเปเบฅเบฐเบเบฒเบเบฎเปเบญเบเบเปเบเบถเบ, เปเบเปเบขเบนเปเบเบตเปเบเบตเป, เบเบฑเบเปเบเบเบฑเปเบ เบเปเบฒเบงเปเบเบเบฐเบเบนเป
เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบกเบตเบซเบผเบฒเบ
- เบเบฒเบเปเบเบตเบเบเบปเบงเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบฒเบเบชเบถเบเบชเบฒเปเบเบเบเปเปเบกเบตเบเบฒเบเบเบดเบเบเบฑเปเบเปเบเป
- virtualization เปเบ iOS, เบเปเบญเบเบเบตเป, เบเบฒเบกเบเปเบฒเบงเบฅเบท, เบเปเบฒเบฎเปเบญเบเบชเบฐเบซเบกเบฑเบเบเบฝเบงเบเบตเปเบกเบตเบชเบดเบเบเบตเปเบเบฐเบชเปเบฒเบเบฅเบฐเบซเบฑเบเปเบเบเบฒเบเบเบดเบเปเบกเปเบเปเบเบทเปเบญเบเบเบฑเบ JS (เบเบตเปเปเบกเปเบเบเบงเบฒเบกเบเบดเบเบเป?)
- เบเบฒเบเบชเบฒเบเบดเบ mini-OS - single-floppy, built-in, firmware เบเบธเบเบเบฐเบเบดเบ, เปเบฅเบฐเบญเบทเปเบเป ...
เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบ Runtime เบเบญเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบ
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเปเบฅเปเบง, QEMU เปเบกเปเบเบเบดเบเบเบฑเบ multithreading, เปเบเปเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเปเปเบกเบตเบกเบฑเบ. เปเบฅเปเบง, เบเบฑเปเบเปเบกเปเบ, เบเปเป ... เบเปเบฒเบญเบดเบเบกเบฑเบเบเปเปเบกเบตเบขเบนเปเบเบฑเบเบซเบกเบปเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ WebWorkers เบเบฒเบเบปเบ - เปเบเบปเปเบฒเบเบตเปเบเปเบญเบเปเบเบปเปเบฒเปเบ, เบเบตเปเปเบกเปเบ multithreading เปเบเบเบญเบตเบเปเบชเปเบเปเปเบเบงเบฒเบกเบเบตเปเบเปเบฒเบเบเบญเบ. เปเบเบเบเปเปเบกเบตเบเบปเบงเปเบเบเบตเปเปเบเปเบเบเบฑเบ. เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เบเบตเปเบชเปเบฒเบเบเบฑเบเบซเบฒเบเบตเปเบชเปเบฒเบเบฑเบเปเบเปเบงเบฅเบฒเบเบตเป porting เบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบขเบนเปเปเบฅเปเบงเปเบเบเบญเบตเบเปเบชเปเบฎเบนเบเปเบเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเบเบตเปเปเบเปเบฎเปเบงเบกเบเบฑเบ. เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบฒเบเปเบเปเบเบงเบฒเบกเบเบปเบเบเบฑเบเบเบญเบเบเบฐเบเบฒเบเบปเบ, เบกเบฑเบเบเบฑเบเบเบทเบเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบเปเบเบทเป SharedArrayBuffers
. เบกเบฑเบเปเบเปเบเบทเบเบเปเบฒเบชเบฐเปเบซเบเบตเปเบเบทเปเบญเบฅเบฐเบเปเบฒเบง, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฐเปเบซเบผเบตเบกเบชเบฐเบซเบผเบญเบเบเบฒเบเปเบเบตเบเบเบปเบงเบเบญเบเบเบปเบเปเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเบเบตเปเปเบเบเบเปเบฒเบเบเบฑเบ, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเบชเบฐเปเบซเบผเบตเบกเบชเบฐเบซเบผเบญเบเบเบตเปเบซเบกเป, เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ Meltdown ... เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบเบงเบเปเบเบปเบฒเปเบเบปเปเบฒเปเบเปเบกเบฒเบชเบฐเบซเบฅเบธเบเบงเปเบฒเบซเบเบฒเบเบซเบผเบทเบซเบเบฒเบเบเบฒเบเบงเบฑเบเปเบเบเปเบงเบฅเบฒ, เปเบเปเบเบฒเบเบเปเบงเบเปเบซเบผเบทเบญเบเบญเบเบเบงเบฒเบกเบเบปเบเบเปเบฒเบฎเปเบงเบกเบเบฑเบเปเบฅเบฐเปเบเบฑเบ. thread incrementing counter, เบกเบฑเบเบเบฑเบเบซเบกเบปเบเบเบทเบเบฑเบ
เบฅเบฑเบเบชเบฐเบเบฐเบเบตเบชเบญเบเปเบกเปเบเปเบเบฑเบเปเบเบเปเปเปเบเปเบเบญเบเบเบฒเบเบซเบกเบนเบเปเบเปเปเบเบฅเบฐเบเบฑเบเบเปเปเบฒเบเบฑเบ stack เปเบเป: เบเปเบฒเบเบเปเปเบชเบฒเบกเบฒเบเบเบฝเบเปเบเปเปเบญเบปเบฒ, เบเปเบงเบเบเบฐเบขเบฑเบเบชเบฐเบเบฒเบเบเบฒเบเปเบเบเบฐเบเบธเบเบฑเบเปเบฅเบฐเบชเบฐเบซเบผเบฑเบเบเบฑเบเปเบซเบกเปเบเบตเปเบกเบต stack เปเบซเบกเป. เปเบเบเบเบฒเบเปเบเบเบทเบเบเบฑเบเบเบฒเบเปเบเบ JS virtual machine. เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒ, เบเบฑเบเบซเบฒเปเบกเปเบเบซเบเบฑเบ, เบเบฑเบเบเบฑเปเบเปเบเปเบเบงเบเปเบฎเบปเบฒเบเบฑเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเบเบฑเบเบเบฒเบเบเบฐเปเบชเปเบเบญเบฐเบเบตเบเบขเปเบฒเบเบชเบปเบกเบเบนเบเบเปเบงเบเบเบปเบเปเบญเบ? เบเบงเบฒเบกเบเบดเบเปเบฅเปเบงเปเบกเปเบเบงเปเบฒ เบเบฑเบ I/O เปเบ QEMU เปเบกเปเบเบเบทเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบ coroutines, เปเบฅเบฐเบเบตเปเปเบกเปเบเบเปเบญเบเบเบตเปเบเบฒเบเบซเบกเบนเบเปเบเป stack เบฅเบฐเบเบฑเบเบเปเปเบฒเบเบฐเปเบเบฑเบเบเบฐเปเบซเบเบ. เปเบเบเบเบต, Emscipten เบกเบตเบเบปเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบ asynchronous เปเบฅเปเบง, เปเบเบดเบเปเบกเปเบเบงเปเบฒเบชเบญเบ:
เปเบเบเบฑเบเบเบธเบเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเบฑเบเบเปเปเบเบฑเบเปเบเปเบเบฑเบเบเบฒเบเปเบเบเบฅเบฐเบซเบฑเบเปเบเบปเปเบฒเปเบเปเบเบซเบเบถเปเบเบเบตเปเบฅเบงเบเบฅเบงเบกเบขเบนเปเปเบ WASM เปเบฅเบฐเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเปเบเบเปเบเป Emterpreter, เบเบฑเปเบเบเบฑเปเบเบญเบธเบเบฐเบเบญเบ block เบเบฑเบเบเปเปเปเบฎเบฑเบเบงเบฝเบเปเบเบทเปเบญ (เปเบเบดเปเบเปเบเบเบธเบเบเปเปเปเบ, เบเปเบญเบเบงเปเบฒเบเบงเบเปเบเบปเบฒเปเบงเบปเปเบฒเบงเปเบฒ ... ). เบเบฑเปเบเปเบกเปเบ, เปเบเบเบตเปเบชเบธเบเบเปเบฒเบเบเบงเบเปเบเปเบฎเบฑเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบ: เบชเบดเปเบเบเบตเปเปเบเบฑเบเบเบฑเปเบเบเบฐเบซเบฅเบปเบเบเบตเป:
- เบเบฒเบเบเบตเบเบงเบฒเบกเปเบฒเบเบเบญเบเบเบฑเบ I/O. เปเบฅเปเบง, เปเบเบปเปเบฒเบเบฒเบเบซเบงเบฑเบเบงเปเบฒเปเบฎเบฑเบเบเบฒเบก NVMe เบเบฑเบเบเบฐเบชเบดเบเบเบดเบเบฒเบเบเบทเปเบเปเบกเบทเบญเบเบเป? ๐
- เบฅเบงเบเบฅเบงเบกเบฅเบฐเบซเบฑเบ QEMU เบซเบผเบฑเบ (เบเบฑเบเปเบ, เบญเบธเบเบฐเบเบญเบเบเบตเปเปเบฎเบฑเบเบเบฒเบกเปเบเบเบขเปเบฒเบเบญเบทเปเบเป, เปเบฅเบฐเบญเบทเปเบเป)
- เบฅเบงเบเบฅเบงเบกเบฅเบฐเบซเบฑเบเปเบเบเปเบเบปเปเบฒเปเบเปเบ WASM เปเบเบเปเบเบเบฒเบกเบดเบ
เบเบธเบเบเบฐเบชเบปเบกเบเบฑเบเบเบญเบเปเบซเบผเปเบ QEMU
เบเบฑเปเบเบเบตเปเบเปเบฒเบเบญเบฒเบเบเบฐเปเบเปเบเบฒเบเปเบเบปเบฒเปเบฅเปเบง, เบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเบฅเบญเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเปเบเบเปเบฅเบฐเบฅเบฐเบซเบฑเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบเปเบฒเปเบเบฐเบเปเบฒเปเบเบทเปเบญเบเปเบฎเบเปเบกเปเบเปเบเบเบญเบญเบเปเบ QEMU. เปเบเปเบเบดเบเปเบฅเปเบง, เบกเบฑเบเปเบเบฑเบเปเบฅเบทเปเบญเบเปเบฅเบฑเบเบเปเบญเบ:
- เบกเบตเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเบเบญเบเปเบเบ
- เบกเบตเปเบกเปเบ เปเบเบทเปเบญเบเปเบฅเบฑเปเบ, เบเบท, KVM เบชเปเบฒเบฅเบฑเบเบเบฒเบ virtualization เบฎเบฒเบเปเบงเปเบ Linux (เบชเปเบฒเบฅเบฑเบเปเบเบเปเบฅเบฐเบฅเบฐเบเบปเบเปเบเบปเปเบฒเบเบฒเบเบเบตเปเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบเบเบฑเบเปเบฅเบฐเบเบฑเบ), TCG เบชเปเบฒเบฅเบฑเบเบเบฒเบเบชเปเบฒเบเบฅเบฐเบซเบฑเบ JIT เบเบธเบเบเปเบญเบ. เปเบฅเบตเปเบกเบเบปเปเบเบเปเบงเบ QEMU 2.9, เบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบกเบฒเบเบเบฐเบเบฒเบ virtualization เบฎเบฒเบเปเบง HAXM เปเบ Windows เบเบฒเบเบปเบ (
เบฅเบฒเบเบฅเบฐเบญเบฝเบ ) - เบเปเบฒ TCG เบเบทเบเบเปเบฒเปเบเปเปเบฅเบฐเบเปเปเปเบกเปเบเบฎเบฒเบเปเบง virtualization, เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบฑเบเบกเบตเบเบฒเบเบชเบฐเบซเบเบฑเบเบชเบฐเบซเบเบนเบเบเบฒเบเบเบฐเบฅเบดเบเบฅเบฐเบซเบฑเบเปเบเบเบเปเบฒเบเบซเบฒเบเบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเบฒเบเปเบเบปเปเบฒเบเบฒเบ, เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบฒเบเปเบเบเบฒเบชเบฒเบเบปเปเบงเปเบ.
- ... เปเบฅเบฐเบเบฐเบกเบฒเบเบเบฑเบเบซเบกเบปเบเบเบตเป - emulated peripherals, เบเบฒเบเปเบเปเบเบญเบเบเบนเปเปเบเป, เบเบฒเบเปเบเบทเปเบญเบเบเปเบฒเบ, เบเบฒเบเบเบฑเบเบเบถเบ replay, เปเบฅเบฐเบญเบทเปเบเป.
เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เปเบเบปเปเบฒเบฎเบนเปเบเป: QEMU เบชเบฒเบกเบฒเบ emulate เบเปเปเบเบฝเบเปเบเปเบเบญเบกเบเบดเบงเปเบเบตเบเบฑเบเบซเบกเบปเบ, เปเบเปเบเบฑเบเปเบเปเบเบเปเบเบตเบชเปเบฒเบฅเบฑเบเบเบฐเบเบงเบเบเบฒเบเบเบนเปเปเบเปเปเบเบเบเปเบฒเบเบซเบฒเบเปเบ kernel เปเบเบปเปเบฒเบเบฒเบ, เปเบเบดเปเบเบเบทเบเบเปเบฒเปเบเป, เบชเปเบฒเบฅเบฑเบเบเบฒเบเบเบปเบเบเบปเบงเบขเปเบฒเบ, เปเบเบ AFL fuzzer เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบกเบทเบชเบญเบ. เบเบฒเบเบเบตเบญเบฒเบเบกเบตเปเบเบเบนเปเบซเบเบถเปเบเบเปเบญเบเบเบฒเบ port เบฎเบนเบเปเบเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบตเปเบเบญเบ QEMU เบเบฑเบ JS? ๐
เปเบเบฑเปเบเบเบฝเบงเบเบฑเบเบเบฑเบเบเบญเบเปเบงเบเบฃเบตเบเบตเปเบกเบตเปเบงเบฅเบฒเบเบปเบเบเบฒเบเบเบตเปเบชเบธเบ, QEMU เบเบทเบเบชเปเบฒเบเบเบถเปเบเปเบเบเบเปเบฒเบเบเบฒเบเปเบ configure
ะธ make
. เปเบซเปเปเบงเบปเปเบฒเบงเปเบฒเบเปเบฒเบเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเปเบเบตเปเบกเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบ: backend TCG, เบเบฒเบเบเบฐเบเบดเบเบฑเบเบเบฐเบเบนเป, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบญเบทเปเบ. เบขเปเบฒเบเปเบฒเบงเบเบตเปเบเบฐเบกเบตเบเบงเบฒเบกเบชเบธเบ / เบขเปเบฒเบ (เบเบตเบเบเปเบญเบเบเบฒเบกเบเบงเบฒเบกเปเบซเบกเบฒเบฐเบชเบปเบก) เปเบเบเบงเบฒเบกเบชเบปเบเปเบชเบเปเบฒเบเบเบญเบเบเบฒเบเบชเบทเปเบชเบฒเบเบเบฑเบ Autoconf - เปเบเบเบงเบฒเบกเปเบเบฑเบเบเบดเบ, configure
QEMU's เบเบฒเบเบปเบเบเบทเปเบเบงเปเบฒเบเบฝเบเบเปเบงเบเบเบปเบเปเบญเบเปเบฅเบฐเบเปเปเปเบเปเบเบทเบเบชเปเบฒเบเบเบถเปเบเบเบฒเบเบชเบดเปเบเปเบ.
เบเบฒเบเบเบฐเบเบญเบเปเบงเบฑเบ
เบเบฑเปเบเบเบฑเปเบเบชเบดเปเบเบเบตเปเปเบญเบตเปเบเบงเปเบฒ WebAssembly (aka WASM)? เบเบตเปเปเบกเปเบเบเบฒเบเบเบปเบเปเบเบเบชเปเบฒเบฅเบฑเบ Asm.js, เบเปเปเปเบเปเบเปเบฒเบเปเบฒเบงเปเบฒเปเบเบฑเบเบฅเบฐเบซเบฑเบ JavaScript เบเบตเปเบเบทเบเบเปเบญเบเบญเบตเบเบเปเปเปเบ. เปเบเบเบฒเบเบเบปเบเบเบฑเบเบเปเบฒเบก, เบกเบฑเบเปเบกเปเบเบชเบญเบเบญเบฑเบเบเปเบฅเบดเบชเบธเบเปเบฅเบฐเบเบทเบเบเบฑเบเบเบธเบเปเบซเปเบเบตเบเบตเปเบชเบธเบ, เปเบฅเบฐเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบฝเบเปเบเปเบเบฒเบเบเบฝเบเบเปเบฒเบเบงเบเปเบเบฑเบกเปเบเบกเบฑเบเบเปเปเปเบกเปเบเบเปเบฒเบเบเบฒเบเบซเบผเบฒเบ: เบชเปเบฒเบฅเบฑเบเบเบงเบฒเบกเบซเบเบฒเปเบซเบเปเบ, เบกเบฑเบเบเบทเบเปเบเบฑเบเปเบงเปเปเบเบฎเบนเบเปเบเบ.
เบเปเบฒเบเบญเบฒเบเบเบฐเปเบเปเบเบดเบเบเปเบฝเบงเบเบฑเบ algorithm relooping เบชเปเบฒเบฅเบฑเบ Asm.js - เบเบตเปเปเบกเปเบเบเบฒเบเบเบทเปเบเบเบนเบเบญเบ "เบฅเบฐเบเบฑเบเบชเบนเบ" เบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเบเบงเบเบเบธเบกเบเบฒเบเปเบซเบผเบงเบฝเบเบเบญเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ (เบเบฑเปเบเปเบกเปเบ, if- then-else, loops, etc.), เบชเปเบฒเบฅเบฑเบเปเบเบทเปเบญเบเบเบฑเบ JS เปเบเปเบเบทเบเบญเบญเบเปเบเบ, เบเบฒเบ LLVM IR เบฅเบฐเบเบฑเบเบเปเปเบฒ, เปเบเปเบเบดเบเบเบฑเบเบฅเบฐเบซเบฑเบเปเบเบทเปเบญเบเบเบฑเบเบเบตเปเบเบฐเบเบดเบเบฑเบเปเบเบเปเบเปเบเบเปเบเบต. เบเบฒเบกเบเปเบฒเบกเบฐเบเบฒเบ, เบเบฒเบเปเบเบฑเบเบเบปเบงเปเบเบเบฅเบฐเบเบฑเบเบเบฒเบเบเบฒเบเบเบญเบ QEMU เปเบกเปเบเปเบเปเบเบดเบเบเบฑเบเบเบตเบชเบญเบ. เบกเบฑเบเปเบเบดเปเบเบเบทเบงเปเบฒเบเบตเปเปเบกเปเบ, bytecode, เปเบเบเบญเบเบเปเบฒเบเบเบญเบเบเบงเบฒเบกเบเปเบฅเบฐเบกเบฒเบ ... เปเบฅเบฐเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบกเบตเบเบฑเบ, if- then-else เปเบฅเบฐ loops!..
เปเบฅเบฐเบเบตเปเปเบกเปเบเปเบซเบเบเบปเบเบญเบตเบเบญเบฑเบเบซเบเบถเปเบเบเบตเป Binaryen เปเบเบฑเบเบเบฐเปเบซเบเบ: เบกเบฑเบเบเปเบฒเบกเบฐเบเบฒเบเบชเบฒเบกเบฒเบเบเบญเบกเบฎเบฑเบเบเบฑเบเบฅเบฐเบเบฑเบเบชเบนเบเบขเบนเปเปเบเปเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฐเบเบทเบเปเบเบฑเบเปเบงเปเปเบ WASM. เปเบเปเบกเบฑเบเบเบฑเบเบชเบฒเบกเบฒเบเบเบฐเบฅเบดเบเบฅเบฐเบซเบฑเบเบเบฒเบเปเบชเบฑเปเบเบชเบฐเปเบเบเบเบญเบเบเบฑเบเบเบทเปเบเบเบฒเบเปเบฅเบฐเบเบฒเบเบซเบฑเบเบเปเบฝเบเบฅเบฐเบซเบงเปเบฒเบเบเบงเบเบกเบฑเบ. เบเบต, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเปเบฅเปเบงเบงเปเบฒเบกเบฑเบเปเบเบทเปเบญเบเบฎเบนเบเปเบเบเบเบฒเบเปเบเบฑเบเบฎเบฑเบเบชเบฒ WebAssembly เบขเบนเปเปเบเบทเปเบญเบเบซเบฅเบฑเบ C / C ++ API เบเบตเปเบชเบฐเบเบงเบ.
TCG (เบเบปเบงเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเปเบญเบเป)
เบเปเบฅเบดเบชเบฑเบ TCG tcg_qemu_tb_exec
, เบกเบฑเบเปเบเปเบเบฒเบเปเบเบฑเบเบเบฐเปเบซเบเบเบซเบผเบฒเบเบชเปเบฒเบฅเบฑเบเบเปเบญเบ.
เปเบเบทเปเบญเปเบเบตเปเบก TCG backend เปเบซเบกเปเปเบชเป QEMU, เบเปเบฒเบเบเปเบฒเปเบเบฑเบเบเปเบญเบเบชเปเบฒเบ subdirectory tcg/<ะธะผั ะฐัั
ะธัะตะบัััั>
(เปเบโเบเปโเบฅเบฐโเบเบตโเบเบตเป, tcg/binaryen
), เปเบฅเบฐโเบกเบฑเบโเบเบฐโเบเบญเบโเบเปเบงเบโเบชเบญเบโเปเบเบฅโเปโ: tcg-target.h
ะธ tcg-target.inc.c
ะธ configure
. เบเปเบฒเบเบชเบฒเบกเบฒเบเบงเบฒเบเปเบเบฅเปเบญเบทเปเบเปเบขเบนเปเบเบตเปเบเบฑเปเบ, เปเบเป, เบเบฒเบกเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเปเบเบปเบฒเบเบฒเบเบเบทเปเบเบญเบเบชเบญเบเบญเบฑเบเบเบตเป, เบเบงเบเบกเบฑเบเบเบฑเบเบชเบญเบเบเบฐเบเบทเบเบฅเบงเบกเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ: เบซเบเบถเปเบเปเบเบฑเบเปเบเบฅเป header เบเบปเบเบเบฐเบเบด (เบกเบฑเบเบเบทเบเบฅเบงเบกเบขเบนเปเปเบ. tcg/tcg.h
, เปเบฅเบฐเบญเบฑเบเบเบฑเปเบเบขเบนเปเปเบเปเบเบฅเปเบญเบทเปเบเบขเบนเปเปเบเปเบเปเบฅเบเบฐเบเปเบฅเบต tcg
, accel
เปเบฅเบฐเบเปเปเบเบฝเบเปเบเป), เบญเบทเปเบเป - เบเบฝเบเปเบเปเปเบเบฑเบ snippet เบฅเบฐเบซเบฑเบเปเบ tcg/tcg.c
, เปเบเปเบกเบฑเบเบชเบฒเบกเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบซเบเปเบฒเบเบตเปเบเบปเบเบเบตเปเบเบญเบเบกเบฑเบ.
เบเบฒเบเบเบฑเบเบชเบดเบเปเบเบงเปเบฒเบเปเบญเบเบเบฐเปเบเปเปเบงเบฅเบฒเบซเบผเบฒเบเปเบเบตเบเปเบเปเบเบเบฒเบเบชเบทเบเบชเบงเบเบฅเบฒเบเบฅเบฐเบญเบฝเบเบเบญเบเบงเบดเบเบตเบเบฒเบเปเบฎเบฑเบเบงเบฝเบ, เบเปเบญเบเบเบฝเบเปเบเปเบเบฑเบเบฅเบญเบ "เปเบเบเบเบฐเบเบนเบ" เบเบญเบเบชเบญเบเปเบเบฅเปเบเบตเปเบเบฒเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ backend เบญเบทเปเบ, เบเบตเปเปเบซเปเปเบซเบฑเบเบเบงเบฒเบกเบเบทเปเบชเบฑเบเปเบเบซเบปเบงเบเปเปเปเบเบญเบฐเบเบธเบเบฒเบ.
เปเบญเบเบฐเบชเบฒเบ tcg-target.h
เบชเปเบงเบเปเบซเบเปเบเบฐเบเบญเบเบเปเบงเบเบเบฒเบเบเบฑเปเบเบเปเบฒเปเบเบฎเบนเบเปเบเบ #define
-s:
- เบกเบตเบเปเบฒเบเบงเบเบเบฒเบเบฅเบปเบเบเบฐเบเบฝเบเปเบฅเบฐเบเบงเบฒเบกเบเบงเปเบฒเบเปเบเบปเปเบฒเปเบเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒเปเบเบปเปเบฒเบซเบกเบฒเบ (เบเบงเบเปเบฎเบปเบฒเบกเบตเบเปเบฒเบเบงเบเปเบเบปเปเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ, เปเบเบปเปเบฒเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเปเบญเบเบเบฒเบ - เบเปเบฒเบเบฒเบกเปเบกเปเบเปเบเบตเปเบกเปเบเบตเบกเบเปเบฝเบงเบเบฑเบเบชเบดเปเบเบเบตเปเบเบฐเบเบทเบเบชเปเบฒเบเปเบเบฑเบเบฅเบฐเบซเบฑเบเบเบตเปเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบถเปเบเปเบเบเบเบปเบงเบเปเบญเบเปเบงเบฑเบเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ "เปเบเบปเปเบฒเบซเบกเบฒเบเบขเปเบฒเบเบชเบปเบกเบเบนเบ" ...)
- เบเบฒเบเบเบฑเบเบฅเปเบฒเบเบฑเบเบเปเบฒเปเบเบฐเบเปเบฒเบเบญเบเปเบเบปเปเบฒเบเบฒเบ: เปเบ x86, เปเบฅเบฐเปเบกเปเปเบเปเบขเบนเปเปเบ TCI, เบเปเบฒเปเบเบฐเบเปเบฒเปเบกเปเบเบเปเปเบชเบญเบเบเปเบญเบเบเบฑเบเบซเบกเบปเบ, เปเบเปเบเปเบญเบเบเบฐเปเบชเปเปเบเบฅเบฐเบซเบฑเบ buffer เบเปเปเปเบกเปเบเบเปเบฒเปเบเบฐเบเปเบฒเบเบฑเบเบซเบกเบปเบ, เปเบเปเบเบตเปเปเบซเปเปเบซเบฑเบเปเบเบดเบเปเบเบเบชเปเบฒเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ Binaryen, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบฐเปเบงเบปเปเบฒเบงเปเบฒ: 4. เปเบเบเป
- เบเปเบฒเปเบเบฐเบเปเบฒเบเบฒเบเปเบฅเบทเบญเบเปเบเบเบตเป backend เบชเบฒเบกเบฒเบเบชเปเบฒเบเปเบเป - เบเบงเบเปเบฎเบปเบฒเบฅเบงเบกเปเบญเบปเบฒเบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเบเบตเปเบเบงเบเปเบฎเบปเบฒเบเบปเบเปเบซเบฑเบเบขเบนเปเปเบ Binaryen, เปเบซเปเบเบปเบงเปเบฅเบฑเปเบเบเบฒเบเบเปเบฒเบฅเบฒเบเบชเปเบงเบเบเบตเปเปเบซเบผเบทเบญเปเบเบปเปเบฒเปเบเปเบเบเบปเบงเบกเบฑเบเปเบญเบเบเบตเปเบเปเบฒเบเบเบฒเบเบเบงเปเบฒ.
- เบเบฐเบซเบเบฒเบเบเบฐเบกเบฒเบเบเบญเบ cache TLB เบเบตเปเบฎเปเบญเบเบเปเปเบเบ backend. เบเบงเบฒเบกเบเบดเบเปเบฅเปเบงเปเบกเปเบเบงเปเบฒเปเบ QEMU เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบกเปเบเบฎเปเบฒเบเปเบฎเบ: เปเบเบดเบเปเบกเปเบเบงเปเบฒเบกเบตเบซเบเปเบฒเบเบตเปเบเบนเปเบเปเบงเบเบเบตเปเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบซเบผเบ / เบฎเปเบฒเบเบเปเบฒเบเบถเบเปเบเบดเบ MMU เปเบเบ (เบเบงเบเปเบฎเบปเบฒเบเบฐเบขเบนเปเปเบชเปเบเบเบเปเปเบกเบตเบกเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ?), เบเบงเบเปเบเบปเบฒเบเปเบงเบเบเบฐเบขเบฑเบ cache เบเบฒเบเปเบเบเบฒเบชเบฒเบเบญเบเบเบงเบเปเบเบปเบฒเปเบเบฎเบนเบเปเบเบเบเบญเบเปเบเบเบชเปเบฒเบ, เบเบฒเบเบเบธเบเปเบเปเบเบเบตเปเบชเบฐเบเบงเบเปเบเบเบฒเบเบเบฑเบเปเบเบเบเบปเบเปเบเบปเปเบฒเปเบเปเบเบเบฑเบเบญเบญเบเบญเบฒเบเบฒเบ. เบเปเบฒเบเบฒเบกเปเบกเปเบ, เบชเบดเปเบเบเบตเปเบเบปเบเปเบเบตเบเปเบเปเบเบเบชเปเบฒเบเบเบตเปเบเบทเบเบเบธเบเปเบเปเบเบขเปเบฒเบเบกเบตเบเบฐเบชเบดเบเบเบดเบเบฒเบเบซเบผเบฒเบเบเบตเปเบชเบธเบเปเบเบเบเปเบฒเบชเบฑเปเบเบเบฐเบซเบเบฒเบเบเปเบญเบเปเบฅเบฐเปเบง?
- เบเบตเปเบเบตเปเบเปเบฒเบเบชเบฒเบกเบฒเบเบเบฑเบเบเบธเบเบเบฐเบชเบปเบเบเบญเบเบซเบเบถเปเบเบซเบผเบทเบชเบญเบเบเบฐเบเบฝเบเบชเบฐเบซเบเบงเบ, เปเบเบตเบเปเบเปเบเบฒเบเปเบเบซเบฒ TB เบเปเบฒเบเบซเบเปเบฒเบเบตเปเปเบฅเบฐเบเบฒเบเปเบฅเบทเบญเบเบเบตเปเบเบฐเบญเบฐเบเบดเบเบฒเบเบชเบญเบเบชเบฒเบกเบเบฐเบซเบเบฒเบเบเปเบญเบ.
inline
- เบซเบเปเบฒโเบเบตเปโเบเปเบฒเบโเบเบทโflush_icache_range
(เปเบเปเบเบตเปเบเปเปเปเบกเปเบเบเปเบฅเบฐเบเบตเบเบญเบเบเบงเบเปเบฎเบปเบฒ)
เปเบญเบเบฐเบชเบฒเบ tcg-target.inc.c
เปเบเปเบเบญเบเบงเปเบฒ, เบเบปเบเบเบฐเบเบดเปเบฅเปเบงเบกเบตเบเบฐเบซเบเบฒเบเปเบซเบเปเบซเบผเบฒเบเปเบฅเบฐเบกเบตเบซเบเปเบฒเบเบตเปเบเบฑเบเบเบฑเบเบซเบผเบฒเบ:
- เบเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ, เบฅเบงเบกเบเบฑเบเบเปเปเบเปเบฒเบเบฑเบเบเปเบฝเบงเบเบฑเบเบเปเบฒเปเบเบฐเบเปเบฒเบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบเบฑเบเบเบปเบงเบเบฐเบเบดเบเบฑเบเบเบฒเบเปเบ. เบชเบณเปเบเบปเบฒเปเบเบเบเปเบญเบเบขเปเบฒเบเบเปเปเบเบฒเบเบเบดเบเบเบฒเบเปเบเบทเปเบญเบเบซเบผเบฑเบเบญเบทเปเบ
- เบเบฑเบเบเบฑเบเบเบตเปเปเบเปเปเบงเบฅเบฒเบซเบเบถเปเบเบเปเบฒเบชเบฑเปเบ bytecode เบเบฒเบเปเบ
- เบเบญเบเบเบฑเปเบเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบชเปเบซเบเปเบฒเบเบตเปเบเปเบงเบเบขเบนเปเบเบตเปเบเบตเป, เปเบฅเบฐเบเปเบฒเบเบเบฑเบเบชเบฒเบกเบฒเบเปเบเปเบเบฑเบเบเบฑเบ static เบเบฒเบ
tcg/tcg.c
เบชเปเบฒเบฅเบฑเบเบเบปเบงเบเปเบญเบเปเบญเบ, เบเปเบญเบเปเบฅเบทเบญเบเบเบธเบเบเบฐเบชเบฒเบเบเปเปเปเบเบเบตเป: เปเบเบเปเบฒเบเปเบฒเบญเบดเบเบเบญเบเบเบฒเบเปเบเบเบฒเบชเบฒเบเปเปเปเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฝเบเบชเบตเปเบเบปเบงเบเบตเป: เปเบเบทเปเบญเบเบซเบกเบฒเบเปเบฅเบตเปเบกเบเบปเปเบ (เบกเบนเบเบเปเบฒเบเบตเปเปเบเปเบเบญเบเปเบเบเปเบฅเบดเปเบงเบเปเบเปเบเบฝเบ. 0xFFFFFFFF
, เปเบเบดเปเบเบเปเบฒเบเบปเบเบชเบฐเบเบฒเบเบฐเบเบฑเบเบเบธเบเบฑเบเบเบญเบ TB), เบเปเบฅเบดเบเบปเบ, เปเบกเบเบนเบเบเบตเปเบชเปเบฒเบเบเบถเปเบ, เปเบฅเบฐเบเปเบฒเบเบงเบ magic เบชเปเบฒเบฅเบฑเบ debugging. เบเปเบฒเบญเบดเบเปเบเบทเปเบญเบเบซเบกเบฒเบเบเบทเบเบงเบฒเบเปเบงเปเปเบ 0xFFFFFFFF - n
เบเปเบญเบเบเบตเป n
- เบเบปเบงเปเบฅเบเบเบงเบเปเบฅเบฑเบเปเบเปเบญเบเป, เปเบฅเบฐเปเบเปเบฅเบฐเบเบฑเปเบเบเบตเปเบเบทเบเบเบฐเบเบดเบเบฑเบเบเปเบฒเบเบเบฒเบเบเบฒเบชเบฒเบกเบฑเบเปเบเบตเปเบกเบเบถเปเบ 1. เปเบกเบทเปเบญเบกเบฑเบเบฎเบญเบ. 0xFFFFFFFE
, เบเบฒเบเบฅเบงเบเบฅเบงเบกเปเบเปเบเบฑเบเบเบถเปเบ, เปเบกเบเบนเบเปเบเปเบเบทเบเบเบฑเบเบเบถเบเปเบงเปเปเบเบเบฒเบเบฐเบฅเบฒเบเบเบฒเบเบเปเบฒเบเบฒเบ, เบเปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบ "เบเบปเบงเปเบเบตเบ" เบเบฐเบซเบเบฒเบเบเปเบญเบ, เปเบเบดเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบเปเบเปเบกเบฒเบเบฒเบ. tcg_qemu_tb_exec
, เปเบฅเบฐเปเบกเบเบนเบเปเบเปเบเบทเบเปเบเบเบเปเบฒเบเบญเบญเบเบเบฒเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ QEMU.
เปเบเบทเปเบญเบเบฝเบเบเบฝเบเบเบฅเบฒเบชเบชเบดเบ, "Crutch, เบซเบผเบฒเบเบเบฒเบเปเบเปเบกเปเบ intertwined เปเบเบชเบฝเบเบเบตเปเบชเปเบฒเบฅเบฑเบเบซเบปเบงเปเบเบเบญเบ proger ... ". เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเบงเบฒเบกเบเบปเบเบเปเบฒเปเบเปเบฎเบปเปเบงเปเบซเบฅเบขเบนเปเบเปเบญเบเปเบเบเปเบญเบเบซเบเบถเปเบ. เบเบดเปเบเปเบเบเบงเปเบฒเบเบฑเปเบ, เบกเบฑเบเปเบเปเบเบทเบเบเบธเปเบกเบเบญเบเปเบเบ QEMU! เบเปเบญเบเบกเบตเบฅเบฐเบซเบฑเบเบเบตเป, เปเบกเบทเปเบญเบเบฝเบเบเปเบฒเปเบเบฐเบเปเบฒเบเปเปเปเบ (เบเบต, เบเบฑเปเบเปเบกเปเบ, เบเบปเบงเบเบตเป), เบฅเบปเบเบซเบเบถเปเบเบเบตเปเบกเบตเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบตเปเบเปเบญเบเบซเบเปเบฒเบเบตเป, เปเบเปเบเบตเปเบเปเปเปเบเปเบเปเบงเบ. เบเบปเบงเบเบดเบเปเบฅเปเบง, เปเบเบเปเบฅเบฐเบเบตเบเบตเปเบเปเบฒเบเบเบตเปเบชเบธเบ, QEMU เบเบฑเบเบชเบฑเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒเปเบเบเบญเบเปเบฅเบตเปเบกเบเบปเปเบเปเบฅเบฐเบเบฝเบเบฅเบฐเบซเบฑเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเบขเบนเปเบเบตเปเบเบฑเปเบ. เปเบกเบทเปเบญ buffer เปเบฅเปเบเบญเบญเบ, เบฅเบฐเบซเบฑเบเบเบทเบเบเบดเปเบกเบญเบญเบเปเบฅเบฐเบเบปเบงเบเปเปเปเบเปเบฅเบตเปเบกเบเบปเปเบเบเบตเปเบเบฐเบเบฝเบเบขเบนเปเปเบเบชเบฐเบเบฒเบเบเบตเปเบเบญเบเบกเบฑเบ.
เบซเบผเบฑเบเบเบฒเบเบเบฒเบเบชเบถเบเบชเบฒเบฅเบฐเบซเบฑเบ, เบเปเบฒเบเบฐเปเบเบปเปเบฒเบฎเบนเปเบงเปเบฒ trick เบเบตเปเบกเบตเปเบฅเบ magic เปเบเปเบญเบฐเบเบธเบเบฒเบเปเบซเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเบฅเบปเปเบกเปเบซเบฅเบงเปเบเบเบฒเบเบเปเบฒเบฅเบฒเบ heap เปเบเบเบเบฒเบเบเบปเบเบเปเบญเบเบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเบเบตเปเบเบดเบเบเบฒเบเปเบ buffer uninitialized เปเบเบเบฑเปเบเบเปเบฒเบญเบดเบ pass. เปเบเปเปเบเบเบฝเบเปเบซเบกเป buffer เปเบเบทเปเบญ bypass เบซเบเปเบฒเบเบตเปเบเบญเบเบเปเบญเบเบเปเปเบกเบฒ? เบเบฑเปเบเบเบตเปเบเบฑเบเบเบฑเบเบเบฐเบเบฒ Emscripten เปเบเบฐเบเปเบฒ, เปเบกเบทเปเบญเบเปเบญเบเบเบปเบเบเบฑเบเบซเบฒ, เบเปเบญเบเปเบเปเบชเบปเปเบเบฅเบฐเบซเบฑเบเบเบปเบเปเบเปเบฎเบฑเบเบเบฑเบเบเบทเบเปเบเบซเบฒเปเบญเบฑเบเบเบฅเบดเปเบเบเบฑเบเบเบทเปเบเปเบกเบทเบญเบ, เบเบฑเปเบ Mozilla Record-Replay เปเบชเปเบกเบฑเบ ... เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, เปเบเบเบตเปเบชเบธเบเบเปเบญเบเปเบเบปเปเบฒเปเบเบชเบดเปเบเบเบตเปเบเปเบฒเบเบเบฒเบ: เบชเปเบฒเบฅเบฑเบเปเบเปเบฅเบฐเบเบฅเบฑเบญเบ, เบ struct TranslationBlock
เบเบฑเบเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบญเบเบกเบฑเบ. เปเบเบปเบฒเบขเบนเปเปเบช... เบเบทเบเบเปเบญเบเปเบฅเปเบง, เบเปเบญเบเบเปเบญเบเปเบกเปเบขเบนเปเปเบ buffer. เปเบเบเบฎเบนเปเปเบฅเบทเปเบญเบเบเบตเป, เบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเบเบฑเบเบชเบดเบเปเบเบเบตเปเบเบฐเปเบเบปเบฒเปเบเปเปเบกเปเบเปเบญเบ (เบขเปเบฒเบเบซเบเปเบญเบเบเบฒเบเบญเบฑเบ), เปเบฅเบฐเบเบฝเบเปเบเปเบเบดเปเบกเบเบปเบงเปเบฅเบ magic, เปเบฅเบฐเปเบญเบเบเปเบฒเบเบตเปเบเบฑเบเปเบซเบผเบทเบญเปเบ. struct TranslationBlock
, เบเบฒเบเบชเปเบฒเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบตเปเปเบเบทเปเบญเบกเบเปเปเบเบฝเบงเบเบตเปเบชเบฒเบกเบฒเบเบเปเบฒเบเปเบเปเปเบงเปเบกเบทเปเบญ cache เบเบฒเบเปเบเบเบฒเบชเบฒเบเบทเบเบเบฑเปเบเปเบซเบกเป, เปเบฅเบฐเปเบเบตเปเบกเบเบงเบฒเบกเบเบปเบเบเปเบฒ.
เปเบกเปเบเปเบญเบเบเบฒเบเบญเบฑเบเบเบฑเบเบเบปเบเบขเบนเป: เบเบปเบงเบขเปเบฒเบ, เปเบเบทเปเบญเบเบซเบกเบฒเบเบเบธเบเบขเบนเปเปเบเบฅเบฐเบซเบฑเบ buffer - เบเบฒเบเบญเบฑเบเปเบกเปเบเบเปเบฒเบเบเบฒเบ BinaryenExpressionRef
, เบเบฑเปเบเปเบกเปเบ, เบเบงเบเปเบเบปเบฒเปเบเบดเปเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบเบเบตเปเบเปเบฒเปเบเบฑเบเบเปเบญเบเบเบทเบเปเบชเปเปเบเบปเปเบฒเปเบเปเบเบเบปเบงเบเบฅเบฑเบญเบเบเบทเปเบเบเบฒเบเบเบตเปเบชเปเบฒเบเบเบถเปเบ, เบชเปเบงเบเบซเบเบถเปเบเปเบกเปเบเปเบเบทเปเบญเบเปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบซเบฑเบเบเปเบฝเบเบฅเบฐเบซเบงเปเบฒเบ BBs, เบชเปเบงเบเบซเบเบถเปเบเปเบกเปเบเบเปเบญเบเบเบตเปเบเบฐเปเบ. เบเบต, เบกเบตเบเปเบญเบเปเบกเปเบเบตเปเบเบฝเบกเปเบงเปเปเบฅเปเบงเบชเปเบฒเบฅเบฑเบ Relooper เบเบตเปเบเปเบญเบเปเบเปเบฎเบฑเบเบเบฒเบเปเบเบทเปเบญเบกเบเปเปเบเบฒเบกเปเบเบทเปเบญเบเปเบ. เปเบเบทเปเบญเบเปเบฒเปเบเบเบเบงเบเบกเบฑเบ, เบชเบปเบกเบกเบธเบเบเบดเบเบฒเบเบเบทเบเบเปเบฒเปเบเปเบงเปเบฒเบเบงเบเบกเบฑเบเบเบทเบเบเบฑเบเบฎเบฝเบเบเบฑเบเบซเบกเบปเบเบขเปเบฒเบเบซเบเปเบญเบเบชเบตเปเปเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบฒเบเบชเบฒเบกเบฒเบเบเปเบฒเปเบเปเบชเบญเบเบเบดเบเบเบตเปเบชเปเบฒเบเบฑเบเบชเปเบฒเบฅเบฑเบเบเปเบฒเบเบเบทเปเบขเปเบฒเบเบเบญเบเปเบ, เบเปเบฒเบเบเบฝเบเปเบเปเบเปเบญเบเบเบทเปเบเปเบฒเปเบญเบปเบฒเบกเบฑเบเบญเบญเบเบเปเบฒเบเปเบฒเปเบเบฑเบ. เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ, เบเปเบฒเบเบเบทเปเบเบฑเปเบเบเปเบฒเบงเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบฅเปเบงเปเบ QEMU เปเบเบทเปเบญเบเบตเปเบเบญเบเปเบซเบเบเบปเบเบชเปเบฒเบฅเบฑเบเบเบฒเบเบญเบญเบเบเบฒเบ loop TCG.
เบเบฒเบเบเปเบฒเปเบเป Binaryen
เปเบกเบเบนเบเปเบ WebAssembly เบกเบตเบเบฑเบเบเบฑเบ, เปเบเปเบฅเบฐเบญเบฑเบเบเบฐเบเบญเบเบเปเบงเบเบฎเปเบฒเบเบเบฒเบ, เปเบเบดเปเบเปเบเบฑเบเบเบฒเบเบชเบฐเปเบเบเบญเบญเบ. เบเบฒเบเบชเบฐเปเบเบเบญเบญเบเปเบกเปเบเบเบฒเบเบเบฐเบเบดเบเบฑเบ unary เปเบฅเบฐ binary, เบเบฑเบเบเบตเปเบเบฐเบเบญเบเบเปเบงเบเบเบฑเบเบเบตเบฅเบฒเบเบเบทเปเบเบญเบเบชเบฐเปเบเบเบญเบญเบเบญเบทเปเบเป, เบเบฒเบเปเบซเบผเบเบงเบเบเบธเบก, เปเบฅเบฐเบญเบทเปเบเป. เบเบฑเปเบเบเบตเปเบเปเบฒเบเบฐเปเบเบปเปเบฒเปเบเปเปเบงเบปเปเบฒเปเบฅเปเบง, เบเบฒเบเปเบซเบผเปเบเบปเปเบฒเบเบญเบเบเบฒเบเบเบงเบเบเบธเบกเบขเบนเปเบเบตเปเบเบตเปเบเบทเบเบเบฑเบเบเบทเปเบเบขเปเบฒเบเปเบเปเบเบญเบเปเบเบฑเบเบชเบฒเบเบฒเบฅเบฐเบเบฑเบเบชเบนเบ, loops, เบเบฒเบเปเบเบซเบฒเบซเบเปเบฒเบเบตเป, เปเบฅเบฐเบญเบทเปเบเป. เบเบฒเบเปเบเปเบเบฝเบเบเบฑเบเบซเบเปเบฒเบเบตเปเบเปเปเปเบเปเบเปเบฒเบเปเบ stack, เปเบเปเบขเปเบฒเบเบเบฑเบเปเบเบ, เบเบทเบเบฑเบเบเบฑเบเปเบ JS. เบเบฑเบเบกเบตเบเบปเบงเปเบเบเบปเปเบงเปเบฅเบ, เปเบเปเบเปเบญเบเบเปเปเปเบเปเปเบเปเบเบงเบเบกเบฑเบ, เบเบฑเปเบเบเบฑเปเบเบเปเบญเบเบเบฐเบเปเปเบเบญเบเปเบเบปเปเบฒเบเปเบฝเบงเบเบฑเบเบเบงเบเบกเบฑเบ.
เบเบฑเบเบเบฑเบเบเบฑเบเบกเบตเบเบปเบงเปเบเบเปเบญเบเบเบดเปเบ, เบเบปเบงเปเบฅเบเบเบฒเบเบชเบนเบ, เบเบญเบเบเบฐเปเบเบ: int32 / int64 / float / double. เปเบเบเปเบฅเบฐเบเบตเบเบตเป, เบเบปเบงเปเบเบเปเบญเบเบเบดเปเบเบเปเบฒเบญเบดเบ n เปเบกเปเบเบเบฒเบเปเบเปเบเบฝเบเบเบตเปเบเบทเบเบชเบปเปเบเปเบเบซเบฒเบซเบเปเบฒเบเบตเป. เบเบฐเบฅเบธเบเบฒเบฎเบฑเบเบเบฒเบเบงเปเบฒเปเบเบดเบเปเบกเปเบเบงเปเบฒเบเบธเบเบขเปเบฒเบเบขเบนเปเบเบตเปเบเบตเปเบเปเปเปเบกเปเบเบฅเบฐเบเบฑเบเบเปเปเบฒเบเบฑเบเปเบปเบเปเบเปเบเปเบเบญเบเบเบฒเบเปเบซเบผเปเบเบปเปเบฒเบเบงเบเบเบธเบก, เบเบณเบเบงเบเปเบเบฑเบกเบเบฑเบเบเปเปเบกเบตเบเบธเบเบชเบปเบกเบเบฑเบ โเปเบเบฑเบ/เบเปเปเปเบเปเปเบเบฑเบโ: เบเบปเบงเปเบฅเบเบเบฐเบเบดเบเบฑเบเปเบเบงเปเบเบเบถเปเบเบเบฑเบเบฅเบฐเบซเบฑเบเบเบฐเบเบดเบเบฑเบเบเบฒเบ.
เปเบเบเบเบปเปเบงเปเบเปเบฅเปเบง, Binaryen เบชเบฐเบซเบเบญเบ
เบขเปเบฒเบเปเบเบเปเบเบฒเบก, เบเปเบฒเบเปเบฒเบเบเปเบญเบเบเบฒเบเบเบตเบเบงเบฒเบกเบซเบกเบฒเบเบฅเบฐเบซเบฑเบเปเบเบเบเปเปเปเบเปเบชเปเบฒเบเปเบฅเบฐเบฅเบถเบเบเบปเบงเปเบเบเบตเปเบเปเปเบเปเบฒเปเบเบฑเบ, เบกเบฑเบเบญเบฒเบเบเบฐเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบตเปเบเบฐเปเบญเบปเบฒเปเบซเบเบเบปเบเบเบตเปเปเบเบปเปเบฒเปเบเปเบเปเบเบฅเป C ++, เปเบฅเบฐเบเบฒเบเบเบฑเปเบเปเบเบเบเบปเบเบเบฑเบเบเบฒเบ C ++ API เบเบฑเบเบซเบกเบปเบเบเบญเบเบซเปเบญเบเบชเบฐเบซเบกเบธเบ, bypassing ready- เปเบฎเบฑเบ wrappers.
เบเบฑเปเบเบเบฑเปเบเปเบเบทเปเบญเบชเปเบฒเบเบฅเบฐเบซเบฑเบเบเบตเปเบเปเบฒเบเบเปเบญเบเบเบฒเบ
// ะฝะฐัััะพะธัั ะณะปะพะฑะฐะปัะฝัะต ะฟะฐัะฐะผะตััั (ะผะพะถะฝะพ ะฟะพะผะตะฝััั ะฟะพัะพะผ)
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);
... เบเปเบฒเบฅเบทเบกเบญเบฑเบเปเบเบเบฐเบเปเปเบเบ, เบญเบฑเบเบเบตเปเปเบกเปเบเบเบฝเบเปเบเปเปเบเบฑเบเบเบปเบงเปเบเบเบเบญเบเบเบฐเบซเบเบฒเบ, เปเบฅเบฐเบฅเบฒเบเบฅเบฐเบญเบฝเบเปเบกเปเบเบขเบนเปเปเบเปเบญเบเบฐเบชเบฒเบ.
เปเบฅเบฐเปเบเบเบฑเบเบเบธเบเบฑเบ crack-fex-pex เปเบฅเบตเปเบกเบเบปเปเบ, เบเบฒเบเบชเบดเปเบเบเบฒเบเบขเปเบฒเบเปเบเบฑเปเบเบเบตเป:
static char buf[1 << 20];
BinaryenModuleOptimize(MODULE);
BinaryenSetMemory(MODULE, 0, -1, NULL, NULL, NULL, NULL, NULL, 0, 0);
int sz = BinaryenModuleWrite(MODULE, buf, sizeof(buf));
BinaryenModuleDispose(MODULE);
EM_ASM({
var module = new WebAssembly.Module(new Uint8Array(wasmMemory.buffer, $0, $1));
var fptr = $2;
var instance = new WebAssembly.Instance(module, {
'env': {
'memory': wasmMemory,
// ...
}
);
// ะธ ะฒะพั ัะถะต ั ะฒะฐั ะตััั instance!
}, buf, sz);
เปเบเบทเปเบญเปเบเบทเปเบญเบกเบเปเปเปเบฅเบเบเบญเบ QEMU เปเบฅเบฐ JS เปเบฅเบฐเปเบเปเบงเบฅเบฒเบเบฝเบงเบเบฑเบเปเบเบปเปเบฒเปเบเบดเบเบซเบเปเบฒเบเบตเปเบฅเบงเบเบฅเบงเบกเบขเปเบฒเบเปเบงเบงเบฒ, array เปเบเปเบเบทเบเบชเปเบฒเบเบเบทเปเบ (เบเบฒเบเบฐเบฅเบฒเบเบซเบเปเบฒเบเบตเปเบชเปเบฒเบฅเบฑเบเบเบฒเบเบเปเบฒเปเบเบปเปเบฒเปเบเบปเปเบฒเปเบเปเบ launcher), เปเบฅเบฐเบเบฑเบเบเบฑเบเบเบตเปเบชเปเบฒเบเบเบถเปเบเปเบเปเบเบทเบเบเบฑเบเปเบชเปเบขเบนเปเบเบตเปเบเบฑเปเบ. เปเบเบทเปเบญเบเบดเบเปเบฅเปเบเบฑเบเบเบฐเบเบตเบขเปเบฒเบเปเบงเบงเบฒ, เบเบฑเบเบเบฐเบเบตเบเบญเบเบชเบนเบเบเบฒเบเปเบเบเปเบฒเบเบตเปเปเบเปเปเบเปเบเบทเปเบญเบเบเบปเปเบเปเบเปเบเบทเบเบเปเบฒเปเบเปเปเบเบฑเบเบกเบฑเบ, เปเบเปเบซเบผเบฑเบเบเบฒเบเบเบฑเปเบเบเบฑเบเบเบฐเบเบตเบเบตเปเบเบดเบเปเบฅเปเปเบเบเปเบเปเบชเบนเบเบเบตเปเปเบฅเบตเปเบกเบเบปเปเบเบเบฝเบเปเบเปเปเบซเบกเบฒเบฐเบเบฑเบเบเบฒเบเบชเบฐเบซเบเบฒเบกเปเบ. struct TranslationBlock
.
เปเบเบเบงเบดเบเบตเบเบฒเบเบเบฒเบ,
เบเบฑเปเบเปเบกเปเบเบเบฑเบเบซเบกเบปเบเบชเปเบฒเบฅเบฑเบเปเบเบเบฑเบเบเบธเบเบฑเบ. เบเบฒเบเบเบตเบญเบฒเบเบกเบตเบเบปเบเบเบงเบฒเบกเบญเบทเปเบเบเปเบฒเปเบเบชเบปเบเปเบ. เบเบฑเปเบเปเบกเปเบ, เบเบฑเบเบกเบตเบขเปเบฒเบเบซเบเปเบญเบ เปเบเบปเปเบฒเบเบฑเปเบ เปเบฎเบฑเบเปเบซเปเบญเบธเบเบฐเบเบญเบเบเบฅเบฑเบญเบเปเบฎเบฑเบเบงเบฝเบ. เบกเบฑเบเบเบฑเบเบญเบฒเบเบเบฐเบกเบตเบเบงเบฒเบกเบซเบกเบฒเบเบเบตเปเบเบฐเปเบฎเบฑเบเปเบซเปเบเบฒเบเบฅเบงเบเบฅเบงเบกเบเบญเบเปเบกเบเบนเบ WebAssembly asynchronous, เบเบฒเบกเบเบฐเปเบเบเบตเปเบเปเบฅเบ JS, เปเบเบทเปเบญเบเบเบฒเบเบงเปเบฒเบเบฑเบเบกเบตเบเบฒเบเบเบฒเบชเบฒเบเบตเปเบชเบฒเบกเบฒเบเปเบฎเบฑเบเปเบเปเบเบฑเบเบซเบกเบปเบเบเบตเปเบเบปเบเบเปเบงเบฒเปเบกเบเบนเบเบเบทเปเบเปเบกเบทเบญเบเบเปเบญเบก.
เบชเบธเบเบเปเบฒเบ riddle: เบเปเบฒเบเปเบเปเบฅเบงเบเบฅเบงเบกเบเปเปเบกเบนเบเบเบฒเบเบชเบญเบเปเบเบชเบฐเบเบฒเบเบฑเบเบเบฐเบเบฐเบเปเบฒ 32-bit, เปเบเปเบฅเบฐเบซเบฑเบ, เปเบเบเบเปเบฒเบเบเบฒเบเบเปเบฒเปเบเบตเบเบเบฒเบเบซเบเปเบงเบเบเบงเบฒเบกเบเปเบฒ, เบเบตเบเบเบฒเบ Binaryen, เบเบฒเบเบเปเบญเบเบขเบนเปเปเบ stack, เบซเบผเบทเบเปเบญเบเบญเบทเปเบเปเบ 2 GB เปเบเบดเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป 32-bit. เบเบฑเบเบซเบฒเปเบกเปเบเบงเปเบฒเบเบฒเบเบเบฑเบเบชเบฐเบเบฐเบเบญเบ Binaryen เบเบตเปเปเบกเปเบเบเบฒเบเปเบเบปเปเบฒเปเบเบดเบเบเบฐเบซเบเบฒเบเปเบซเบเปเปเบเบตเบเปเบเปเบเบฑเบเบเบตเปเบขเบนเปเบเบปเบเปเบเปเบฎเบฑเบ. เบงเบดเบเบตเบเบฒเบเปเบเบทเปเบญเปเบซเปเปเบเปเบฎเบฑเบเบเบฐเบกเบฒเบเบเบตเป?
เปเบเบงเบดเบเบตเบเบฒเบเบเบญเบ admin
เบเปเบฒเบเบฐเปเบเบปเปเบฒเบเปเปเปเบเปเบชเบดเปเบเบชเบธเบเบเบฒเบเบเบปเบเบชเบญเบเบเบตเป, เปเบเปเบเบงเบฒเบกเบเบดเบเบเปเบฒเบญเบดเบเบเบญเบเบเปเบญเบเปเบกเปเบ "เบเปเบฒเบเปเบญเบเบเบดเบเบเบฑเปเบ Linux 32-bit?" เบซเบผเบฑเบเบเบฒเบเบเบฑเปเบ, เบชเปเบงเบเปเบเบดเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเปเบเบฐเบเบทเบเบเบญเบเบเบญเบเปเบเบ kernel. เบเปเบฒเบเบฒเบกเบเบฝเบงเปเบกเปเบเบซเบผเบฒเบเบเบฒเบเปเบเบเบฐเบเบทเบเบเบญเบเบเบญเบ: 1 เบซเบผเบท 2 Gb.
เปเบเบงเบดเบเบตเบเบฒเบเบเบญเบเบเบฑเบเบเบฝเบเปเบเบฅเปเบเบฅเบก (เบเบฒเบเปเบฅเบทเบญเบเบชเปเบฒเบฅเบฑเบเบเบฑเบเบเบฐเบเบดเบเบฑเบ)
เปเบซเปเบฅเบฐเปเบเบตเบเบเบญเบเบขเบนเปเปเบเบดเบเบชเบธเบเบเบญเบเบเบทเปเบเบเบตเปเบเบตเปเบขเบนเป. เบเปเบญเบเปเบญเบเบเปเปเปเบเบปเปเบฒเปเบเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบเบกเบฑเบเปเบฎเบฑเบเบงเบฝเบ - เบขเบนเปเบเบตเปเบเบฑเปเบ เปเบฅเปเบง เบเปเบญเบเบกเบต stack เปเบเบฑเบ. เปเบเป "เบเบงเบเปเบฎเบปเบฒเปเบเบฑเบเบเบนเปเบเบฐเบเบดเบเบฑเบ: เบเบธเบเบชเบดเปเบเบเบธเบเบขเปเบฒเบเปเบฎเบฑเบเบงเบฝเบเบชเปเบฒเบฅเบฑเบเบเบงเบเปเบฎเบปเบฒ, เปเบเปเบเปเปเบกเบตเปเบเบฎเบนเปเบงเปเบฒเปเบเบฑเบเบซเบเบฑเบ ... "
// 2gbubble.c
// Usage: LD_PRELOAD=2gbubble.so <program>
#include <sys/mman.h>
#include <assert.h>
void __attribute__((constructor)) constr(void)
{
assert(MAP_FAILED != mmap(1u >> 31, (1u >> 31) - (1u >> 20), PROT_NONE, MAP_ANONYMOUS | MAP_PRIVATE, -1, 0));
}
... เบกเบฑเบเปเบเบฑเบเบเบงเบฒเบกเบเบดเบเบเบตเปเบงเปเบฒเบกเบฑเบเบเปเปเปเบเบปเปเบฒเบเบฑเบเปเบเปเบเบฑเบ Valgrind, เปเบเป, เปเบเบเบเบต, Valgrind เบเบปเบงเบเบญเบเบกเบฑเบเปเบญเบเปเบเปเบเบฐเบเบธเปเบเปเบซเปเบเบธเบเบเบปเบเบญเบญเบเบเบฒเบเบเปเบญเบเบเบฑเปเบ :)
เบเบฒเบเบเบตเบเบฒเบเบเบปเบเบเบฐเปเบซเปเบเปเบฒเบญเบฐเบเบดเบเบฒเบเบเบตเปเบเบตเบเบงเปเบฒเบงเบดเบเบตเบเบฒเบเบฅเบฐเบซเบฑเบเบเบญเบเบเปเบญเบเปเบฎเบฑเบเบงเบฝเบ ...
เปเบซเบผเปเบเบเปเปเบกเบนเบ: www.habr.com