esp와 ebp의 차이

32비트 레지스터 – 접두어로 Extended의 E를 따다 쓴다
EAX – Accumulator Register  누산기에 해당하며 대부분의 연산들이 수행된다.
EBX – Base Register  일반적인 데이터 레지스터로, 원래 16비트 모드에서는 포인터로 사용했다.
ECX – Counter Register  개수, 횟수 등을 저장하는 카운터로 주로 사용된다.
EDX – Data Register  누산기의 확장으로 누산기와 관련된 연산에서 사용된다. EDX와 EAX를 합쳐 64비트 연산을 하는 경우가 대표적이다.
ESI – Source Index  문자열 연산에서 사용되는 원본 주소를 담는다.
EDI – Destination Index   문자열 연산에서 사용되는 목적 주소를 담는다.
EBP – Base Pointer  현재 스택 프레임의 주소를 담으며, 일반적인 목적으로 쓰기도 한다.
ESP – Stack Pointer  스택의 꼭대기 주소를 담는다.
EIP – Instruction Pointer  현재 실행되는 명령의 주소를 담는다.
16비트 – 32비트 레지스터 에서 E만 빼면된다 ( ex > EAX – AX )  당연하겠지만 오버플로는 버려진다.
8비트 – AH,AL 같이 H와 L 이 접미사로 붙는다 H(high)는 상위 8비트 L(low)는 하위 8비트로 나타낸다
64비트 – E의 접두어 대신에 R을 쓴다 (ex > EAX – RAX )
세그멘테이션 (Segmentation:분할,구분)
CS (Code Segment) – 프로그램의 실행명령어(Instruction) 들이 저장되어있는 공간 (함수)
DS (Data Segment) – 데이터들이 저장되어있는공간 (전역변수,상수)
SS (Stack Segment) – 스택 메모리의 공간 (지역변수)
ES (Extra Segment) – 변수들을 위한 추가 메모리 영역
플래그(Flag:깃발,신호기)
    제어플래그 – 프로세서의 동작을 제어하는 플래그
    DF(Direction Flag:방향 플래그) – movs나 cmps 같은 블록데이터이동방향 결정 (1이면 감소)
    IF(Interrupt Flag:인터럽트 플래그) – 1이면 인터럽트 사용가능
    TF(Trap Flag:트랩 플래그) – 1이면 명령어 수행시마다 정지(Trap)
    상태플래그 – 특정 명령의 결과를 나타내는 플래그
    CF(Carry Flag:캐리 플래그) – MSB(최상위비트)에서 올림수 또는 내림수가 발생하면 SET
    OF(Overflow Flag:오버플로 플래그) – 결과가 2의보수로 표현할수있는범위가 아니면 SET
    SF(Sign Flag:부호 플래그) – 결과가 음수이면 SET
    ZF(Zero Flag:제로 플래그) – 결과가 0 이면 SET
    AF(Auxiliary Carry Flag:보조캐리 플래그) – 3번째와 4번째비트간에 캐리가 발생하면 SET
    PF(Parity Plag:패리티 플래그) – 짝수 패리티일경우 SET
사용자 삽입 이미지
참고문서 :

Leave a Reply

Your email address will not be published. Required fields are marked *