x86 어셈블리 언어 프로그래밍 핵심 가이드
컴퓨터 하드웨어와 기본 구조
컴퓨터는 중앙처리장치(CPU), 메모리, 버스 시스템으로 구성됩니다. 모든 명령어와 데이터는 메모리나 저장장치에 이진수 형태로 저장됩니다. 8086 프로세서는 20비트 주소버스를 통해 1MB(2^20)의 메모리 공간에 접근할 수 있습니다.
저장장치 주소 체계
메모리는 일련의 저장 단위로 구성되며, 각 단위는 고유한 물리적 주소를 가집니다. ...
9월 25일 18:03에 게시됨
어셈블리어 기초: 소스 프로그램부터 실행까지
이 문서는 어셈블리어 기초 개념을 설명하며, 소스 코드 작성부터 실행 가능한 프로그램으로 변환되는 과정을 다룹니다.
소스에서 실행 파일까지의 과정
어셈블리 프로그램 개발 과정은 다음 단계로 구성됩니다:
어셈블리 소스 코드 작성
컴파일러를 사용한 컴파일 및 링크
생성된 실행 파일 실행
실행 파일은 프로그램 코드와 데이터, 그리고 관련 설명 정보(프로그램 ...
9월 3일 21:05에 게시됨
ARM 및 X86 아키텍처 클라우드 서버 CPU 연산 성능 비교
서론
최근 클라우드 컴퓨팅 시장에서 ARM 아키텍처 기반의 서버 도입이 활발해지고 있습니다. 전통적인 X86 아키텍처와 새로운 대안으로 떠오르는 ARM 간의 성능 차이에 대해 궁금해하는 사용자가 많습니다. 본 아티클에서는 동일한 사양의 X86 및 ARM 클라우드 서버를 대상으로 정수 연산과 부동 소수점 연산 성능을 직접 비교 분석합니다.
테스트 도구 설치
1. Sysbenc ...
8월 5일 16:34에 게시됨
기계어 수준에서 조건문 처리 방식
컴퓨터 프로그램에서 조건문은 프로그램의 흐름을 제어하는 데 필수적인 요소입니다. 이러한 조건문이 기계어 수준에서는 어떻게 구현되는지 살펴보겠습니다.
무조건 분기: jmp 명령어
jmp 명령어는 프로그램의 실행 흐름을 지정된 위치로 강제로 이동시키는 데 사용됩니다. 이 명령어는 다음과 같은 형태로 사용될 수 있습니다:
jmp <주소>: 프로그램 카운터( ...
7월 27일 13:51에 게시됨
Buuctf - findKey
Reverse Engineering을 통해 키를 찾는 방법
LRESULT __stdcallWndProc(HWND hWndParent, UINT Msg, WPARAM wParam, LPARAM lParam)
{
// 각종 변수와 버퍼 선언
HDC hdc;
struct tagPAINTSTRUCT Paint;
CHAR Buffer[100];
struct tagRECT Rect;
// 문자열 로드
LoadStringA(hInstance, 0x6Au, Buffer, 100);
if (Msg > 273) {
if (Msg == 517) { ...
7월 15일 03:36에 게시됨
x86 부팅 섹터 내 512바이트 C 컴파일러: SectorC 심층 분석
x86 부팅 섹터 내 512바이트 C 컴파일러: SectorC 심층 분석
SectorC는 단지 512바이트 크기로 x86 기계의 부팅 섹터에서 실행 가능한 독특한 C 컴파일러입니다. 이 컴파일러는 제한된 공간에도 불구하고 실질적이고 흥미로운 프로그램을 작성할 수 있는 C 언어의 부분 집합을 지원합니다.
놀라운 크기와 성능
컴퓨터 과학에서는 작은 크기가 종종 제약을 의미하지만, Sect ...
6월 15일 18:08에 게시됨