Quiz: x86 Assembly 2
문제: 다음 어셈블리 코드를 실행했을 때 출력되는 결과로 올바른 것은? [Code] main: push rbp mov rbp, rsp mov esi, 0xf mov rdi, 0x400500 call 0x400497 mov eax, 0x0 pop rbp ret write_n: push rbp mov rbp, rsp mov QWORD PTR [rbp-0x8],rdi mov DWORD PTR [rbp-0xc],esi xor rdx, rdx mov edx, DWORD PTR [rbp-0xc] mov rsi,QWORD PTR [rbp-0x8] mov rdi, 0x1 mov rax, 0x1 syscall pop rbp ret ================================== [Memory] 0x4005..
Background: x86 Assembly Essential Part(1) 어셈블리 명령어
어셈블리어 기본 구조 어셈블리어는 명령어와 피연산자로 이루어져 있다. 주로 어셈블리어의 형식은 [명령어] [피연산자]이다. 주요 명령어는 다음과 같다 데이터 이동(Data Transfer) mov, lea 산술 연산(Arithmetic) inc, dec, add, sub 논리 연산(Logical) and, or, xor, not 비교(Comparison) cmp, test 분기(Branch) jmp, je, jg 스택(Stack) push, pop 프로시져(Procedure) call, ret, leave 시스템 콜(System call) syscall 피연산자에는 상수, 레지스터, 또는 메모리가 올 수 있다. 메모리 피연산자는 []로 둘러싸인 것으로 표현되며, "TYPE" PTR [주소] 와 같이 표현..