●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 |