post-thumbnail

[libasm] Assembly - 프로시저

어셈블리어 프로그램은 크기가 큰 경향이 있으므로 프로시저 또는 서브루틴은 어셈블리어에서 매우 중요하다. 프로시저는 이름으로 구분된다. 가장 먼저 프로시저 이름을 쓰고, 다음에 프로시저가 수행할 작업이 기술된 프로시저 바디를 작성한다. 마지막으로 return문으로 프로시

4일 전
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 반복문

JMP 명령어를 반복문 구현에 사용할 수 있다. 예를 들어, 다음 코드는 loop-body를 10번 실행할 수 있다.하지만, 프로세서 명령어 세트에 반복을 구현하는 loop 명령어가 포함되어 있다. 기본 loop 명령어의 구문은 다음과 같다.여기서, label은 JMP

5일 전
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 조건문

어셈블리어에서 조건부 실행은 여러개의 반복문과 분기 명령으로 구현한다. 이 명령어는 프로그램의 조작 흐름을 변경할 수 있다. 조건부 실행은 두 가지의 시나리오가 있다.조건 명령어에 대해 이야기하기 전에 CMP 명령어에 대해 먼저 이야기하자.CMP 명령어는 두 개의 피연

2021년 4월 10일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 논리 연산

프로세서 명령어 세트는 AND, OR, XOR, TEST, NOT 명령어를 제공한다. 이 명령어들은 프로그램의 필요에 따라 비트를 test, set, clear한다.명령어들은 다음과 같다.모든 경우의 첫 번째 피연산자는 레지스터나 메모리에 위치한다. 두 번째 피연산자는

2021년 4월 7일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 산술 연산

INC 명령어는 피연산자를 1만큼 증가시키는데 사용한다. 레지스터나 메모리에 위치한 단일 피연산자를 처리한다.구문INC 명령어의 구문은 다음과 같다.destination 피연산자는 8비트, 16비트, 32비트가 될 수 있다.예제DEC 명령어는 피연산자를 1만큼 감소시키

2021년 4월 3일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 상수

NASM에서 상수를 정의하는 몇가지의 지시어가 있다. 이미 EQU 지시어를 이전 장에서 사용했다. 다음 세 가지 지시어에 대해 다루어 볼 것이다.EQU%assign%defineEQU 지시어는 상수를 정의하는데 사용된다. EQU 지시어 구문은 다음과 같다.예를 들어,어셈

2021년 4월 1일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 변수

NASM은 변수 저장 공간을 할당을 위한 다양한 define directive(지시어)를 제공한다. define directive(지시어)는 저장 공간의 할당을 위해 사용된다. 하나 또는 그 이상의 바이트를 초기화하는데 사용된다.초기화 된 데이터를 저장 공간에 할당하는

2021년 3월 31일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 주소 지정 모드(Addressing Modes)

대부분의 어셈블리어 명령어는 처리할 피연산자가 필요하다. 피연산자 주소는 처리할 데이터가 저장된 위치를 제공한다. 일부 명령어는 피연산자가 필요 없지만, 다른 일부 명령어들은 한 개, 두 개, 또는 세 개의 피연산자가 필요하다.명령어가 두 개의 피연산자가 필요한 경우,

2021년 3월 31일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 시스템 콜

