개발/Assembly 3

UNIX 운영체제 System Call

System call. UNIX 계열 운영 체제에서는 system call 기능이 있다. userland 프로세스가 사용하여 커널 프로시저를 호출한다. 각각의 시스템 호출은 고유번호가 지정되어 있고 각각의 번호마다 짧은 매개변수가 있다. 운영 체제, 하드웨어 플랫폼 및 구성 옵션에 따라 다를 수 있다. 이 글을 kernel 카테고리에 넣을까 Assembly 카테고리에 넣을까 엄청 고민했다. 결국 환경을 리눅스 AMD64말고도 확장시켜 다양한 system call 을 구현하는 것으로 방향을 잡았다. linux kernel darwin freeBSD os별 system call 명령어 Name standard linux Darwin FreeBSD access POSIX access(2) access(2) a..

개발/Assembly 2022.02.20

Hello World! 어셈블리 분석 - AMD64 어셈블리 기초

Hello, World! 출력을 분석해보자 Hello.c #include //표준 라이브러리 int main(void){//main 함수 선언 printf("Hello world\n");//printf표준함수로 문자열 출력 return 0;//무결성 증명 } 간단한 Hello world 프로그램이지만 많은 원리가 있다. 어셈블리를 분석하려면 당연히 어셈블리어를 알아야 한다. 어셈블리 구조 어셈블리어 수행 방식 Opcode Operand INC RAX 어셈블리는 Opcode와 Operand 그리고 ;로 시작하는 주석이 있다. Opcode는 명령어 Operand는 명령이 수행될 공간 또는 데이터 ; 주석 Opcode Operand1(Destination) Operand2(Source) ADD RBX RAX ..

개발/Assembly 2022.02.09

RISC vs CISC 차이 - Processor

RISC vs CISC 가 무엇일까? 기술의 발전으로 다양한 프로세서가 등장했다. 구분을 위해 연산 방식에 따라 분류할 때 주로 RISC 와 CISC 로 나눌 수 있다. 구조가 다르기 때문에 컴파일러도 다르다. RISC 에는 ARM 이 대표격이며, CISC 에서는 AMD64 가 대표적이다. 표 CISC vs RISC 요약: C(omplex)ISC 는 코드 단순/계산 복잡,단순처리 R(educed)ISC 는 코드 복잡/계산 단순,병렬처리 CISC (복잡 명령어셋 컴퓨터) RISC (단순 명령어셋 컴퓨터) 1 하드웨어에서 주로 처리(Memory-to-Memory) 소프트웨어에서 주로 처리 (Register-to-Register) 2 멀티 클럭 동작 싱글 클럭 동작만 3 코드 용량 작음 코드 용량 큼 4 주소..

개발/Assembly 2022.02.03