일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 |
- java
- 정보처리산업기사
- 소프티어
- 자바
- 코딩봉사
- 백준알고리즘
- 코딩교육봉사
- 시나공
- SW봉사
- 공부일지
- 회고
- 알고리즘
- kotlin
- C++
- SQL
- 스프링
- 백준
- 코틀린
- 문제풀이
- 프로그래머스
- 1과목
- programmers
- 파이썬
- 백준 알고리즘
- python
- 데이터베이스
- CJ UNIT
- softeer
- BFS
- MYSQL
- Today
- Total
목록assembly (2)
JIE0025

함수 호출과 메모리 반환 어셈블리 언어에서 어떻게 이루어지는지 알아보자. 다음은 설명을 위한 가정이다. - 함수 B에서 함수 A를 호출하는 상황이다. - 함수 A는 매개변수로 int b, int c, int d를 갖고 있으며, 반환형은 int형이다. 1. CALL 함수 A를 호출 하면 다음과 같은 세가지 단계를 거친다. 1) push : 매개변수 저장 push를 통해 a라는 함수의 인자로 들어갈 값을 저장한다. 함수 a의 매개변수는 총 3개 이므로 push를 세번 반복할 것이다. 함수 호출시 가장 먼저 하므로 스택의 밑부분에 위치한다. 2) call : 호출한 명령어의 주소 저장 EIP(instuction Pointer)로 다음 명령어 주소값에다가 현재 우리가 함수를 호출했던 주소를 저장해줌으로서 ret..

➡️ 기초 어셈블리 명령어➡️레지스터 종류와 역할➡️추가 설명 - 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 에 대해 간..