2010-03-30 2 views
20

Google에 결과가 표시되지 않습니다.어셈블리에서 EAX, EBX, ECX ...의 X는 무엇을 의미합니까?

누구든지 알고 계 셨나요?

+0

관련 항목 : [E 및 R 접두사는 Intel 32 비트 및 64 비트 레지스터의 이름에 어떤 의미가 있습니까?] (https://stackoverflow.com/questions/43933379/what-do-the-e) -and-r-prefixes-int-in-the-intel-32-bit-and-64-bit-r)를 지원합니다. 또한 "X"부분에 대해 묻지 만,이 질문은 더 나은 답변을 제공하므로 복제본으로 닫히지 않습니다. –

답변

9

내가 아는 한 아무 것도 없습니다. 범용 레지스터의 약자입니다.

16 비트 AX 레지스터는 AH (상위 바이트) 및 AL (하위 바이트)으로 지정할 수 있습니다.

EAX 레지스터는 AX 레지스터의 32 비트 버전입니다. E는 확장을 의미합니다.

+14

8080, 8085 및 Z80에는 8 비트 레지스터 A, B 등이 있습니다. 8086에는 16 비트 AX, EX 등의 레지스터가 있습니다. 80386 이상은 EAX를 얻었습니다.나는 E와 X가 둘 다 'extended', 16 비트 확장의 경우 X, 32 비트 확장의 경우 E로 가정했습니다. –

+1

@Jonathan : X는 "확장 된"것에 영감을 받았을 지 모르지만 아직 어디서나 설명 된 것을 발견하지 못했습니다. X에 대한 공식적인 의미가 없다면 어리석은 느낌없이 다른 "확장 된"것을 추가 할 수있는 방법을 설명합니다. 그것을 확장 된 Accumulator eXtended라고 명명하면 상상력이 부족한 것처럼 보일 것입니다. :) – Guffa

+0

'C'와 같은 종류의 코드가 있습니다. – IAbstract

1

미하이 (Mihai)가 말했듯이, 그것은 단지 명명 규칙 일뿐입니다.

그러나 'X'는 종종 '값 채우기'로 사용되며 수학자가 방정식에서 첫 번째 변수 이름으로 일반적으로 사용되며 이러한 특정 레지스터는 일반적인 용도로 사용됩니다 (반대로 ESP는 확장 된 (32 비트) 스택 포인터 또는 EIP 확장 명령 포인터입니다.) 아마도 'X'가 'B'를 말하기 위해 선택되는 이유 일 것입니다.

+0

동일하지만 변수는 이름이 A B C 인 경향이 있지만 이유가 될 수 있습니다. – thecoshman

+0

사실, 어떤 사람들은 a, b, c, x, y, z에 대해 다른 사람들을 찾으러 간다. 나는 단지 솔직히 추측하고있다. –

0

내가 생각할 수있는 이유 중 하나는 '정상'상태가 아니라는 것을 나타내는 것입니다. 전자 제품 시리얼 통신에 대해 이야기 할 때 데이터 라인 중 하나는 무엇이든 될 수 있다면, 당신은, 그 어느 쪽도/모두/0 또는 1

+0

AX는 "첫 번째 문자가 H이고 두 번째 문자가 H 또는 L"인 모든 레지스터를 의미한다고 해석 될 수 있기 때문에 "X"는 "H 또는 L"의 축약어임을 제안 할 수 있습니다. "정상적인"상태로하십시오. – supercat

32

는 X가 에게 의미 그대로의 상태가 X라고 할 수 적어도 8080으로 되돌아 간다. 그것은 쌍 (BC, DE, HL)으로 사용될 수있는 8 비트 레지스터 B, C, D, E, H, L을 가지고있다. BC와 DE 쌍은 대부분 16 비트 산술에 사용되었습니다. HL 쌍은 일반적으로 메모리 주소를 보유합니다. 에 대한 X의 사용의 예 다음 8086에

LXI D,12ABH ; "load pair immediate" 
DCX B   ; "decrement pair" 
STAX D   ; "store A (indirect) at pair" 

빨리 감기 그것에는 레지스터 AL, AH, BL, BH, CL, CH, DL, DH, 이는 유사에 8080은 쌍으로 사용할 수 있습니다 : AX, BX, CX, DX.

다른 사람들이 지적한 것처럼, 32 비트 레지스터 이름에서 E는 으로 확장했습니다.

+2

굉장! 고마워. 나는 단지 'E'가 게시물 앞에서 연장되었다고 추측했다. – crush

+0

확인 됨 :이 지침을 지원하는 첫 번째 인텔 프로세서는 8080이었습니다. 그 이상으로 되돌아 가지 않습니다. 8008은 한 쌍의 레지스터를 지원하지 않았습니다. 8008에있는 유일한 'X'를 포함하는 명령어 니모닉은 XOR 연산이었다. –

5

8086에서 AX 레지스터는 AH와 AL의 조합이었습니다. 마찬가지로 BX는 BH 및 BL 등이었습니다. 80386에서 16 비트 레지스터를 32 비트 레지스터로 결합하는 대신 인텔은 각 레지스터에 16 비트를 추가했습니다. 이름 "AL"은 여전히 ​​첫 번째 문자 - 명명 된 레지스터의 비트 0-7, 비트 8-15에 대한 "AH"및 비트 0-15에 대한 "AX"를 참조합니다. "EAX"라는 이름은 이제 레지스터의 32 비트 모두를 참조합니다.

대부분의 다른 16 비트 및 32 비트 프로세서는 레지스터 상단이나 하단에 액세스하는 동등한 수단을 제공하지 않습니다. 하드웨어 복잡성과 명령어 인코딩 비트 모두에서 이러한 액세스를 허용하는 비용은 중요했으며 오늘날의 시대에 다른 레지스터의 8 비트 부분에 8 비트 부분을 추가하는 기능은 멀리 있습니다 그러한 하드웨어 나 명령어 인코딩 공간을 사용할 수있는 많은 다른 용도보다 덜 유용합니다. 반면에, 그러한 능력이 존재할 때 유용 할 수있는 때가 여전히 있습니다.

관련 문제