728x90

CS 6

x86-64

General Purpose Register rax (accumulator register) 함수의 반환 값 rbx (base register) x64에서는 주된 용도 없음 rcx (counter register) 반복문의 반복 횟수, 각종 연산의 시행 횟수 rdx (data register) x64에서는 주된 용도 없음 rsi (source index) 데이터 원본 포인터 rdi (destination index) 데이터 목적지 포인터 rsp (stack pointer) 스택 포인터 rbp (stack base pointer) 스택 바닥 포인터 rip : Instruction Pointer Flag Register CF(Carry Flag) ZF(Zero Flag) SF(Sign Flag) OF(Ove..

CS/Etc. 2023.09.20

[논리 회로] 게이트 레벨 최소화

개요 회로에서 같은 동작을 한다면, 가급적 회로를 최소화 시켜 해야한다. (복잡성, 가격 등의 이유) K-Map True Table을 그림의 형태로 재구성하여 나타낸 표이다. 네모 칸들로 구성된 다이어그램이며, 각 칸은 최소화하고자 하는 함수의 하나의 최소항(minterm)을 나타낸다. K-Map을 활용하면 훨씬 직관적으로 계산 가능하다. 인접한 칸을 묶어서 간략화하는데, 2의 거듭제곱의 개수로 묶어야 한다. 양 끝 면은 서로 인접한 것으로 간주하고 묶어서 간략화할 수 있다. 주항(Prime Implicants) 주항은 Map에서 인접한 칸을 최대로 많이 묶을 때 생기는 곱의 항을 의미한다. 어떤 칸에 있는 항이 단 하나의 주항에 의해서만 커버된다면, 이 주항을 필수 주항(Essential PI)이라고한..

CS/논리 회로 2023.03.25

[리팩토링] Guard Clause

개요 Rider 사용하며 종종 if~else문 관련하여 리팩토링을 해주는 경우가 있었다. 최근 이 기법의 이름이 있었다는 사실을 알게되었는데,, 이름하여 "Guard Clause(가드 절)" 본문 if(!isDead) { Look(); if(!isJumping) { Move(); } } 위와 같이 중첩 조건문으로 이루어진 코드가 있을 수 있다. 이런 식으로 작성하다 보면 들여 쓰기의 많아지고 깊이가 깊어져 가독성이 떨어질 수밖에 없다. 여기에 else문까지 추가된다면 사이를 건너 뛰며 읽어야 하는 노력까지 더해진다. 이럴 때 필요한게 바로 Guard Clause이다. if(isDead) return; Look(); if(isJumping) return; Move(); 조건을 반대로 생각해서 반환을 해주는..

CS/리팩토링 2023.01.26