[Assembly] 산술 연산
·
CS/Computer Architecture
incincoperand1inc eaxeax에 +1을 해주는 코드(eax++)operand1 +1operand1 : 레지스터 or 메모리CF를 설정하지 않음 Exampleinc al : al에 1을 더한 후 다시 al에 저장함 * al에 0xff가 저장되어있다고 가정inc al : al에 1을 더한 후, 다시 al에 저장하면 al에는 0이 저장되고, 자리 올림이 발생했지만 CF가 설정되지 않음> CF와 OF의 차이를 이해하면 OF도 설정되지 않는다는 것을 알 수 있다 (부호 반전이 없기 때문에)  decdecoperand1deceaxeax에 -1을 해주는 코드 (eax--)operand1 -1operand1 : 레지스터 or 메모리CF를 설정하지 않음 Exampledec al : al에 1을 뺀 후 다시..
[Assembly] 데이터 이동
·
CS/Computer Architecture
movmovoperand 1operand 2moveax1eax 레지스터에 값 1을 넣는 코드operand2를 operand1로 이동한다operand1 : 레지스터 or 메모리 (상수는 불가능함)operand2 : 상수 or 레지스터 or 메모리두 피연산자의 크기가 일치해야함두 피연산자에 동시에 메모리가 올 수 없음메모리는 TYPE PTR [레지스터 or 상수]로 표기하는데, TYPE에는 BYTE(1), WORD(2), DWORD(4) QWORD(8)이 올 수 있다. *mov는 "값"과 연관이 있다고 생각하면 쉬워짐 Example mov rax, 0x1 : rax 레지스터에 0x1을 대입한다mov rax, rbx : rbx 레지스터의 값을 레지스터에 대입한다mov QWORD PTR [0x400000], r..
Static Link vs Dynamic Link
·
CS/Computer Architecture
Compile | 컴파일컴파일은 인간이 이해할 수 있는 언어로 작성된 소스코드를 CPU가 이해할 수 있는 언어로 변환하는 작업즉, 바이너리 형태로 변환하는 작업이다. (기계어)Pre-Processing : 전처리기 (Pre-processor)을 통해 소스 파일을 수정된 소스 파일 (전처리된 소스 파일)로 변환Compilation : 컴파일러 (Compiler)을 통해 수정된 소스 파일을 어셈블리 파일로 변환Assembly : 어셈블러 (Assembler)을 통해 어셈블리어 파일을 오브젝트 파일로 변환 - 오브젝트 파일부터 바이너리 형태Linking : 링커 (Linker)을 통해 오브젝트 파일들과 라이브러리, 헤더 파일들을 하나로 묶어 실행 파일로 변환이때 Linking 과정에서 Static Linkin..
함수의 프롤로그 & 에필로그
·
CS/Computer Architecture
.text:00401000 55 push ebp.text:00401001 8B EC mov ebp, esp.text:00401003 68 F8 20 40 00 push offset Buffer ; "Hello World :)".text:00401008 FF 15 B0 20 40 00 call ds:__imp__puts.text:0040100E 83 C4 04 add esp, 4.text:00401011 FF ..
Register
·
CS/Computer Architecture
General-Purpose register여러가지 목적이나 용도로 사용하는 레지스터프로그래머가 자유롭게 조작 할 수 있음일종의 변수라고 생각할 수 있음인텔의 공식 문서에 따르면 32비트의 시스템의 경우 8개가 존재인텔의 공식 문서에 따르면 64비트의 시스템의 경우 16개가 존재용도나 목적이 정해져있지 않음 (그렇지만 일반적으로 어떠할 때 사용한다는 것은 존재함)* RAX, RBX, RCX, RDX 2byte 중 상위 1byte에 접근할 수 있음더보기[ 범용 레지스터의 용도/목적 ] 실질적으로 정해져있는 것은 아니지만 주로 사용함EAX : 피연산자와 연산 결과의 저장소EBX : data segment 안의 데이터를 가리키는 포인터ECX : 문자열 처리나 루프를 위한 카운터EDX : I/O 포인터ESI :..
[Assembly] Intel vs AT&T
·
CS/Computer Architecture
어셈블리어 : 기계어와 일대일 대응되는 저급 언어IntelAT&Tmov eax, 1movl $1, %eaxlea ecx, [ebx+eax*2]leal (%ebx, %eax,2), %ecx같은 문법이 Intel과 AT&T인가에 따라 달라짐 더보기[ 어셈블리의 피연산자 ] 상수, 레지스터, 메모리 셋 중 하나이다 메모리에 접근하려면TYPE PTR [레지스터 or 상수] 형태이다 ex) QWORD PTR [rax+8]접미사mov eax, 1movl $1, %eax intel의 경우 단순 명령어만 적지만, AT&T의 경우 해당 명령어가 어떤 크기의 명령어인지 나타낸다예시를 보면, eax는 4바이트이므로 long이다. [b] byte : 1byte[w] word : 2byte[l] long(double word)..
Hardware Architecture - Single Processor
·
CS/Computer Architecture
Von Neumann Architecture 폰 노이만 구조거의 모든 컴퓨터의 기본이 되는 구조Idea연산제어저장세 가지의 핵심 기능이 필요함 연산 & 제어 → CPU저장 → memory장치 간 데이터 및 신호 교환 → bus CPU 중앙 처리 장치ALU (산술 논리 장치) : 산술 및 논리 연산을 실행함Control Unit : CPU를 제어하는 제어장치Register (레지스터) : CPU에 필요한 데이터를 저장함 - Program counter 등이 포함되어 있음등으로 이루어짐 Memory 기억장치주기억장치 (Ram) : 프로그램 실행과정에서 필요한 데이터들을 임시로 저장하기 위해 사용보조기억장치 (HDD, SSD) : 운영 체제, 프로그램 등과 같은 데이터를 장기간 보관하고자 할 때 사용 Bus ..