halt and catch fire (HCF)
folcloreprogramaçãocultura de operações
Uma instrução de máquina de nome jocoso que supostamente travaria a CPU - e, em alguns chips, um opcode não documentado real que faz isso.
HCF começou como piada de programador para uma instrução que faria algo catastrófico, como incendiar o processador, mas o Motorola 6800 de fato tinha opcodes não documentados que prendiam a CPU num ciclo de leitura descontrolado, e o apelido colou neles. O nome é folclore; o travamento nesses chips é real.
Halt and Catch Fire é o nome de uma instrução de brincadeira, descrevendo uma operação hipotética que para o processador e destrói o hardware. A piada ganhou substância quando se encontraram sequências reais de instruções não documentadas capazes de levar processadores a estados que exigiam reinício físico e, em alguns equipamentos, podiam causar dano de verdade.
A realidade que ela aponta é que processadores têm comportamento não documentado. Decodificadores de instrução aceitam sequências que a documentação não descreve, algumas delas fazem coisas interessantes, e pesquisadores vasculharam sistematicamente o espaço de instruções para encontrá-las. Algumas instruções não documentadas se revelaram úteis, algumas travam a máquina, e o processo de descoberta se parece mais com arqueologia que com leitura de manual.
A dimensão de segurança ficou séria, e não teórica, na última década. As vulnerabilidades de execução especulativa mostraram que instruções documentadas podem vazar informação por canais laterais microarquiteturais que nenhuma referência de conjunto de instruções menciona, porque a referência descreve a arquitetura, e não a implementação. A distância entre o que um processador está especificado a fazer e o que de fato faz é onde mora boa parte da pesquisa moderna de segurança, e a instrução de brincadeira acabou apontando para algo real.
Contestado / frequentemente mal contado Uma versão popular desta história é imprecisa - veja a nota acima.
Também conhecido como: HCF, halt and catch fire
Fontes
- The Jargon File - HCF
- Motorola 6800 undocumented opcodes