如何解决气体中的整数溢出
我不确定这是装配问题还是气体问题。我已经完成以下工作,以了解汇编程序如何处理太大而无法在相应寄存器中编码的立即值:
addb $0xFFFF,%bl
addw $0xFFFFFF,%bx
addl $0xFFFFFFFFF,%ebx
addq $0xFFFFFFFFF,%rbx
运行$ as file.s
会给我以下警告和错误:
file.s: Assembler messages:
file.s:5: Warning: 16777215 shortened to 65535
file.s:6: Warning: 68719476735 shortened to 4294967295
file.s:7: Error: operand type mismatch for `add'
以下是与此相关的一些问题:
- bl :为什么没有尝试将
0xFFFF
添加到bl
的警告?组装后将其缩短为FF
,但没有警告消息。 - bx :
65535
或0xFF FF
是最大16位值,因此这很有意义。 对此有警告。 - ebx :
4294967295
或0xFF FF FF FF
是最大的32位值,因此很有意义。 对此有警告。 - rbx :这对我来说是令人惊讶的部分,在溢出时实际上会引发错误而不是警告。为什么会出现此错误?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。