
총 19개
-
레지스터의 역할과 종류2025.01.031. 레지스터의 역할과 특징 레지스터는 메모리의 일종으로 컴퓨터의 중앙처리장치 내부에 있는 여러 개의 비트로 이루어진 고속 데이터 기억장치로써, 소량의 데이터를 저장함으로써 용량은 다른 장치에 비해 낮다. 중앙처리장치는 연산을 위해 메모리에 있는 데이터를 레지스터에 옮기고, 연산을 하는 중 결과 값을 레지스터에 임시 저장한다. 레지스터는 CPU와 직접 연결되어있어 연산 속도가 가장 빠르며, CPU는 자체적으로 데이터를 저장할 수 없기에 연산을 위해서는 반드시 레지스터를 이용해야 한다. 2. 레지스터의 종류 레지스터의 종류는 그 쓰임...2025.01.03
-
어셈블리어의 특징과 명령어 형식2025.01.031. 어셈블리어 어셈블리어는 컴퓨터 프로그래밍 언어의 한 종류로 저급언어에 속하는 언어입니다. 어셈블리어는 어셈블러라는 프로그램을 사용하기 위해서 쓰는 프로그램 언어로, 기계어와 거의 일대일로 이루어집니다. 어셈블리어는 하드웨어에 직접 접근해서 프로그램을 처리하며, 명령의 실행 속도가 가장 빠르지만 세밀하게 프로그래밍해야 한다는 단점이 있습니다. 하지만 하드웨어를 효율적으로 제어할 수 있기 때문에 많은 사람들이 이 언어를 배웁니다. 2. 어셈블리어 명령어 형식 어셈블리어의 명령어 형식은 다음과 같습니다. Label은 명령어나 데이터...2025.01.03
-
시스템프로그래밍 레지스터의 역할과 종류2025.05.091. 레지스터의 종류 레지스터에는 데이터 레지스터, 포인터 레지스터, 인덱스 레지스터, 플래그 레지스터, 세그먼트 레지스터 등이 있다. 데이터 레지스터는 일시적인 결과를 기록하고, 포인터 레지스터는 스택 포인터와 베이스 포인터로 구성되어 스택 조작에 사용된다. 인덱스 레지스터는 데이터의 주소를 저장하고, 플래그 레지스터는 연산 결과의 정보를 저장한다. 세그먼트 레지스터는 세그먼트의 시작 주소를 저장한다. 2. 논리주소와 물리 주소의 관계 8086에서 출력된 주소 데이터는 세그먼트 레지스터 값을 4비트 시프트 한 것에 오프셋 값을 가...2025.05.09
-
어셈블리언어(시스템프로그래밍) 과제-4 (고급 언어 구조와 정수 연산을 수행하는 프로그램)2025.05.111. 메모리 변수 사용 프로그램 메모리 변수를 사용하는 간단한 프로그램을 작성하여 Visual Studio 통합개발환경에서 어셈블러를 사용할 수 있는 프로젝트를 만들고 실행해보았습니다. 디버거 사용법도 연습하였습니다. 코드를 통해 변수 val1과 val2의 메모리 주소와 저장된 값을 확인할 수 있었고, 레지스터 eax에 두 값의 합이 저장된 것을 확인할 수 있었습니다. 2. if-else 구문 구현 if-else 구문을 구현하는 프로그램을 작성하였습니다. ecx와 edx 레지스터에 입력받은 값을 비교하여 조건부 점프를 통해 x 변수...2025.05.11
-
매크로 프로세서의 기능에 대한 조사2025.05.071. 매크로 정의와 확장 매크로 프로세서는 프로그래머가 코드를 작성할 때 작업을 단순화하고 코드의 재사용성을 높이는 도구로 사용됩니다. 매크로 프로세서는 프로그램에서 자주 사용되는 코드 조각이나 패턴을 단순한 키워드로 정의할 수 있게 해줍니다. 이렇게 정의된 키워드는 나중에 코드에서 사용될 때 자동으로 원래의 코드 조각이나 패턴으로 확장되어집니다. 이 과정은 매크로 확장이라고 합니다. 매크로 확장의 장점은 코드 중복의 최소화, 가독성 향상 등입니다. 2. 매개변수화된 매크로 매크로 프로세서는 매개변수화된 매크로를 지원하여, 프로그래...2025.05.07
-
시스템프로그래밍(명령어 실행 4단계 및 논리주소와 물리주소)2025.01.031. 명령어(instruction) 명령어(instruction)란 컴퓨터가 직접 실행할 수 있는 프로그램의 최소 단위를 의미합니다. 명령어는 프로세서가 외부적으로 작동하는 '판독'과 '기록' 사이클, 기억장치에서 읽은 프로그램 명령어를 '실행시키는 4단계'로 구분해서 이해할 수 있습니다. 2. 명령어 실행 4단계 명령어 실행은 '명령어 인출 → 명령어 해독 → 데이터 인출 → 명령어 실행'의 4단계로 진행되며, 각 단계별 내용이 자세히 설명되어 있습니다. 3. 물리 주소와 논리 주소 메모리의 구조는 크게 물리 주소와 논리 주소 두...2025.01.03
-
8086 어셈블리어의 명령어에 대한 조사2025.04.281. 컴퓨터의 구성 컴퓨터는 하드웨어와 소프트웨어로 구성되어 있으며, 하드웨어는 중앙처리장치, 기억장치, 입출력장치로, 소프트웨어는 시스템소프트웨어와 응용소프트웨어로 구성되어 있다. 컴퓨터는 데이터를 받아 제어장치와 연산장치를 통해 변환시킨 후 출력장치를 통해 출력하고, 출력 내용을 주기억장치에 저장하는 기능을 한다. 2. 컴퓨터 언어 시스템소프트웨어는 어셈블러, 매크로 프로세서, 링커, 로더, 트랜스레이터, 운영체제 등의 진화 과정을 거쳐왔으며, 어셈블리어는 기계어에 가장 가까운 저급 언어로서 기계어와 1대1 대응이 가능한 프로그...2025.04.28
-
시스템 프로그램 어택랩(attack lab) 과제 보고서2025.05.081. Phase_1 Phase_1에서는 getbuf 함수에 오버플로우가 일어날 값을 입력하고 touch1의 주소값을 입력하여 touch1이 실행되게 한다. asm.txt 파일을 확인하여 getbuf와 touch1의 어셈블리 코드를 찾아 필요한 값을 입력한다. 2. Phase_2 Phase_2에서는 touch2 함수를 실행하기 위해 rdi 레지스터에 cookie 값을 넣어주고 touch2 함수로 이동하는 코드를 삽입한다. 이를 위해 gdb를 실행하여 getbuf 직전의 rdi 값을 확인하고, buffer.s 파일을 작성하여 필요한 값...2025.05.08
-
어셈블러의 설계 알고리즘과 자료구조2025.05.131. 어셈블러의 설계 알고리즘 어셈블러는 두 개의 패스로 구성됩니다. 패스 1은 명령어 표를 참조하여 명령어들의 상대 주소를 결정하고, 기호표를 작성하여 기호의 재배치 여부를 결정하는 역할을 합니다. 패스 2는 명령어를 2진 코드로 대체하고 명령어의 기호를 기호표에 있는 값으로 대체하는 역할을 합니다. 2. 어셈블러의 자료구조 패스 1과 패스 2는 각각 다른 역할을 수행하므로 연관된 데이터베이스도 달라 각각의 자료구조를 갖습니다. 패스 1은 원시 프로그램, 명령어 및 지시어 표를 입력으로 받고 기호 표를 출력합니다. 패스 2는 패스...2025.05.13