일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
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 | 29 | 30 |
- 알고리즘
- LOB
- 연결리스트
- JUCE라이브러리
- a tour of go
- vim-go
- 프로그래밍
- c++ heap
- 백준
- 자료구조
- 리듬게임
- gui
- Nebula
- 코딩
- go channel
- JUCE
- OS
- go
- C++ gui
- C++ library
- 운영체제
- JUCE library
- Docker
- C++
- BOJ
- tour of go
- 공룡책
- C언어
- JUCE 튜토리얼
- C++ gui 라이브러리
- Today
- Total
CafeM0ca
[Assembly]튜토리얼 Basic Syntax 본문
어셈블리 프로그램은 3개의 영역으로 나뉜다.
- 데이터 영역
- bss 영역
- 텍스트 영역
The data section
데이터 영역은 사용된다. 초기화 선언된 데이터나 상수들로. 이 데이터들은 런타임때 바뀌지 않는다.
선언된 값들로 상수 값이나 파일 이름, 버퍼 사이즈 등 정의할 수 있다.
데이터 영역을 선언하는 구문은 다음과 같다.
section.data
The bss Section
bss 영역은 사용된다. 변하는 변수들로. bss 영역을 선언하는 구문은 다음과 같다.
section.bss
The text section
text 영역은 실제 코드를 유지하는데 사용된다. 이 영역은 반드시 global _start와 함께 시작되어야 한다. 이것은 커널에게 말한다. 프로그램 실행 시작점이 어딘지.
section.text
global _start
_start:
Comments
어셈블리어 주석은 ;로 시작한다. 공백,문자 상관없이 한줄 주석처리된다.
; 이 프로그램은 메시지를 화면에 표시한다.
add eax, ebx ; ebx값을 eax에 증가
Assembly Language Statements
어셈블리어 프로그램은 3개의 구문 이루어져있다.
- 실행가능 명령 또는 명령
- Assembler directives(어셈블러 지시문) 또는 pseudo-ops //assembler: 어셈블리어를 기계어로 번역해 주는 프로그램
//pseudo-ops 는 어셈블러 명령문이다. pseudo-operation을 흔하게 pseudo-op로 부른다.
//Assembler directive는 기계코드를 만들지 않는다. 그러므로 프로그램 사이즈에 기여하지 않는다.
//Assembler Instruction(명령문)은 기계코드를 만든다. 그러므로 프로그램 사이즈에 기여한다.
- 메크로
실행가능한 명령이나 간단한 명령은 프로세스에게 무엇을 해야할지 알려준다.
각각의 명령은 operation code(opcode, 작동코드)로 구성되있다. 실행가능한 명령은 하나의 기계어 명령을 만든다.
assembler directives나 pseudo-ops는 어셈블러한테 어셈블러 프로세스의 다양한 측면에 대해 알린다. 실행 불가하고 기계어 명령어를 만들지 않는다.
Macros는 기본적으로 텍스트 대체 메커니즘이다. //흔히 알고있는 그 매크로
syntax of Assembly Language Statements
어셈블리어는 한 줄마다 의미가 있다. 각각의 구문은 다음의 포멧을 따른다.
[lable] mnemonic [operands] [;comment]
대괄호 안은 옵션이다. 기본 명령은 2개의 부분으로, 첫번째는 명령어의 이름(mnemonic,니모닉-기억을 돕는)으로, 이것들은 실행된다, 그리고 두번째는 오퍼랜드나 명령어의 매개변수다. //오퍼랜드는 컴퓨터에서 조작에 필요한, 또는 조작으로 나타나는 수치의 총칭 -> 피연산자
다음은 전형적인 어셈블리어 구문 예제다.
Hello World 프로그램을 어셈블리로 짜보자.
nasm -f elf hello.asm -> hello.o파일 생성(원시코드를 목적 코드로 생성)
ld -m elf_i386 -s -o hello hello.o (목적코드를 링킹하여 hello라는 실행파일 생성)
./hello (hello프로그램 실행)
원문:https://www.tutorialspoint.com/assembly_programming/assembly_basic_syntax.htm
'Programming > Assembly' 카테고리의 다른 글
[Assembly]tutorial registers (0) | 2018.03.26 |
---|---|
[Assembly]튜토리얼 Memory Segments (0) | 2018.03.26 |
[어셈블리]어셈블리 명령어 기본 (0) | 2017.10.23 |