Assembly 如何在ARM中处理有符号整数?
我有一个子程序,需要计算一个包含乘法和加法的函数。问题是我不明白如何在内存中存储有符号整数Assembly 如何在ARM中处理有符号整数?,assembly,arm,unsigned,signed,twos-complement,Assembly,Arm,Unsigned,Signed,Twos Complement,我有一个子程序,需要计算一个包含乘法和加法的函数。问题是我不明白如何在内存中存储有符号整数 我是否使用普通整数并以特定的方式处理它?存储值只是将其二进制模式复制到内存中,因此符号性在这里是不相关的。但在加载小于寄存器宽度的值时,必须区分有符号类型和无符号类型,因为CPU需要知道它应该对值进行零扩展或符号扩展以填充寄存器 除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除
我是否使用普通整数并以特定的方式处理它?存储值只是将其二进制模式复制到内存中,因此符号性在这里是不相关的。但在加载小于寄存器宽度的值时,必须区分有符号类型和无符号类型,因为CPU需要知道它应该对值进行零扩展或符号扩展以填充寄存器 除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除法、大于/小于的比较和右移运算才能对有符号运算产生不同的结果,因此需要不同的指令。你应该阅读更多信息 进一步阅读