어셈블리 명령어 명령코드 데이터 이동 mov, lea 산술 연산 inc, dec, add, sub 논리 연산 and, or, xor, not 비교 cmp, test 분기 jmp, je, jg 스택 push, pop 프로시저 call, ret, leave 시스템 syscall 데이터 이동 mov a, b : b에 들어있는 값을 a에 대입 mov rdi, [rsi+scx*8] "rsi+scx*8" 값을 rdi에 대입 lea a, b : b의 유효 주소를 a에 저장 lea rdi, [rsi+scx*8] "rsi+scx*8" 을 rsi에 대입 산술 연산 add a, b : a에 b의 값을 더함 add eax, ebx eax += ebx sub a, b : a에 b의 값을 뺌 sub eax, ebx eax -= ..
컴퓨터 구조 기능 구조의 설계 명령어 집합구조 마이크로 아키텍처 하드웨어 및 컴퓨터 방법론 폰 노이만 구조 x86, x86-64 캐시 설계 직접 메모리 접근 하버드 구조 ARM 파이프라이닝 - 수정된 하버드 구조 MIPS 슈퍼 스칼라 - - AVR 분기 예측 - - - 비순차적 명령어 처리 - x-86-64 아키텍처 x64 아키텍처에는 범용, 세그먼트, 명령어 포인터, 플래그 레지스터가 존재한다. 범용 레지스터 x86-64에서 범용 레지스터는 8바이트를 저장할 수 있다. 이름 주용도 rax(accumulator register) 함수의 반환 값 rbx(base register) - rcx(counter register) 반복문의 반복 횟수, 각종 연산의 시행 횟수 rdx(data register) - r..
리눅스 프로세스 메모리 구조 리눅스 프로세스의 메모리는 크게 5가지 세그먼트로 구분된다. 1. 코드 세그먼트 2. 데이터 세그먼트 3. BSS 세그먼트 4. 힙 세그먼트 5. 스택 세그먼트 1. 코드 세그먼트 실행 가능한 기계코드가 위치하는 영역 부여 권한 : 읽기, 쓰기 더보기 int main() { return 31337; } 위와 같은 함수를 실행시켰을 때 "554889e5b8697a00005dc3" 라는 기계코드로 변환되고 해당 기계코드가 위치하는 장소가 코드 세그먼트이다. 2. 데이터 세그먼트 컴파일 시점에 값이 정해진 전역 변수 및 전역 상수들이 위치하는 영역 부여 권한 : 읽기, 쓰기 데이터 세그먼트는 data 세그먼트와 rodata 세그먼트로 나뉜다. 값이 변할 수 있는 데이터들이 위치하는..
x86, x64 x86과 x64는 CPU의 아키텍처를 나타내는 용어로, x86은 32비트 프로세서를, x64는 64비트 프로세서를 의미한다. 레지스터는 CPU가 데이터를 일시적으로 저장하는 기억장치로, x86에서는 EAX, EBX 등의 4바아트 레지스터가 있고, x64에서는 RAX, RBX 등의 8바이트 레지스터가 있다. x86과 x64의 장단점 x86의 장점은 호환성이 높고, 32비트 프로그램을 실행하는데 더 효율적이다. 하지만 단점으로는 메모리 인식률이 4GB로 제한되어 있고, 데이터 처리량과 속도가 낮다. x64의 장점은 메모리 인식률이 4GB 이상으로 확장되어 있고, 데이터 처리량과 속도가 높다. 하지만 단점은 호환성이 낮고, 64비트 프로그램을 실행하는데 더 많은 자원을 필요로 한다. BoF B..
.so .a .o .c 이란 무엇인가? 해당 파일은 모두 C 언어로 작성된 프로그램과 관련된 파일이다. .so : .so 파일은 공유 라이브러리로, 여러 개의 오브젝트 파일을 하나로 묶은 동적 라이브러리이다. 이 라이브러리는 프로그램과 별도로 존재하며, 실행 시에 메모리에 로드되어 공유된다. .a : .a 파일은 아카이브 라이브러리로, 여러 개의 오브젝트 파일을 하나로 묶은 정적 라이브러리이다. 이 라이브러리는 프로그램과 함께 컴파일되어 실행 파일에 포함된다. .o : .o 파일은 오브젝트 파일로, 컴파일러가 생성한 기계어 코드를 담고 있는 바이너리 파일이다. 이 파일은 링커가 다른 오브젝트 파일이나 라이브러리와 결합하면 실행 가능한 프로그램이 만들어진다. .c : .c 파일은 C 소스 코드 파일로, C..
dll 파일이란 무엇인가? dll 파일은 Dynamic Link Library의 약자로, 여러 프로그램에서 사용할 데이터와 코드를 포함하는 파일이다. 예를 들어, 대화 상자와 관련된 기능은 Comdlg32.dll에 의해 수행된다. 이 dll의 기능은 모든 프로그램에서 "열기" 대화 상자를 구현하는 데 사용할 수 있다. dll파일은 프로그램 실행 시 동적으로 연결되어 메모리와 디스크 공간을 절약하고 성능을 향상 시킨다. dll 파일은 윈도루 레지스트리에 등록되어야 하며, 누락되거나 손상되면 오류가 발생할 수 있다. dll 파일이면 손상될 경우 dll 파일이 손상되면 오류가 발생할 수 있다. 손상된 dll 파일을 복구하는 방법을 알아보자. 1. 시스템 파일 검사기 도구를 사용하여 손상된 시스템 파일을 문제 ..