일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- C++
- 백준알고리즘
- 회고
- softeer
- SQL
- 1과목
- 파이썬
- 백준 알고리즘
- 코딩교육봉사
- 데이터베이스
- 스프링
- 프로그래머스
- 자바
- BFS
- 알고리즘
- python
- kotlin
- 코딩봉사
- programmers
- 코틀린
- CJ UNIT
- java
- 정보처리산업기사
- 백준
- 문제풀이
- 시나공
- 소프티어
- SW봉사
- MYSQL
- 공부일지
- Today
- Total
JIE0025
[Assembly] 기초 어셈블리명령어와 레지스터, Pointer Register, Push, Pop, Call, Retn, Mov 본문
[Assembly] 기초 어셈블리명령어와 레지스터, Pointer Register, Push, Pop, Call, Retn, Mov
Kangjieun11 2020. 3. 18. 02:48➡️ 기초 어셈블리 명령어
➡️레지스터 종류와 역할
➡️추가 설명
- Pointer Register
1) ESP (Stack Pointer) : 가장 최근에 스택에 입력된 데이터의 포인터
2) EBP (Base Pointer) : Stack Frame을 사용할 때 현재 실행중인 함수가 사용하는 Stack Frame의 바닥을 가리킴
3) EIP (Instruction Pointer) : 다음에 수행 될 명령어의 포인터
* Stack Frame ? : 현재 수행중인 함수의 스택영역, ESP와 EBP 사이의 공간
- PUSH : stack에 데이터를 저장함 (esp값 자동 조정 : 감소)
- POP : stack에서 데이터를 지움 (esp 자동 조정 : 증가)
아래 그림을 통해 stack push pop 에 대해 간략히 설명해 보자면,
가장 왼쪽의 스택은 먼저 만들어 놓은 스택으로 push를 통해 비어있던 스택에서 10이 들어간 상태이다.
보라색 글씨를 보면 스택에서 위로 갈수록 주소값이 작아지는것을 볼 수 있다.
push를 하게 될 경우 esp(최근 데이터의 포인터)의 값이 0 에 가까워 지므로 감소하는 것이고,
pop을 하게 될경우 esp의 값이 최대값인 1000 에 가까워 지므로 증가한다고 보면 된다.
- RETN : return, 함수 호출자에게 반환
- CALL : 함수 호출, EIP(동작하고자 하는 다음 명령어)를 변경하기 전에 스택에 백업 함
- MOV : 데이터를 복사하는 명령어.
mov esp ebp >> ebp의 값을 esp로 복사한다는 뜻
'기타 학습 > Language' 카테고리의 다른 글
[BOJ - 자료구조] 1927 번 : 최소 힙 ( C++) (0) | 2022.05.06 |
---|---|
[C++] string::find, string::npos 단어 존재 여부 확인 (1) | 2022.05.05 |
[Python] 파이참에서 API 사용하기 : Twilio API를 이용한 문자 메시지 전송 실습 (0) | 2020.04.17 |
[Assembly] 함수 호출(call)과 메모리 반환(return) 개념 (0) | 2020.03.19 |
Java Script 객체지향 텍스트RPG 실습과 기능 추가 (0) | 2020.01.28 |