[Dreamhack] Quiz: x86 Assembly 2

Sisyphus·2022년 7월 17일
0

다음 어셈블리 코드를 실행했을 때 출력되는 결과로 올바른 것은?

[Code]
main:
    push rbp
    mov rbp, rsp
    mov esi, 0xf			; esi = 0xf
    mov rdi, 0x400500			; rdi = 0x400500
    call 0x400497 <write_n>		; call write_n
    mov eax, 0x0			; return 0
    pop rbp
    ret
    
write_n:
    push rbp
    mov rbp, rsp
    mov QWORD PTR [rbp-0x8],rdi		; rbp-0x8 = 0x400500
    mov DWORD PTR [rbp-0xc],esi		; rbp-0xc = 0xf
    xor rdx, rdx			; rdx = 0
    mov edx, DWORD PTR [rbp-0xc]	; edx = 0xf	→ count
    mov rsi,QWORD PTR [rbp-0x8]		; rsi = 0x400500 → buf
    mov rdi, 0x1			; rdi = 0x1	→ stdout
    mov rax, 0x1			; rax = 0x1	→ write
    syscall				; write(0x1, 0x400500, 0xf) → 0x400500부터 15Byte 표준 출력
    pop rbp
    ret
    
==================================    
[Memory]
0x400500 | 0x3037207964343372	// r34dy 70 (8 Byte)
0x400508 | 0x003f367562336420	//  d3bu6?  (8 Byte)


===================================
[Output]
r34dy 70 d3bu6?



x86 Assembly: Essential Part(2)

0개의 댓글