함수 호출 규약 _ 기본적인 함수 호출 + 간단한 스택 사용어셈블리에서의 기본적인 함수 호출 규약 예제 Caller Function int main(int argc, char* argv[]) { sum(1, 2); return 0; } .text:080483F8 public main .text:080483F8 main proc near .text:080483F8 .text:080483F8 argc = dword ptr 8 .text:080483F8 argv = dword ptr 0Ch .text:080483F8 envp = dword ptr 10h .text:080483F8 .text:080483F8 000 push ebp .text:080483F9 004 mov ebp, esp .text:080483F..
** 번역한 내용이 대부분임. 문서 하단에 출처 참조함. 명령어 - 데이터 이동 / 산술 및 논리 연산기계어는 주로 3가지 목표를 가진다. 1. 데이터 이동 / 2. 알고리즘, 로직 / 3. 프로그램 흐름 제어여기에서는, x86 시스템에서의 중요한 명령어를 예시를 들어 설명합니다.단, 여기서 나타내는 예제들은 완전한 x86 명령어들은 아니지만, 보편적으로 유용한 부분을 가지고 있습니다. 완벽한 예제들을 보려면, Intel에서 제공하는 명령어 예제들을 참고하면 됩니다. # 기호 표시 Any 32-bit register (EAX, EBX, ECX, EDX, ESI, EDI, ESP, or EBP)Any 16-bit register (AX, BX, CX, or DX)Any 8-bit register (AH, ..
1. 바이트 순서 _ Little Endian 과 Big Endian 엔디안이란? (일부 출처)컴퓨터의 메모리와 같은 1차워느이 공간에 여러 개의 연속된 대상을 배열하는 방법. 이 때,바이트를 배열하는 방법을 바이트 순서(Byte order)라 한다. 빅 엔디안은 최상위 바이트(MSB - Most Signficant Byte) 부터 차례로 저장하며,리틀 엔디안은 최 하위 바이트(LSB - Last Significant Byte) 부터 차례로 저장한다. 예를 들어, 메모리에 데이터를 저장한다고 가정해 보자. Double Word (4바이트) 형식의 데이터 0x 12 34 56 78을 메모리 주소 0x 00 00 01 00 에 넣는다.이 때, Big endian 과 Little endian의 데이터를 넣는 ..