CPUID 명령어(Intel opcode)
- id flag여부에 따라 사용가능/블가능(?)
- 64-bit mode 와 non 64-bit 모드에서 같은 연산을 함.
- 주로 프로세서 정보를 EAX, EBX, ECX, EDX에 리턴함
- EAX값을 인수로 받아서 처리함 in->out에 대해선 그때그떄..
나머지는 매뉴얼 보면 정말 잘 나와있음
Control Register
- CPU의 behavior(?대충 느낌으로) 를 바꾸거나 관리하는데 사용됨
- Interrupt control
- switching the addressing mode
- paging control
- coprocessor control ...> coprocessor는 CPU연산 도와주는얘였는데 요즘은 통합되거나(그래도 내부적으로 병렬) GPU형태로..?
- 종류 :
CR0 : 별거다있음. 영문위키에 찾으면 다나옴 x86-64에선 64bit
CR1 : Reserved for the future use..ㅎㅎ
CR2 : Page Fault Linear Address값을 가지고 있음. page fault 발생시 프로그램이 접근하려 했던 주소값이 저장됨
-page fault : Memory Management Unit에 매핑되지 않은 메모리 페이지에 프로그램이 접근했을 때 하드웨어가 raise 하는 exception type. 에러라고 보지 않고, 운영체제가 프로그램에서 필요한 만큼의 메모리 양을 늘려주는 매커니즘 중 하나다(일반적이고 necessary) 나중에 좀더 공부해봐야겠음.
CR3 : Virtual Addressing 이 허용될 때 사용한다. CR0의 31번 비트가 켜져야 사용가능.
페이징 디렉토리와 페이징 테이블을 이용해 프로세서가 선형주소를 물리주소로 변환하게 해줌.
CR4 : 보호모드에서 무슨무슨 연산 컨트롤할때 사용. 영문위키 gogo
이외에도 Model Specific Register같은거도 있었음
단어 몇개만 알면 왠만한 문서는 어느정도는 읽히는거 같음(물론 번역기나 사전이 필요해요..)
next : 파이썬으로 script 짤때 편해지는 모듈 공부하기/만들기(ㅎㅎ)