●Assembly Code

 ▷Machine Code를 텍스트로 나타낸 것.

 ▷gcc -Og -S 파일명

 ▶자료형

  ▷int: 1, 2, 4, 8 bytes (정확하지 않음)

  ▷float: 4, 8, 10 bytes (정확하지 않음)

  ▷Array, Structure같은 여러 개가 한번에 묶인 타입은 없음

 

 

 

○연산

 ▷Register / 메모리 데이터에 대해 산술 연산

 ▷data load / store 가능

 

 ▶레지스터

  ▷정수, 메모리 주소 ... 등을 저장

  ▷피연산자, 연산의 결과를 저장하는 공간.\

  ▷%rax : 8바이트 / %eax : 4바이트 / 2바이트, 1바이트로 끊어서도 사용 가능 -> 호환 가능하도록

 

 ▶피연산자 (Operand)

  ▷상수: $0x400 과 같이 $를 이용해 구분

  ▷레지스터: %rax, ...

  ▷메모리 주소: (%rax), 메모리 주소로 접근? (*의 역할?)

 

 ▶메모리 접근

  ▷C에서의 배열과 유사 (Ri: 인덱스, S: 원소 크기)

 

 ▶연산자 (Operator)

  ▷크기에 따라 사용하는 연산자가 다름. (q: 8바이트, l: 4, w:2, b:1)

  ▷대부분 Source, Destination의 순서를 가짐.

  ▶종류

   ▷mov[q]: Destination에 Source를 저장. 대입 연산자와 유사

   ▷lea[q]: Memory reference를 하지 않고 (*를 하지 않고), 주소를 계산. x+k*y를 계산하는데 주로 사용

 

   ▶Zero Extension (movz[b][l])

    ▷작은 단위에서 큰 단위로 값을 확장한다. (b(1)<w(2)<l(4)<q(8)) 남는 공간은 0으로 채운다.

'컴퓨터 지식 > 시스템' 카테고리의 다른 글

Assembly - Procedure  (0) 2020.10.28
Assembly-Control  (0) 2020.10.13
Architecture / Machine Code  (0) 2020.10.07
Float  (0) 2020.10.07
Integer  (0) 2020.10.06

+ Recent posts