Muitas vezes nos dizem que o hardware não se importa em qual idioma o programa está escrito, pois apenas vê o código binário compilado, mas essa não é a verdade. Por exemplo, considere o humilde Z80; suas extensões ao conjunto de instruções 8080 incluem instruções como CPIR, que são úteis para verificar seqüências de caracteres no estilo C (terminação NULL), por exemplo, para executar strlen()
. Os designers devem ter identificado que a execução de programas em C (ao contrário de Pascal, onde o comprimento de uma string está no cabeçalho) era algo para o qual o design provavelmente seria usado. Outro exemplo clássico é o Lisp Machine .
Que outros exemplos existem? Por exemplo, instruções, número e tipo de registros , modos de endereçamento, que fazem um determinado processador favorecer as convenções de um idioma específico? Estou particularmente interessado em revisões da mesma família.
sizeof(int)
seja igual a 1 deve exigir que o tipo char
seja assinado (já que um int
deve poder manter todos os valores do tipo char
). Eu escrevi código para uma máquina onde char
e int
são números inteiros assinados de 16 bits; as maiores dificuldades são que não se pode usar uniões para conversão de tipos, e o armazenamento eficiente de um grande número de bytes requer empacotamento e descompactação manuais. Essas questões são menores em comparação com a possibilidade em C de que sizeof (int) == sizeof (long), desde que ... #
unsigned int
valores. O C99 melhorou essa situação, mas antes do C99 não havia uma maneira segura garantida de comparar um valor potencialmente negativo a um valor do tipo unsigned int
(seria necessário testar se o número era negativo antes de fazer a comparação).