如何处理ARM中的有符号整数? [关闭]

问题描述 投票:-1回答:1

我有一个子程序,需要计算一个涉及其中的一些乘法和加法的函数。问题是我不明白如何在内存中存储有符号整数。

我是否使用普通整数并以特定方式使用它?

assembly arm unsigned signed twos-complement
1个回答
2
投票

存储一个值只是将其二进制模式复制到内存中,因此符号在这里是无关紧要的。但是,当加载比寄存器宽度更窄的值时,必须区分有符号和无符号类型,因为CPU需要知道它应该零扩展或符号扩展值以填充寄存器。

此外,ARM使用二进制补码,这意味着两个值上的加,减和non-widening multiplication不关心值是有符号还是无符号,因为结果将完全相同。除了右移之外的所有按位操作都是一样的。对于基本操作,只有加宽乘法,除法,大于/小于和右移的比较产生不同的有符号结果,因此需要不同的指令。你应该阅读this answer了解更多信息。

进一步阅读

© www.soinside.com 2019 - 2024. All rights reserved.