기본적으로 모든 최신 컴퓨터는 비트 푸시 머신입니다. 일반적으로 바이트, 워드, 드 워드 또는 q 워드라고하는 데이터 클러스터에서 비트를 푸시합니다.
바이트는 8 비트, 워드 2 바이트 (또는 16 비트), 드 워드 2 워드 (또는 32 비트) 및 q 워드 2 드 워드 (또는 64 비트)로 구성됩니다. 비트를 정렬하는 유일한 방법은 아닙니다. 종종 SIMD 명령에서 128 비트 및 256 비트 조작도 발생합니다.
조립 지침은 레지스터에서 작동하며 메모리 주소는 일반적으로 위 형식 중 하나로 작동합니다.
ALU (산술 논리 단위)는 정수 (일반적으로 2의 보수 형식)를 나타내는 것처럼 비트 번들과 부동 소수점 값 (일반적으로 IEEE 754 스타일 float
및 double
) 인 것처럼 FPU에서 작동 합니다. 다른 부분은 일부 형식, 문자, 테이블 항목, CPU 명령어 또는 주소의 번들 데이터 인 것처럼 작동합니다.
일반적인 64 비트 컴퓨터에서 8 바이트 (64 비트) 번들은 주소입니다. 이러한 주소는 일반적으로 16 진수 형식 (예 :)으로 표시 0xabcd1234cdef5678
되지만 이는 사람이 비트 패턴을 쉽게 읽을 수있는 방법입니다. 각 바이트 (8 비트)는 2 개의 16 진 문자로 작성됩니다 (각각의 16 진 문자 (0 ~ F)는 4 비트를 나타냄).
실제로 진행되고있는 것은 (일부 레벨의 경우) 일반적으로 레지스터에 저장되거나 메모리 뱅크의 인접한 위치에 저장되는 비트가 있으며 다른 인간에게 설명하려고합니다.
포인터를 따라 가면 메모리 컨트롤러에 해당 위치에 데이터를 제공하도록 요청하는 것으로 구성됩니다. 일반적으로 메모리 컨트롤러에 특정 위치 (일반적으로 연속적인 위치의 암시 적 범위)에서 특정 수의 바이트를 요청하면, 들어 가지 않을 다양한 메커니즘을 통해 전달됩니다.
이 코드는 일반적으로 데이터를 가져올 대상 (레지스터, 다른 메모리 주소 등)을 지정하며 일반적으로 정수를 기대하는 레지스터에 부동 소수점 데이터를로드하거나 그 반대의 경우도 좋지 않습니다.
C / C ++의 데이터 유형은 컴파일러가 추적하는 내용이며 생성되는 코드를 변경합니다. 일반적으로 데이터에 실제로 어떤 유형이든 만드는 본질적인 것은 없습니다 . 코드에 의해 정수와 같은 방식으로 (또는 플로트와 같은 방식으로 또는 주소와 같은 방식으로) 조작되는 비트 모음 (바이트로 정렬 됨).
이에 대한 예외가 있습니다. 특정 것들이 다른 종류 의 비트 인 아키텍처가 있습니다 . 가장 일반적인 예는 보호 된 실행 페이지입니다. CPU에 지시하는 명령은 비트이지만 런타임에는 실행할 코드가 포함 된 (메모리) 페이지가 특별히 표시되고 수정할 수 없으며 표시되지 않은 페이지는 실행할 수 없습니다 실행 페이지로.
읽기 전용 데이터 (물리적으로 기록 할 수없는 ROM에 저장된 경우도 있음), 정렬 문제 (일부 프로세서는 double
특정 방식으로 정렬되지 않은 경우 메모리에서 s를 로드 할 수 없음 또는 특정 정렬이 필요한 SIMD 명령) 및 다른 아키텍처 문제.
위의 세부 수준조차 거짓말입니다. 컴퓨터는 비트를 "진정하게"밀지 않고 전압과 전류를 밀고 있습니다. 이러한 전압과 전류는 때때로 추상화 비트 수준에서 "추정 된"기능을 수행하지 않습니다. 칩은 대부분의 이러한 오류를 감지하고 더 높은 수준의 추상화를 알 필요없이 수정하도록 설계되었습니다.
그것조차 거짓말입니다.
각 추상화 레벨은 아래의 것을 숨기고 인쇄하기 위해 Feynman 다이어그램을 염두에 두지 않고 문제 해결에 대해 생각할 수 있습니다. "Hello World"
.
따라서 충분한 수준의 정직에서 컴퓨터는 비트를 푸시하며 이러한 비트는 사용 방식에 따라 의미가 부여됩니다.