2011-08-29 4 views
1

레지스터에 쓰는 경우, 예를 들어 mov ax, 1처럼 이전에 가지고 있었던 값을 덮어 씁니다.CPU 레지스터에 쓰기가 실제로 어떻게 작동합니까?

이제 큰 인물/문자열을 등록기로 공급할 수 있고 다른 응용 프로그램이 내 응용 프로그램의 레지스터 값을 덮어 쓸 수 있다는 것이 궁금합니다. 즉, 프로세스간에 레지스터가 공유되어 있거나 자신의 샌드 박스/가상 레지스터를 수신합니까?

Intel x86 (-64) 코어 CPU 및 Windows에서 흥미 롭습니다.

+2

참고 :이 기본 수준에서는 운영 체제가 실제로 중요하지 않습니다. 모든 사람들이 동일한 방식으로 수행합니다. –

답변

2

단일 코어에서 한 번에 하나의 스레드 만 예약됩니다. 핵심은 레지스터가있는 것입니다.

새 스레드가 예약되면 레지스터가 먼저 저장되고 이전에 저장된 스레드의 레지스터가 복원됩니다. 여기에는 실행할 다음 명령어를 가리키는 Program Counter 레지스터가 포함됩니다.


레지스터 (메모리)

AX, BX는 CX, DX는 바이트 (AH, AL, BH, BL) SI, DI, SP 및 BP는 또한로 나누어 16 비트이다 16 비트

EAX, EBX, ECX 등 32 비트

나는 그들이 64 비트 시스템에서 호출하는지 모르겠어요 있습니다. RAX를 본 것 같지만 확실하지 않습니다.

도 등

+0

많이 정리되었습니다. 레지스터에 적용되는 제한 사항, 즉 얼마나 많은 데이터와 유형을 알고 있습니까? 나는이 문서에서 Intel 문서를 찾을 수 없기 때문에 링크를 사용하게되어 기쁩니다. – Tower

+2

설명서를 찾을 수 없습니까? –

+1

레지스터는 비트, 모두 1, 1 및 0입니다. 당신이 그들과 무언가를하기 전에는 아무런 의미가 없습니다. 그렇다하더라도 그 의미는 일시적입니다. 주소를 저장하기 위해 레지스터를 사용하고 있다고 가정 해보십시오. 레지스터에 앉아있는 동안 주소 일뿐입니다. 이러한 비트를 주소로 해석하는 명령에 해당 레지스터를 사용하면 일시적으로 주소가됩니다. 다른 항목을 가리 키도록 해당 주소를 이동해야하는 경우 * p ++라고 말하면 레지스터에는 피연산자와 결과가 추가 연산에 포함됩니다. 8, 16, 32, 또는 62 비트가 될 수 있습니다. 그것은 단지 비트입니다. –

2

1 특수 목적 레지스터, 부동 소수점 레지스터) 레지스터의 크기는 당신이 그 (것)들을 위해 사용중인 이름을) 잘 정의 된 방식으로 (달려있다. 예를 들어 eax은 32 비트 폭이고 은 16 비트이고 ah/al은 8 비트입니다. 64 비트 시스템을 사용하는 경우 rax은 64 비트입니다.

이러한 레지스터 크기의 정확한 제한은 값을 해석하는 방법에 따라 다소 달라집니다 (특히 부호가 있거나 부호가없는 것으로 처리하는지 여부). 그러나 크기는 근본적으로 중요합니다.

2) 운영 체제 커널은 다른 프로세스 또는 커널이 실행되는 동안 프로세스의 레지스터를 저장합니다. 레지스터는 실행하지 않는 동안 다른 값을 취하지 만 모든 것이 투명합니다. 프로세스가 실행 중일 때 레지스터가 변경되지 않습니다.

관련 문제