티스토리 뷰

안녕하세요, 감자코딩에 감자개발자입니다. 제가 학교에 다니면서 어셈블리어 중간고사 정리 1탄을 준비했습니다. 




어셈블리어 

이진수 일경우 맨앞이0인지 1인지 확인하고 

1. 기본값앞이 1일경우에는 빼주고 reverse 해주면 된다.

예) 1101 0111 (맨앞 1 음수)

1101 0110

0010 1001 = > -41

2. 십진수가 음수일경우 맨앞이 0일때  reverse + 1 

예) -27

0001 1011(맨앞 0 양수)

1110 0100   1+

1110 0101   reverse


- or 게이트는 x,y둘중하나만 참이여도 T 나머지 F

and 게이트는 x,y 둘다 참이여야 T 나머지 F


레지스터는 임시 저장소다

SRAM(Static) 속도가 더 빠르다.

제어 장치(Control unit : CU) 는 기계 명령어를 실행하는데 수반되는 단계들의 순서를 조정 한다.

산술 논리장치(arithmetic logic unit : ALU)는 덧셈,뺄셈과 AND,OR,NOR 과 같은 논리 연산 수행


명령어 사이클 순서

Fetch(인출) 명령어가 올라간다 -> Decode 해독 -> Execution(실행) -> Store(저장)



범용 레지스터 종류 : EAX,ECX,ESI,EDI 가장 많이 쓰임 그외 EBX,EDX 가 있음


- 클럭

각 동작들 내부 클럭에 동기화 ( 클럭 CPU,시스템 버스)

- 기계 명령어(기계 사이클) 클럭 사이클 길이 = 하나의 완전한 클럭 펄스에 대해 걸리는 시간


- 클럭 사이클의 주기는 1/f

기계어 명령어 수행하는데 적어도 한 클럭 사이클 필요



- 캐시 

SRAM

빠른 IO : DRAM < SRAM < Register < CPU

일반 메모리 보다 비쌈

- 데이터를 두번쨰로 읽을 필요가 있다면 캐시에 있는 데이터를 찾음

캐시 적중, 캐시 미스


-Localty

temporary localty : 특정시간에 접근이 많음

special localty: 특정위치에 위치함


- 멀티 태스킹 OS

동시에 여러 작업 가능

한개의 프로세스에 여러개의 쓰레드 실행 가능 

프로그램 VS 프로세스

프로세스 vs 쓰레드

프로그램의 실행 이미지라는 점은 동일

프로세스는 자신의 메모리 영역을 가진다. 여러개의 쓰레드 포함 가능

쓰레드는 같은 프로세스에 속한 다른 쓰레드와 메모리를 공유


CPU는 스케쥴러 라는 것으로 멀티태스킹을 한다.


컨텍스트 스위칭

스케쥴러는 신속하게 테스크를 전환하여 프로세스들이 동시에 실행하고 있는것처럼 보이게 함


Quiz: 각 테스크 수행에 100ms가 소요되는 9개의 테스크가 있다. 컨텍스트 스위칭에 8ms가 소요된다고 하면, 태스크 목록을 한바퀴 도는데에 걸리는 시간은? 9 * 8ms = 72 ms  + 100 ms  정답 : 172 ms


레지스터 (register)

극히 소량의 데이터나 처리중인 중간 결과를 일시적으로 기억해 두는 고속의 전용 영역을 레지스터라고 한다. 


한 단어 또는 여러 단어, 때로는 수의 자릿수의 정보를 기억하는 장치이며 특정 목적에 사용되고, 수시로 그 내용을 이용할 수 있도록 되어 있다.


컴퓨터의 주기억 장치는 데이터와 명령을 기억하고 있을 뿐이다. 그래서 산술 연산, 논리 연산, 전송 조작을 행할 때 데이터나 명령을 일시적으로 기억해둘 장소가 필요하게 되고, 용도에 따라서 여러 가지 레지스터가 있다. 


레지스트리하고는 다른건가? 윈도우 레지스트리(Windows Registry)는 마이크로소프트 윈도우 32/64비트 버전과 윈도우 모바일 운영 체제의 설정과 선택 항목을 담고 있는 데이터베이스로, 모든 하드웨어, 운영 체제 소프트웨어, 대부분의 비운영 체제 소프트웨어, 사용자 PC 선호도 등에 대한 정보와 설정이 들어 있다. 사용자가 제어판 설정, 파일 연결, 시스템 정책, 또는 설치된 소프트웨어를 변경하면, 이에 따른 변경 사항들이 레지스트리에 반영되어 저장된다. 레지스트리는 또한 성능 카운터와 현재 사용하고 있는 하드웨어와 같은 런타임 정보를 노출하면서 윈도우를 커널의 운영 체제 안에 제공


- 범용 레지


범용 레지스터는 8비트, 하위16비트, 전체32비트를 지칭하는 이름이 있음

EAX, EBX, ECX, EDX 레지스터에 해당


AH | AL ( 8 bit + 8bit)

AX  ( AX )

EAX ( 32 bit)


EAX – 곱셈과 나눗셈 명령어에서 자동으로 사용(accumulator)

ECX – 루프 카운터

ESP – 스택 포인터

ESI, EDI – 인덱스 레지스터, (extended source/destination index)

EBP – 프레임 포인터 (스택에서 사용)


세그먼트 레지스터

CS – 코드 세그먼트

DS – 데이터 세그먼트

SS – 스택 세그먼트

ES, FS, GS – 추가 세그먼트

EIP – 명령어 포인터 레지스터

EFLAGS

CPU의 동작을 제어하거나 CPU연산의 결과를 반영

상태 플래그

각 상태 플래그는 한 개의 비트로 표현


플래그 종류

캐리 플래그(CF: carry flag)

부호 없는 산술 연산의 결과가 너무 커서 목적지에 저장할 수 없을 때 1로 설정


오버플로우 플래그(OF: overflow flag)

부호 있는 산술 연산의 결과가 너무 크거나 작아서 목적지에 저장할 수 없을 때 1로 설정


부호 플래그 (SF: sign flag)

산술 논리 연산의 결과가 음수일 때 1로 설정


제로 플래그 (ZF: zero flag)

산술 논리 연산의 결과가 0일 때 1로 설정


패리티 플래그 (PF: parity flag)

결과의 하위 바이트가 짝수개의 1인 비트들을 포함하면 1로 설정


CISC – complex instruction set computer

큰 명령어 집합

복잡한 명령어 제공 

컴파일된 프로그램이 비교적 적은 수의 명령어를 갖도록 함

마이크로코드(microcode) 해독기(interpreter)

예) 

인텔 80x86 계열


RISC – reduced instruction set computer

쉽고 간단한 명령어만 존재

작은 명령어 집합

하드웨어에 의해 직접적으로 실행됨(마이크로코드 해독기 필요 없음)

예) 

ARM (Advanced RISC Machines)

DEC Alpha (Compaq)









 



'Assembly Language' 카테고리의 다른 글

어셈블리어 구구단 구현  (0) 2017.10.26
어셈블리어 중간고사 정리 2  (0) 2017.10.26
[Assembly] 수업 정리 1  (0) 2017.10.08
[Assembly] 어셈블리어의 기초  (0) 2017.10.02
어셈블리어 수업 정리 1  (0) 2017.09.17
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2025/02   »
1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28
글 보관함