# assembly

26개의 포스트
post-thumbnail

기본 타입 변수의 Setter, Getter 는 Thread Safe 한가? (어셈블리어로 분석하기)

멀티쓰레드 환경에서 기본 타입 변수의 Setter, Getter 간에 Thread-Safe함을 보장하기 위한 동기화가 필요할까? 필요하지 않을까? 이에 대한 답을 위해 먼저 동시성 문제가 왜 일어나는지 정확히 그 원리를 이해해 보자.

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

MIPS Assembly

MIPS

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

[libasm] Assembly - 프로시저

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

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

[libasm] Assembly - 반복문

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

2021년 4월 13일
·
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

Assembly 001 | Virtual Machine Concept

각각 컴퓨터는 자신의 하드웨어에서 작동되는 고유의 기계 언어 (L0)을 가지고 있다사람친화적 언어는 기계 언어 위에 자리잡고 있다 (L1)Interpretation : L0 프로그램은 L1프로그램을 interpret해 실행함(=>ML이 파이썬 번역해 실행하는 것)Tra

2021년 4월 2일
·
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개의 댓글

extern과 include 그리고 static

현재파일이 아닌 외부파일에 위치한 변수를 사용할 수 있게 한다.assembler에 의해 선언된 외부변수에 .extern directive가 붙여지고, 이 외부변수가 정의된 파일에는 해당 변수에 .global directive가 붙여진다.assembly 과정을 거쳐 나온

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

WSL2(우분투) 환경에서 어셈블리로 Hello World 출력하기

Intel 문법으로 작성되어 있음리눅스 syscall table맥에서는 elf64 대신 macho64를 쓰자ld: warning: cannot find entry symbol \_start; 이런 오류메세지가 뜨는데 (떠도 컴파일은 됨!!!) 이는 \_main을 썼기

2021년 2월 27일
·
0개의 댓글

Libasm

이번 과제의 목표는 어셈블리어에 대해 이해하고, 몇가지 간단한 라이브러리들을 어셈블리어로 코딩하는 것이다.IntroductionAn assembly (or assembler) language, often abbreviated asm, is a low-level prog

2021년 2월 25일
·
0개의 댓글

42 Seoul: libasm: Introduction, 예시 연습

기계어와 일대일 대응이 되는 컴퓨터 프로그래밍의 저급 언어, 어셈블리어와 친해지기~

2021년 1월 11일
·
0개의 댓글