티스토리 뷰

세그먼트 레지스터


! Windows / Linux 에서 각각 사용 용도가 다른 것 같음. 나중에 다시 자세히 정리.

! 세그먼트 레지스터는 과거 286 ~ 80386 시스템에서 사용되었으며, 현재는 거의 사용되지 않음.

! In Real mode(??)


-> Boundary(기준값) + Offset(세그먼트 레지스터 - 메모리 주소 시작과의 차이)로 액세스함.


세그먼트란?

세그먼트란, 프로그램에 정의된 특정 영역으로, 코드, 데이터, 그리고 스택으로 알려져 있는 것을 포함한다.

한 세그먼트는 패러그래프 경계(paragraph boundary), 즉 16(hex 기준)으로 나누어지는 위치에서 시작한다.

세그먼트는 메모리의 거의 어느 곳이나 위치할 수 있고, 실제 모드에서 최대64kb(in x86)의 크기를 가질 수 있다.

(메모리를 사용 용도에 따라 나누어 놓음)


CS - Code Segment

실행될 기계 명령어를 포팜하고 있는 공간.


DS - Data Segment

프로그램에서 정의된 데이터, 상수, 작업 영역을 포함한다.

? Win32 응용 프로그램에서 ds segment 에 위치한 win32api(dll load)을 실행하는 경우가 있음.


SS - Stack Segment

프로그램이 임시로 저장할 필요가 있거나(흔히 지역변수), 사용자가 함수를 호출할 경우, subroutine이

사용할 데이터와 주소를 포함한다.


ES - Extra Segment

???


FS / GS - General Purpose Segment

???



참고

http://karfn84.tistory.com/entry/어셈블리-레지스터의-기능

http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly

http://wiki.osdev.org/Segmentation

http://stackoverflow.com/questions/3819699/what-does-ds40207a-mean-in-assembly

http://karfn84.tistory.com/entry/어셈블리-세그먼트와-주소지정

댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
TAG
more
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함