어셈블리와 레지스터에 대해 공부중입니다.

gmlrjs0312의 이미지

궁금한게 생겼는데 64비트 운영체제에서 64비트 레지스터를 사용하는데 그때 만약 32비트나 그 이하(16,8..)의 파일이나 정보를 처리할 때 어떤 레지스터가 작용하여 어떻게 처리하는지가 궁금해서 여쭤봅니다.

...의 이미지

머신마다 다를 것 같으니 아마 아키텍쳐 별로 ISA 매뉴얼 같은 걸 읽어보셔야 할 것 같은데요. 일반적으로는 64비트 레지스터의 일부를 사용(예컨대 하위 16비트)하고 인스트럭션들도 operand register의 하위 일부만 사용하도록 설계할 수도 있을 것 같고요. 아니면 타겟으로 하는 응용 프로그램에 따라서 (예컨대 16비트를 무지 많이 사용하는 프로그램들을 돌릴 계획으로 만드는 임베디드 프로세서 같은 거라면) 16비트 레지스터를 따로 넣고 그에 대해 연산하는 명령어도 따로 추가할 수 있겠죠.

만약 하드웨어 설계자가 생각하기에 어차피 대부분 연산은 32비트 이상이라고 봐서 따로 16 비트나 8비트를 연산할 인스트럭션을 안 주는 경우라면, 컴파일러나 어셈블러가 64나 32비트 연산을 이용해서 8비트 연산을 구현해야 할 거고요.