Jesteśmy często mówią , że sprzęt nie obchodzi, co język program jest napisany w jak to widzi tylko skompilowany kod binarny, jednak nie jest to cała prawda. Weźmy na przykład pokornego Z80; jego rozszerzenia do zestawu instrukcji 8080 obejmują instrukcje takie jak CPIR, które są przydatne do skanowania ciągów typu C (zakończonych NULL), np. do wykonania strlen(). Projektanci musieli zidentyfikować, że uruchamianie programów C (w przeciwieństwie do Pascala, gdzie długość łańcucha znajduje się w nagłówku) było czymś, do czego prawdopodobnie ich projekt mógłby zostać użyty. Innym klasycznym przykładem jest maszyna Lisp .
Jakie są inne przykłady? Np. Instrukcje, liczba i rodzaj rejestrów , tryby adresowania, które sprawiają, że dany procesor sprzyja konwencjom określonego języka? Szczególnie interesują mnie wersje tej samej rodziny.
sizeof(int)równa się 1, musi wymagać charpodpisania tego typu (ponieważ intmusi być w stanie pomieścić wszystkie wartości typu char). Pisałem kod na komputerze, na którym chari intsą zarówno 16-bitowe liczby całkowite podpisane; największe trudności polegają na tym, że nie można używać związków do konwersji typów, a wydajne przechowywanie dużej liczby bajtów wymaga ręcznego pakowania i rozpakowywania. Te problemy są niewielkie w porównaniu z możliwością w C, że sizeof (int) == sizeof (long), ponieważ ...
unsigned intwartościami. C99 poprawił tę sytuację, ale przed C99 nie było gwarantowanego bezpiecznego jednoetapowego sposobu porównania potencjalnie ujemnej wartości z wartością typu unsigned int(trzeba by sprawdzić, czy liczba była ujemna przed wykonaniem porównania).