Тег

Transmeta

1 материалов

256 КБ кода, чтобы обнулить 64 КБ памяти — починили прямо в эмуляции (devblogs.microsoft.com)

Каждая инструкция записи байта занимала 4 байта. 65 536 штук — это 256 килобайт машинного кода ради инициализации 64 килобайт стека: соотношение кода к данным 4 к 1.

Вместо того чтобы гонять этот раздутый код как есть, бинарный транслятор узнавал чудовищную функцию и подставлял компактный цикл, который и должен был выдать компилятор.

Оговорка из обсуждения: возможно, это вовсе не баг, и полностью развёрнутая версия на реальном железе работала быстрее.