우리는 하드웨어가 컴파일 된 이진 코드만을 볼 때 프로그램이 어떤 언어로 작성되었는지는 신경 쓰지 않는다고하지만 종종 이것이 사실은 아닙니다. 예를 들어 겸손한 Z80을 생각해보십시오. 8080 명령어 세트의 확장 기능에는 CPIR과 같은 명령어가 포함되어 있습니다. CPIR은 C 스타일 (NULL로 끝나는) 문자열을 스캔하는 데 유용합니다 (예 : 수행) strlen(). 설계자는 C 길이의 프로그램이 Pascal과 달리 (길이가 헤더에있는) C 프로그램이 설계에 사용될 가능성이 있음을 식별해야합니다. 또 다른 고전적인 예는 Lisp Machine 입니다.
다른 예는 무엇입니까? 예를 들어 특정 프로세서가 특정 언어의 규칙을 선호하게 만드는 명령어, 레지스터의 수 및 유형 , 주소 지정 모드? 나는 특히 같은 가족의 개정에 관심이 있습니다.
sizeof(int)1 과 같은 모든 구현 은 형식의 모든 값을 보유 할 수 있어야 char하므로 형식 을 서명 int해야합니다 char. 나는 기계에 대한 코드를 작성 곳했습니다 char및 int16 비트 부호 모두 정수; 가장 큰 어려움은 형식 변환에 공용체를 사용할 수 없으며 많은 바이트를 효율적으로 저장하려면 수동 포장 및 포장 풀기가 필요하다는 것입니다. 이러한 문제는 C에서 sizeof (int) == sizeof (long) 일 가능성에 비해 사소합니다.
unsigned int값 의 차이를 견딜 수있는 표준 유형이 없음을 의미 합니다. C99는 이러한 상황을 개선했지만 C99 이전에는 음의 값을 유형의 값과 비교할 수있는 안전한 단일 단계 방법 unsigned int이 없었습니다 (비교하기 전에 숫자가 음수인지 테스트해야 함).