greenkang
그린 개발log
greenkang
전체 방문자
오늘
어제
  • 분류 전체보기 (28)
    • 알고리즘 (20)
    • MySQL (0)
    • 생각 (0)
    • 컴퓨터구조 (6)
    • Spring · SpringBoot (1)
    • Java (1)
    • 장애 대응 회고 (0)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • 리트코드
  • 백준 24479번 자바
  • 장애 대응 회고
  • java
  • python
  • 백준 17265번
  • 어셈블리어
  • 백준
  • 프로그래머스 거리두기 자바
  • 백준7569 java
  • 프로그래머스
  • 41. First Missing Positive
  • 자바
  • 알고리즘
  • 백준7569
  • 파이썬
  • 컴퓨터구조
  • TOPCODER알고리즘트레이닝
  • 백준 1065번 자바
  • 프로그래머스 거리두기 java

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
greenkang

그린 개발log

컴퓨터구조

[컴퓨터 구조] 어셈블리어 2. 예제

2023. 5. 1. 01:33

📗 어셈블리 메모리 주소, 크기, 포인터 표기법

📌 메모리 주소 표기법

메모리 주소는 대괄호 [] 로 표기한다.

ex) [00402001], [02130423] 등등등,,

 

📌 크기 표기법

레지스터의 크기에 맞춰 명령어에 들어갈 필수 입력 정보

  • DWORD : 4byte
  • WORD : 2byte
  • BYTE : 1byte

 

📌 포인터 표기법

PTR 


📗 C언어로 작성된 간단한 사칙연산 소스 코드 

int square(int num) {
    int a = 1, b = 2;
    int c = a + b;
    
    return c;
}
push    rbp
mov     rbp, rsp
mov     DWORD PTR [rbp-20], edi
mov     DWORD PTR [rbp-4], 1
mov     DWORD PTR [rbp-8], 2
mov     edx, DWORD PTR [rbp-4]
mov     eax, DWORD PTR [rbp-8]
add     eax, edx
mov     DWORD PTR [rbp-12], eax
mov     eax, DWORD PTR [rbp-12]
pop     rbp
ret
  • push    rbp : 특정 함수 접근을 위해 스택의 공간 확보
  • mov     rbp, rsp : rsp의 값을 rbp에 저장, 가장 최근에 저장된 공간의 주소(rsp)를 스택의 바닥공간 주소(rbp)로 저장
  • mov     DWORD PTR [rbp-20], edi : 함수를 호출할 때, 할당한 edi를 rbp-20위치에 크기 4byte만큼 할당하여 저장
  • mov     DWORD PTR [rbp-4], 1 : 1을 rbp-4위치에 크기 4byte만큼 할당하여 저장
  • mov     DWORD PTR [rbp-8], 2 : 2를 rbp-8위치에 크기 4byte만큼 할당하여 저장
  • mov     edx, DWORD PTR [rbp-4] : rbp-4 위치에 있는 값을 edx에 저장
  • mov     eax, DWORD PTR [rbp-8] : rbp-8 위치에 있는 값을 eax에 저장
  • add     eax, edx : eax에 있는 값과 edx에 있는 값을 더하여 eax에 저장
  • mov     DWORD PTR [rbp-12], eax : eax에 있는 값을 rbp-12위치에 크기 4byte만큼 할당하여 저장
  • mov     eax, DWORD PTR [rbp-12] : rbp-12에 값을 eax에 저장
  • pop     rbp : 사용이 끝난 레지스터 pop
  • ret : 함수를 호출한 바로 다음 지점으로 이동

어셈블리에 대한 내용을 짧게 정리해보았습니다!

 

글을 쓰면 쓸수록.. 아직 많이 부족하다는 생각이 드네요😢.

예제를 살펴보면서 알게된 스택프레임 등등.. 많은 것들을 정리하지 못해서 아쉽습니다.

 

혼자공부하는컴퓨터구조+운영체제를 완독하면 관심가는 부분은 따로 더 깊게 공부해서 아쉬움을 채워보도록 하겠습니다!

'컴퓨터구조' 카테고리의 다른 글

[컴퓨터 구조] 명령어의 구조  (0) 2023.06.06
[컴퓨터 구조] 어셈블리어 1. 기본 문법과 명령어  (0) 2023.05.01
[컴퓨터 구조] 컴퓨터가 고급언어를 이해하는 방법  (1) 2023.04.16
[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 2. 문자  (0) 2023.04.05
[컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 1. 숫자  (0) 2023.04.05
    '컴퓨터구조' 카테고리의 다른 글
    • [컴퓨터 구조] 명령어의 구조
    • [컴퓨터 구조] 어셈블리어 1. 기본 문법과 명령어
    • [컴퓨터 구조] 컴퓨터가 고급언어를 이해하는 방법
    • [컴퓨터 구조] 컴퓨터가 데이터를 이해하는 방법 2. 문자
    greenkang
    greenkang

    티스토리툴바