Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/61.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C 臂总成-如何与大数字进行比较_C_Assembly_Arm - Fatal编程技术网

C 臂总成-如何与大数字进行比较

C 臂总成-如何与大数字进行比较,c,assembly,arm,C,Assembly,Arm,我不熟悉手臂装配。我试着比较1200号和r1号。 所以我试着: mov r2, #1210 cmp r2, r1 cmp #1210, r1 但它不起作用。我正在用树莓皮3做这个程序。我试过: mov r2, #1210 cmp r2, r1 cmp #1210, r1 但它也不起作用。我怎样才能解决这个问题?并且,如果r6的地址为0x00010000,且装配代码为: ldr r10, r6, #8 下面的代码也一样吗?如果没有,我如何在不使用r6的情况下更改代码?谢谢 l

我不熟悉手臂装配。我试着比较1200号和r1号。 所以我试着:

 mov r2, #1210
 cmp r2, r1
 cmp #1210, r1
但它不起作用。我正在用树莓皮3做这个程序。我试过:

 mov r2, #1210
 cmp r2, r1
 cmp #1210, r1
但它也不起作用。我怎样才能解决这个问题?并且,如果r6的地址为0x00010000,且装配代码为:

ldr r10, r6, #8
下面的代码也一样吗?如果没有,我如何在不使用r6的情况下更改代码?谢谢

ldr r10, #0x00010008

movw
就可以了。它允许任何16位数字(0~65535)

您能详细说明“它不工作”的含义吗?不组装吗?是否产生与预期不同的结果?那个不同的结果是什么?我认为使用mov,数字限制是255。如果我尝试使用255以下的数字,它可以工作,但1210不工作。(编译错误)有什么方法可以使用1210吗?
mov
指令的立即数宽度为8位(0-255)。然而,有时还有更多的故事(请参阅)。在进行汇编语言编程或至少学习新的指令集时,您应该始终将文档放在身边。这不是mov指令的合法立即数,因此必须使用另一条指令或伪指令ldr r2,=1210,这是某些汇编程序支持的。gnu汇编器将使用最佳解决方案(如下面的答案所指出的)。通过在gnu汇编程序中使用伪指令(对于任何立即数),您可以得到“最佳”解决方案。但是汇编是基于汇编程序的,而不是基于目标的,因此并非所有工具都是如此。在这个站点以及其他地方,已多次询问并回答了将即时数据加载到寄存器中的问题。还有为什么这不起作用的原因被记录在案。仅在ARMv6T2和更高版本中可用(请参阅)。@TonyK:由于覆盆子Pi 3使用的是Cortex-A53,并且由于ARMv8-a包括AArch32,它提供了与ARMv7-a的向后兼容性,
movw
的可用性不应该是一个问题。