>  기사  >  코드 세그먼트의 오프셋 주소를 저장하는 레지스터는 무엇입니까?

코드 세그먼트의 오프셋 주소를 저장하는 레지스터는 무엇입니까?

青灯夜游
青灯夜游원래의
2021-01-22 13:54:019995검색

코드 세그먼트의 오프셋 주소를 저장하는 레지스터는 명령어 포인터 레지스터입니다. 명령어 포인터 레지스터 IP는 프로그램의 명령어 실행 순서를 제어하는 ​​데 사용되며, IP에는 BIU가 가져올 다음 명령어(바이트)의 오프셋 주소가 포함되어 있습니다. 매번 메모리에서 액세스하면 IP는 명령의 순차적 실행을 보장하기 위해 자동으로 1씩 증가합니다.

코드 세그먼트의 오프셋 주소를 저장하는 레지스터는 무엇입니까?

이 튜토리얼의 운영 환경: Windows 7 시스템, Dell G3 컴퓨터.

레지스터의 기능은 저장 기능과 플립플롭의 조합으로 구성된 이진 코드를 저장하는 것입니다. 플립플롭은 1비트 바이너리 코드를 저장할 수 있으므로, n비트 바이너리 코드를 저장하는 레지스터는 n개의 플립플롭으로 구성되어야 합니다.

코드 세그먼트에 오프셋 주소를 저장하는 레지스터는 명령어 포인터 레지스터입니다.

명령어 포인터 레지스터 IP(X86 CPU)는 ARM CPU의 프로그램 카운터 PC에 해당하며 프로그램에서 명령어의 실행 순서를 제어하는 ​​데 사용됩니다. 정상 작동 중에 IP에는 BIU가 가져올 다음 명령(바이트)의 오프셋 주소가 포함되어 있습니다. 정상적인 상황에서는 명령 코드가 메모리에서 액세스될 때마다 IP가 자동으로 1씩 증가하여 순차적인 작업을 보장합니다. 지시 실행. IP는 실제로 명령어 기계 코드가 메모리 단위를 저장하는 주소 포인터입니다. IP의 내용은 프로그램 실행 순서를 변경하기 위해 전송 명령어(예: JMP)에 의해 강제로 다시 쓰여질 수 있습니다.

주의! 우리가 컴파일한 프로그램은 IP에 직접 액세스할 수 없습니다. 즉, IP 값을 검색하거나 IP 값을 설정하는 명령을 사용할 수 없습니다(예를 들어 IP에 값을 할당하기 위해 mov 명령을 사용할 수 없습니다).

확장 지식: 개념 구별

Instruction Register(IR, Instruction Register), 현재 실행 중인 명령어를 임시로 저장하는 데 사용됩니다. 명령어 레지스터의 클럭 신호는 clk이며, clk의 상승 에지에서 트리거됩니다. 명령어 레지스터는 데이터 버스에서 전송된 명령어를 16비트 레지스터에 저장하지만 때로는 명령어가 데이터 버스에서 전송되고 때로는 데이터가 전송되기 때문에 데이터 버스의 모든 데이터를 등록할 필요는 없습니다. 데이터를 등록해야 하는지 여부는 CPU 상태 컨트롤러의 Ir_ena 신호에 의해 제어됩니다. 재설정 시 명령어 레지스터가 지워집니다.

명령어 포인터 레지스터 IP(명령어 포인터)는 가져올 명령어의 주소 오프셋을 저장하는 데 사용됩니다. CS 레지스터와 결합될 때만 명령어를 가리키는 실제 물리적 주소를 형성할 수 있습니다.

더 많은 관련 기사를 보려면 PHP 중국어 웹사이트를 방문하세요! !

위 내용은 코드 세그먼트의 오프셋 주소를 저장하는 레지스터는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.