
총 19개
-
어셈블리언어(시스템프로그래밍) 과제-4 (고급 언어 구조와 정수 연산을 수행하는 프로그램)2025.05.111. 메모리 변수 사용 프로그램 메모리 변수를 사용하는 간단한 프로그램을 작성하여 Visual Studio 통합개발환경에서 어셈블러를 사용할 수 있는 프로젝트를 만들고 실행해보았습니다. 디버거 사용법도 연습하였습니다. 코드를 통해 변수 val1과 val2의 메모리 주소와 저장된 값을 확인할 수 있었고, 레지스터 eax에 두 값의 합이 저장된 것을 확인할 수 있었습니다. 2. if-else 구문 구현 if-else 구문을 구현하는 프로그램을 작성하였습니다. ecx와 edx 레지스터에 입력받은 값을 비교하여 조건부 점프를 통해 x 변수...2025.05.11
-
쓰레드 구현 모델과 쓰레드 폴링에 대해 조사하시오2025.05.151. 쓰레드 구현 모델 쓰레드 구현 모델은 운영체제에서 사용되는 것으로 사용자 수준, 커널 수준, 두 수준을 혼합한 방식이 있다. 사용자 수준 쓰레드는 커널 쓰레드를 지원하지 않는 운영체제에서 사용되며 다대일 쓰레드 매핑이다. 커널 수준 쓰레드는 사용자 수준 쓰레드가 가지는 한계를 해결하기 위해서 사용되기 시작했으며 일대일 쓰레드 매핑을 지원한다. 혼합형 쓰레드는 여러 개의 사용자 수준 쓰레드에 여러 개의 커널 쓰레드가 매핑되는 다대다 쓰레드 모델이다. 2. 쓰레드 폴링 쓰레드 폴링은 혼합형 쓰레드에서 사용되며 과부하를 줄여 프로그...2025.05.15
-
매크로 프로세서의 기능에 대한 조사2025.05.071. 매크로 정의와 확장 매크로 프로세서는 프로그래머가 코드를 작성할 때 작업을 단순화하고 코드의 재사용성을 높이는 도구로 사용됩니다. 매크로 프로세서는 프로그램에서 자주 사용되는 코드 조각이나 패턴을 단순한 키워드로 정의할 수 있게 해줍니다. 이렇게 정의된 키워드는 나중에 코드에서 사용될 때 자동으로 원래의 코드 조각이나 패턴으로 확장되어집니다. 이 과정은 매크로 확장이라고 합니다. 매크로 확장의 장점은 코드 중복의 최소화, 가독성 향상 등입니다. 2. 매개변수화된 매크로 매크로 프로세서는 매개변수화된 매크로를 지원하여, 프로그래...2025.05.07
-
[A+레포트] 어셈블리어의 특징과 명령어 형식을 설명하시오.2025.01.131. 어셈블리어의 개념 및 특징 어셈블리어는 컴퓨터 아키텍처에 밀접하게 연관된 저수준 프로그래밍 언어입니다. 이는 기계어 코드에 대응하는 기호적인 명령어를 사용하여 프로그래밍을 수행합니다. 어셈블리어의 가장 큰 특징은 기계어와의 1:1 대응 관계에 있습니다. 이로 인해 프로그래머는 컴퓨터의 작동 원리와 메모리 구조를 정확히 이해하고, 이를 바탕으로 최적화된 코드를 작성할 수 있습니다. 그러나 어셈블리어의 사용은 코드의 가독성이 낮고, 작성 및 유지 보수가 어렵다는 단점이 있습니다. 2. 어셈블리어의 명령어 형식과 구조 어셈블리어의 ...2025.01.13
-
이중 패스 어셈블러의 알고리즘에 대하여 정리해 보세요2025.01.181. 이중 패스 어셈블러 이중 패스 어셈블러는 소스 코드를 두 번 스캔하여 어셈블리 과정을 수행합니다. 첫 번째 패스에서는 레이블 정의를 찾아 기호 테이블에 추가하고, 두 번째 패스에서는 기호 테이블을 참조하여 실제 기계 코드로 변환합니다. 이를 통해 데이터 기호의 순방향 참조 문제를 해결할 수 있습니다. 2. 원 패스 어셈블러와의 비교 원 패스 어셈블러는 소스 코드를 한 번만 스캔하여 즉시 기계 코드를 생성하지만, 데이터 기호의 순방향 참조 문제를 해결하기 어렵습니다. 이에 비해 이중 패스 어셈블러는 두 번의 스캔을 통해 이 문제...2025.01.18
-
시스템 프로그램 어택랩(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
-
8086 어셈블리어의 명령어에 대한 조사2025.04.281. 컴퓨터의 구성 컴퓨터는 하드웨어와 소프트웨어로 구성되어 있으며, 하드웨어는 중앙처리장치, 기억장치, 입출력장치로, 소프트웨어는 시스템소프트웨어와 응용소프트웨어로 구성되어 있다. 컴퓨터는 데이터를 받아 제어장치와 연산장치를 통해 변환시킨 후 출력장치를 통해 출력하고, 출력 내용을 주기억장치에 저장하는 기능을 한다. 2. 컴퓨터 언어 시스템소프트웨어는 어셈블러, 매크로 프로세서, 링커, 로더, 트랜스레이터, 운영체제 등의 진화 과정을 거쳐왔으며, 어셈블리어는 기계어에 가장 가까운 저급 언어로서 기계어와 1대1 대응이 가능한 프로그...2025.04.28
-
시스템프로그래밍 레지스터의 역할과 종류2025.05.091. 레지스터의 종류 레지스터에는 데이터 레지스터, 포인터 레지스터, 인덱스 레지스터, 플래그 레지스터, 세그먼트 레지스터 등이 있다. 데이터 레지스터는 일시적인 결과를 기록하고, 포인터 레지스터는 스택 포인터와 베이스 포인터로 구성되어 스택 조작에 사용된다. 인덱스 레지스터는 데이터의 주소를 저장하고, 플래그 레지스터는 연산 결과의 정보를 저장한다. 세그먼트 레지스터는 세그먼트의 시작 주소를 저장한다. 2. 논리주소와 물리 주소의 관계 8086에서 출력된 주소 데이터는 세그먼트 레지스터 값을 4비트 시프트 한 것에 오프셋 값을 가...2025.05.09
-
[A+ 레포트] 시스템프로그래밍 - 레지스터의 역할과 종류를 설명하시오.2025.01.141. 레지스터의 역할 컴퓨터 시스템 내에서 레지스터는 중앙 처리 장치(CPU)의 핵심적인 부분이다. 이는 데이터를 일시적으로 저장하는 작은 저장 공간으로, 컴퓨터의 성능과 직접적인 관련이 있다. 레지스터는 CPU가 처리할 데이터를 임시로 보관하거나, 명령 실행에 필요한 정보를 저장하는 등 다양한 역할을 수행한다. 이러한 레지스터의 특성과 역할을 이해하는 것은 시스템 프로그래밍을 공부하는 학생들에게 있어 매우 중요하다. 왜냐하면, 레지스터의 효율적인 사용은 프로그램의 실행 속도와 시스템의 전반적인 성능에 영향을 미치기 때문이다. 2....2025.01.14
-
네트워크 프로그래밍_파일전송 프로그램 작성하기2025.01.131. 네트워크 프로그래밍 이 프레젠테이션은 네트워크 프로그래밍에 대한 내용을 다루고 있습니다. 클라이언트-서버 모델을 사용하여 파일 전송 프로그램을 작성하는 방법을 설명하고 있습니다. 클라이언트 코드에서는 서버에 연결하고 파일을 전송하는 과정을 보여주며, 서버 코드에서는 클라이언트의 연결을 받아 파일을 저장하는 과정을 보여줍니다. 이를 통해 네트워크 프로그래밍의 기본적인 개념과 구현 방법을 이해할 수 있습니다. 2. 파일 전송 이 프레젠테이션에서는 클라이언트에서 서버로 파일을 전송하는 방법을 다루고 있습니다. 클라이언트 코드에서는 ...2025.01.13