일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- Nebula
- LOB
- JUCE라이브러리
- 자료구조
- Docker
- a tour of go
- vim-go
- C++
- JUCE 튜토리얼
- go channel
- tour of go
- c++ heap
- C언어
- OS
- C++ gui
- C++ gui 라이브러리
- go
- 운영체제
- 연결리스트
- 백준
- JUCE library
- 리듬게임
- JUCE
- BOJ
- 공룡책
- 코딩
- 프로그래밍
- C++ library
- gui
- 알고리즘
- Today
- Total
CafeM0ca
[Assembly]튜토리얼 Memory Segments 본문
어셈블리 프로그램의 3개의 영역에 대해 이미 논의했었다. 3개의 영역은 나타낸다 다양한 메모리 세그먼트를.
흥미롭게도, 만약 대체하면 영역 키워드를 세그먼트로, 같은 결과를 얻을 수 있다.
다음 코드를 따라쳐보자.
실행결과: Hello, world!
Memory Segments
분할된(segmented) 메모리 모델은 나뉜다 시스템 메모리로 독립적인 세그먼트의 그룹으로 참조된다. 포인터들이 위치된곳에 의해 세그먼트 레지스터들 안에서.
각각의 세그먼트는 사용된다 포함하기 위해 지정된 타입의 데이터를. 하나의 세그먼트는 사용된다 포함하기 위해 명령 코드들, 또다른 세그먼트를 저장한다 데이터 요소를, 그리고 세번째 세그먼트는 유지한다 프로그램 스택을.
위 내용에 비추어 볼때, 우리는 지정할 수 있다 변하는 메모리 세그먼트를 다음으로.
Data segment - .data 영역과 .bss 영역에의해 표현된다. .data 영역은 정의되는데 사용된다 메모리 구역을, 이 구역은 데이터 요소가 저장된다 프로그램을 위해
이 영역은 의존될 수 없다 데이터 요소가 정의된 이후에, 그리고 이것은 남아있는 정적 전역 프로그램이다.
Code segment - .text영역에 의해 표현된다. 이것은 정의된다 하나의 영역으로. 그것은 명령 코드를 저장되는 하는 메모리다. 이것 또한 고정된 영역이다.
Stack - 이 세그먼트는 포함한다 데이터 값을 함수에 넘겨주고 프로그램 실행 순서를 포함한다.
요약: 세그먼트는 3가지로 나뉜다. 데이터 세그먼트, 코드 세그먼트, 스텍.
데이터 세그먼트에는 .data와 .bss 영역이 있다. 여기에는 데이터 요소들이 저장되어 있다. (문자열 등)
코드 세그먼트에는 .text 영역이 있다. 여기에는 명령 코드를 저장하는 메모리다. 고정되어있음
스택에는 함수 인자들을 넘겨주기 위한 값과 프로그램 실행 순서가 들어있다.
'Programming > Assembly' 카테고리의 다른 글
[Assembly]tutorial registers (0) | 2018.03.26 |
---|---|
[Assembly]튜토리얼 Basic Syntax (0) | 2018.03.25 |
[어셈블리]어셈블리 명령어 기본 (0) | 2017.10.23 |