Assembly language 종류
1.GAS(GNU Assembler)
-GNU 프로젝트에서 사용된다.(Linux) ,AT&T 스타일
2.NASM(NetWide Assembler)
-인텔 x86용 어셈블러(Windows) ,intel 스타일
문법
1)레지스터(피연산자)는 %로 시작한다. 인텔스타일은 붙이지 않는다.
2)명령어 형식은 Source(출처) Destination(목적지)순으로 온다. 인텔 스타일은 목적지, 출처 순으로 온다.
1 | ex) movl $4, %eax, 인텔은 movl eax, 4 |
3)명령어의 마지막 글자로 연산 크기를 결정 한다.
1 | b(byte,8bit) w(word,16bit) l(long,32bit) |
4)직접 값을 넣을려면 $를 붙힌다.
1 | ex) movl $5, %eax |
5)피연산자 앞에 아무것도 붙지 않으면 주소를 의미한다.
1 | ex) movb $abc, %eax -> abc 값. |
6)인덱싱과 간접주소(indirection)는 괄호로 표시된다.
1 | ex) testb $0x80, 7(%ebp) ->ebp가 가리키는 주소값으로부터 7번째 |
7)주석은 #으로 표시한다.
1 | ex) movb $5, %eax # 5를 eax에 할당한다. |
8)데이터 형정의는 .long, .int, .byte, .ascii, .string등을 사용
어셈블리어 코드 작성 형태
1 | #텍스트 세그먼트 시작 (어셈블리어 코드 시작) |
끝~