在Yasm中声明变量

时间:2018-02-13 04:13:31

标签: macos assembly x86-64 yasm

这是一个简单的程序:

%include 'utils/system.inc'

section .data
  first:  db 'First is bigger', 0xA,0
  second: db 'Second is bigger', 0xA,0
  a:      db 18
  b:      db 20
section .text
global start
start:
 mov rax, [a wrt rip]
 mov rbx, [b wrt rip]
 cmp rax, rbx
 jle else                        
 mov rsi, qword first
 mov rdx, 0x10
 jmp end
else:
 mov rsi, qword second
 mov rdx, 0x11
end:
 xor rax, rax
 xor rbx, rbx
 mov rax, 0x2000004
 mov rdi, stdout
 syscall

 xor rdi, rdi
 mov rax, 0x2000001
 syscall 

问题是变量a包含的值不同于18。 以下是lldb向我展示的内容:

  

(lldb)p a
   (void *)$ 0 = 0x0000000000001412
  (lldb)p b
  (void *)$ 1 = 0x0000000000000014
  (lldb)p - 格式小数a

任何想法发生了什么?我知道,如果我将a声明为dq,那就没问题,但我想了解它为什么会发生。

0 个答案:

没有答案