Assembly 装配臂cmp操作员

Assembly 装配臂cmp操作员,assembly,arm,Assembly,Arm,我四处搜索,没有找到答案,我用cmp来比较两个值,我知道它们应该是相同的,因为当我打印它们时,它们看起来是相同的。然而,由于某种原因,程序集并不认为它们是相同的。我对汇编非常陌生,我能弄清楚的是它可能与我正在使用的寄存器有关 ldr x19, [x0, x_offset] ldr x21, [x1, x_offset] cmp x19,x21 b.ne returnResult 在上面的代码中,它将始终取断点。我知道x19=x21,因为我打印了这些值。也许是在查地址 fmtTest:.st

我四处搜索,没有找到答案,我用cmp来比较两个值,我知道它们应该是相同的,因为当我打印它们时,它们看起来是相同的。然而,由于某种原因,程序集并不认为它们是相同的。我对汇编非常陌生,我能弄清楚的是它可能与我正在使用的寄存器有关

ldr x19, [x0, x_offset] 
ldr x21, [x1, x_offset]
cmp x19,x21 
b.ne returnResult
在上面的代码中,它将始终取断点。我知道x19=x21,因为我打印了这些值。也许是在查地址

fmtTest:.string "First value is : %d, Second value is : %d\n"
.balign 4

define(printf, `    
adrp    x0, $1  
add x0, x0, :lo12:$1    
bl  `printf'')

mov x1, x19
mov x2, x21
printf(fmtTest)

如何打印?可能您只打印了32位,但加载并比较了64位。PS:学习使用调试器。我一直在使用这个打印函数定义(printf,`adrp x0,$1 add x0,x0,:lo12:$1 bl`printf')是的,%d只打印32位,所以前32位可能不同。如何打印?可能您只打印了32位,但加载并比较了64位。PS:学习使用调试器。我一直在使用这个打印函数define(printf,`adrp x0,$1 add x0,x0,:lo12:$1 bl`printf')是的,%d只打印32位,所以前32位可能不同。