시스템 콜은 사용자와 커널 사이의 인터페이스를 위한 API이다. 우리는 이미 시스템 콜을 사용했다. 스크린에 출력하는 sys_write과 프로그램에서 탈출하는 sys_exit가 시스템 콜이다.macOS의 시스템 콜 번호는 리눅스에서 사용하는 시스템 콜 번호와 다르다.(

2021년 3월 29일
·
1개의 댓글
post-thumbnail

[libasm] Assembly - 레지스터

프로세서 동작은 대부분 데이터 처리와 관련이 있다. 이 데이터는 메모리에 저장되고 메모리에서 불러올 수 있다. 하지만, 메모리에서 데이터를 읽고 저장하는 것은 데이터 요청을 컨트롤 버스와 메모리 스토리지 유닛으로 보내고 다시 같은 채널을 통해 데이터를 받는 복잡한 처리

2021년 3월 28일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 메모리 세그먼트

어셈블리 프로그램의 세 가지 섹션에 대해 배웠다. 이 섹션들은 다양한 메모리 세그먼트들을 표현한다.흥미롭게도, section 키워드를 segment로 바꾸어도 동일한 결과를 얻을 수 있다.구분된 메모리 모델은 시스템 메모리를 독립된 세그먼트의 그룹으로 나눈다. 이 독립

2021년 3월 28일
·
0개의 댓글
post-thumbnail

[libasm] Assembly - 기본구문

data 섹션은 초기화된 데이터나 상수를 선언하는데 사용된다. 이 데이터들은 프로그램이 실행되는 동안 변경되지 않는다. data 섹션에서 상수, 파일이름, 버퍼 사이즈 등을 선언할 수 있다.data 섹션을 선언하는 구문은 다음과 같다.bss 섹션은 변수를 선언하는데 사

2021년 3월 28일
·
0개의 댓글

STL 구조

STL은 다음 여섯 가지의 주요 구성 요소로 이루어짐 \- 컨테이너, 알고리즘, 반복자가 가장 중요한 세 요소 \- 함수 객체는 알고리즘의 활용성을 높이는 역할을 함. \- 어뎁터는 다른 요소들을 약간만 수정하여 형태를 변형한다. \- 할당기는 컨

2021년 3월 14일
·
0개의 댓글

STL 소개

STL 소개일반화 프로그래밍프로그램은 자료구조와 알고리즘으로 구성자료구조는 처리하고자 하는 데이터를 표현하는 방법알고리즘은 이 자료들을 가공하여 유용한 정보를 생산하는 기법좋은 프로그램을 만들기 위해서는 자료구조와 알고리즘 모두 필요프로그램의 상황에 따라 사용하는 자료

2021년 3월 13일
·
0개의 댓글
post-thumbnail

[Ray Tracing in One Weekend 번역] 11. Positionable Camera

유전체와 마찬가지로 카메라는 디버깅하기가 어렵습니다. 그래서 저는 항상 점진적으로 코드를 작성합니다. 첫 번째, 조절할 수 있는 시야(field of view : fov)를 적용합니다. fov는 문을 통해 보는 각도입니다. 우리가 다루는 이미지는 정사각형이 아니기 때문

2020년 12월 1일
·
0개의 댓글
post-thumbnail

[miniRT] 4. 광선 구조체 만들기

레이 트레이싱을 구현하기 위해서는 광선을 쏘아 픽셀에 어떤 색이 보이는지 계산하기 위한 광선 구조체가 필요합니다. 광선은 P(t) = A + tb 로 나타낼 수 있습니다. A는 광선의 원점이고 b는 광선의 방향입니다. t는 실수입니다. t값을 변경하면 광선 상의 어떠한

2020년 11월 28일
·
0개의 댓글
post-thumbnail

[miniRT] 3. 벡터 구조체 만들기

그래픽 연산을 하기 위해 필요한 벡터 구조체와 벡터 함수들을 만들겠습니다. 이 벡터 구조체로 색상, 위치, 방향 등등의 많은 것들을 표현할 수 있습니다.먼저 벡터 구조체와 함수의 선언을 vec3.h 헤더 파일에 작성합니다.벡터 구조체벡터 사칙연산 함수벡터 내적, 외적

2020년 11월 26일
·
0개의 댓글
post-thumbnail

[miniRT] 2. 키보드 입력으로 도형 움직이기

키보드 입력으로 위에서 생성한 삼각형을 움직여보도록 하겠습니다.miniLibX에서 키보드, 마우스 등으로부터 입력을 받기 위해서 이벤트 개념을 알아야 합니다. 이벤트는 프로그램에 의해 감지되고 처리될 수 있는 동작이나 사건을 말합니다(위키백과). miniLibX는 이벤

2020년 11월 23일
·
0개의 댓글
post-thumbnail

[miniRT] 1. miniLibX로 윈도우 생성과 간단한 도형 그리기

miniRT/cub3d 프로젝트는 miniLibX 그래픽 라이브러리를 사용하여 구현합니다.그러므로 먼저 miniLibX로 윈도우를 생성하고 간단한 도형을 그려보겠습니다.1\. 그래픽 시스템 연결우선, 작성한 프로그램과 디스플레이 사이의 연결을 초기화하기 위해서 mlx_

2020년 11월 19일
·
0개의 댓글
post-thumbnail

[번역글] 코딩공부 쉽다는 말은 그만하세요.

나는 Apple WWDC 키노트가 끝난 후에 이 트윗을 보고 같은 생각을 했어. 잠깐, 프로그래밍은 어려워. 물론 보람 있고, 완전 재밌지. 하지만 "쉽다"라는 말은 사람들을 실패하게 하고 평생 자기 의심을 하게 만들어.

2020년 11월 15일
·
0개의 댓글