Assembly 如何在ARM中处理有符号整数?

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

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


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

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

除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除法、大于/小于的比较和右移运算才能对有符号运算产生不同的结果,因此需要不同的指令。你应该阅读更多信息

进一步阅读


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

除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除法、大于/小于的比较和右移运算才能对有符号运算产生不同的结果,因此需要不同的指令。你应该阅读更多信息

进一步阅读


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

除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除法、大于/小于的比较和右移运算才能对有符号运算产生不同的结果,因此需要不同的指令。你应该阅读更多信息

进一步阅读


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

除此之外,ARM使用2的补码,这意味着对两个值进行加法、减法,而不在乎值是有符号的还是无符号的,因为结果将完全相同。除右移外,所有按位操作都相同。对于基本运算,只有加宽的乘法、除法、大于/小于的比较和右移运算才能对有符号运算产生不同的结果,因此需要不同的指令。你应该阅读更多信息

进一步阅读



这是否回答了您的问题?这肯定有帮助,有人能给我举一个在加法/乘法中使用这些标志的例子吗?(使用add和mult指令)。我会在所有相关指令中添加“vs”吗?这些标志指示值是否溢出,如果您想检查该值或进行更高精度的运算,这很有用。如果你刚刚开始,你可以推迟那部分。对于最初的问题,将寄存器值存储到RAM并不取决于您是否认为该值是有符号的。使用STR说明建议:阅读有关该主题的书籍或教程。位是位,处理器不知道浮点和指针中的整数,等等。它们只是位,这是一个罕见的时钟周期,这里或那里的位用于某些东西,但即使指针有时也是操作数浮点只是移动位,等等。您所使用的指令的处理器文档的哪一部分您不理解?这是否回答了您的问题?这肯定有帮助,有人能给我举一个在加法/乘法中使用这些标志的例子吗?(使用add和mult指令)。我会在所有相关指令中添加“vs”吗?这些标志指示值是否溢出,如果您想检查该值或进行更高精度的运算,这很有用。如果你刚刚开始,你可以推迟那部分。对于最初的问题,将寄存器值存储到RAM并不取决于您是否认为该值是有符号的。使用STR说明建议:阅读有关该主题的书籍或教程。位是位,处理器不知道浮点和指针中的整数,等等。它们只是位,这是一个罕见的时钟周期,这里或那里的位用于某些东西,但即使指针有时也是操作数浮点只是移动位,等等。您所使用的指令的处理器文档的哪一部分您不理解?这是否回答了您的问题?这肯定有帮助,有人能给我举一个在加法/乘法中使用这些标志的例子吗?(使用add和mult指令)。我会在所有相关说明中添加“vs”吗?标志指示