assembly
-
Arithmetic for Computer대학/컴퓨터구조 2023. 4. 25. 23:49
Overflow (Underflow) overflow 현상은 다음과 같은 상황에 발생한다. $$ ve + ve $$ $$ -ve + (-ve) $$ $$ ve - (-ve) $$ $$ -ve - ve $$ overflow가 발생하지 않도록 연산에 유의하거나, 발생했을 때 별도의 처리를 해 줘야 한다. 이미지, 영상 처리과 같은 곳에서는 Satrating operations 과정을 거치는데, 간단하게 말하면, overflow가 발생한 경우, 표현 가능한 최대의 숫자로 값을 바꾸는 것을 의미한다. Multiplication (H/W) 하드웨어 레벨에서의 곱셈을 하는 방식은 위 그림과 같다. 1001 * 1001 의 연산을 예로 들어보자. multiplier의 가장 낮은 bit가 1인 경우, product r..
-
MIPS Instruction set대학/컴퓨터구조 2023. 4. 25. 18:50
Registers 레지스터 사용처 $a0 ~ $a3 argument값을 저장할 때 사용 $v0, $v1 return값을 저장할 때 사용 (long 타입의 경우 두 레지스터를 사용하기 위함) $t0 ~ $t9 임시로 값을 저장할 때 사용 $s0 ~ $s7 사용빈도가 높은 값을 저장할 때 사용 $gp global pointer (for stack data) $sp stack pointer $fp frame pointer $ra return address $zero 0 상수값을 갖고있음. 덮어쓰기 불가 Instructions 명령어 읽기 기능 add A, B, C add A = B + C addi A, B, c add immediate A = B + c // c는 상수. (subi는 없고 대신 음수 상수를 이..
-
Assembly대학/시스템소프트웨어 2022. 12. 12. 22:38
레지스터와 명령어에 대해 살펴보자. (x86 아키텍쳐의 GAS/GNU format에 대해 다룹니다) - Register 레지스터 설명 %eax 데이터를 저장 %edx 데이터를 저장 %ecx 데이터를 저장 %ebx 데이터를 저장 %esi ? %edi ? %esp stack의 top. 즉 stack frame의 끝을 가리킴 %ebp stack frame의 시작을 가리킴 %eip program counter. 현재 실행중인 라인을 가리킴 레지스터 안에는 기본적으로 메모리의 주소가 저장되어 있다. (e.g. %eax = 0x8048b90) (%eax)와 같이 레지스터에 괄호를 치는 경우에는 레지스터가 가리키는 메모리주소에 담긴 값을 가리킨다. (e.g. (%eax) = 100 ) 상수는 $표시를 앞에 붙여 사용..