본문 바로가기

전체 글

(69)
ip 설정 (netplan) & hostname (이름 바꾸기) & ipv6제거 보호되어 있는 글입니다.
x86 Assembly : Essential Part(1) 명령코드종류 데이터 이동(Data Transfer) mov, lea 산술 연산(Arithmetic) inc, dec, add, sub 논리 연산(Logical) and, or, xor, not 비교(Comparison) cmp, test 스택(Stack) push, pop 프로시져(Procedure) call, ret, leave 시스템 콜(System call) syscall x64 어셈블리 언어는 우리가 사용하는 한국어보다는 훨씬 단순하다 이들의 문장은 동사에 해당하는 명령어(Operation Code, Opcode)와 목적어에 해당하는 피연산자(Operand)로 구성된다. 피연산자 피연산자에는 총 3가지 종류가 올 수 있다. 1. 상수(Immediate Value) 2. 레지스터(Register) ..
Quiz: Computer Architecture 보호되어 있는 글입니다.
Background: Computer Architecture 폰 노이만 구조 중앙처리장치(Central Processing Unit, CPU), 기억장치(memory), 버스(Bus) 중앙처리장치(Central Processing Unit) CPU는 프로그램의 연산을 처리하고 시스템을 관리하는 두뇌이다. 프로세스의 코드를 불러오고, 실행하고, 결과를 저장하는 일련의 모든과정이 일어나며 CPU는 산술/논리 연산을 처리하는 산술논리장치(Arithmetic Logic Unit, ALU)와 CPU를 제어하는 장치(Control Unit), CPU에 필요한 데이터를 저장하는 레지스터(Register)등으로 구성됨. 기억장치(MEMORY) 기억장치는 컴퓨터가 동작하는데 필요한 여러 데이터를 저장하기 위해 사용되며, 용도에 따라 주기억장치와 보조기억장치로 분류됨 주기억장치는 ..
Linux Memory Layout 리눅스에서는 프로세스의 메모리를 크게 5가지의 Segment(세그먼트)로 구분 코드 세그먼트, 테이터 세그먼트, BSS 세그먼트, 힙 세그먼트, 스택 세그먼트 코드 세그먼트(Code Segment)는 실행 가능한 기계 코드가 위치하는 영역 텍스트 세그먼트(Text Segment)라고도 불림 이 세그먼트에는 읽기 권한과 실행 권한이 부여됨 정수 31337을 반환하는 main함수가 컴파일 되면 기계코드로 변환되는데 이 기계코드가 코드 세그먼트에 위치하게 됩니다. ㅇint main() {return 31337;} 데이터 세그먼트(Data Segment)에는 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수가 위치 cpu가 데이터를 읽을 수 있어야 하므로 읽기 권한이 부여됨 데이터 세그먼트는 쓰기가 가능한 세..