[Libasm] syscall error 처리
·
42Seoul/Libasm
error 처리 외부 함수인 ___error를 사용해서 errno 값을 세팅 errno는 가장 최근 에러의 번호를 담는 integer 타입 변수이다. 프로그램이 시작되면 errno는 0으로 초기화 된다 에러가 생기면 시스템 콜 함수는 NULL 또는 -1을 반환한다 에러 타입을 파악하기 위해 외부 변수 errno에 에러 번호가 담긴다 man errno /* ... When a system call detects an error, it returns an integer value indicating failure (usually -1) and sets the variable errno accordingly. Successful calls never set errno; once set, it remains u..
[Libasm] 어셈블리 변수, 명령어 및 프로그램 구조
·
42Seoul/Libasm
어셈블리 변수 data type size BYTE 부호 없는 1byte WORD 부호 없는 2byte DWORD 부호 없는 4byte QWORD 부호 없는 8byte 어셈블리 산술 연산 명령어 수행내용 참고 MOV a, b a = b (b를 a에 대입(복사) ADD a, b a += b SUB a, b a -= b INC a a += 1 기계코드 크기가 ADD, SUB 보다 더 작다 DEC a a -= 1 기계코드 크기가 ADD, SUB 보다 더 작다 movzx a, b a가 b보다 큰 공간이어도 복사가 되고, 남는 공간은 0으로 채워짐 부호가 없는 정수에만 사용 movsx a, b 남는 공간이 1로 채워짐. 부호가 있는 정수에만 사용 어셈블리 조건 지시 정의 플래그 JMP 무조건 분기 명령을 실행 J ..
[Libasm] 어셈블리어, NASM?
·
42Seoul/Libasm
어셈블리어란? 어셈블리어(assembly language)는 이해하기 어려운 기계어를 쉽게 연상할 수 있는 기호를 기계어와 1:1로 대응시켜 코드화한 기호 언어이다. 어셈블리어로 작성한 원시 프로그램은 어셈블러를 통해 목적프로그램(기계어)로 어셈블 하는 과정을 거쳐야 한다. 프로그램에 기호화된 명령 및 주소를 사용한다. 어셈블리어의 기본 동작은 동일하지만 작성 CPU마다 사용되는 어셈블리어가 다를 수 있다. 어셈블리어에서 사용되는 명령은 의사명령과 실행명령으로 구분할 수 있다. 컴파일 vs 어셈블 Compile(컴파일) : 고급언어로 작성한 원시 프로그램을 컴파일러가 기계어로 번역하는 작업을 컴파일이라고 한다. Assemble(어셈블) : 어셈블리어로 작성한 원시 프로그램을 어셈블러가 번역하는 작업을 어..
WONILLISM
'42Seoul/Libasm' 카테고리의 글 목록