Halt and Catch Fire

Origem: Wikipédia, a enciclopédia livre.

Halt and Catch Fire ("pare e pegue fogo"), mais conhecida pelo mnemônico HCF, era originalmente uma instrução fictícia de código de máquina a qual se afirmava estar em desenvolvimento na IBM para uso nos seus computadores System/360, juntamente com outras instruções cômicas, tais como "Execute Operador".[1]

Na prática moderna, HCF significa uma instrução não-documentada em código de máquina com efeitos colaterais incomuns, incluída no processador para efeito de teste. A velha instrução "Halt and Catch Fire" e o mnemônico HCF foram apropriados por usuários que descobriram nestas expressões um modo humorístico de expressar que a execução acidental de tal instrução tornaria o sistema incapaz de realizar suas funções normais, não obstante parecesse estar bastante ocupado. Neste contexto, a expressão "catch fire" ("pegar fogo") é estritamente metafórica.

Mas uma história apócrifa de fins dos anos 1960, quando os computadores usavam memória de ferrite, dá um sentido mais próximo ao significado fictício. Segundo a história, para acelerar a velocidade de acesso a memória num protótipo, os engenheiros aumentaram as correntes de leitura/gravação nos fios extremamente finos que atravessavam os toros da memória de ferrite. Isto funcionava bem quando o computador estava executando programas normais, visto que os acessos espalhavam-se por toda a memória. Todavia, a instrução HALT ("pare") foi implementada como "vá para si mesma". Isto significava que o mesmo local do núcleo de memória era repetidamente acessado, e os fios delgados se tornavam tão quentes que começavam a fumegar - daí o "Halt and Catch Fire".

Uma autêntica HCF[editar | editar código-fonte]

O microprocessador Motorola 6800 foi o primeiro no qual um opcode HCF tornou-se amplamente conhecido. A origem do opcode HCF do 6800 (0xDD ou 0xD9) surgiu num artigo escrito por Gerry Wheeler (1952–2006) na edição de dezembro de 1977 da BYTE sobre opcodes não-documentados.[2] A instrução fazia com que o processador entrasse num modo destinado a testes de produção, no qual ele realiza continuamente ciclos de leitura à RAM em endereços de memória sucessivos e não pode ser interrompido por nenhuma outra instrução. Efetivamente, o barramento de endereços torna-se um contador, permitindo que a operação de todas as linhas de endereço sejam rapidamente verificadas. Uma vez que o processador tenha entrado neste modo de teste, deixa de responder a interrupções, de modo que a operação normal só pode ser restaurada através de um reset.

Processadores com opcodes HCF[editar | editar código-fonte]

  • 6800[2]
  • MIPS-X: processador suportado pela DARPA; o Manual do Programador descreve uma instrução HSC (Halt and Spontaneously Combust) na versão -NSA do processador[3]

Ver também[editar | editar código-fonte]

Referências

  1. Proposed Additions to the IBM Instruction Set
  2. a b Wheeler, Gerry (Dezembro de 1977). «Undocumented M6800 Instructions». BYTE. 2 (12): 46-47 
  3. «MIPS-X» (PDF). Consultado em 7 de maio de 2008. Arquivado do original (PDF) em 2 de março de 2013