气体中的整数溢出

问题描述

我不确定这是装配问题还是气体问题。我已经完成以下工作,以了解汇编程序如何处理太大而无法在相应寄存器中编码的立即值:

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 655350xFF FF是最大16位值,因此这很有意义。 对此有警告。
  • ebx 42949672950xFF FF FF FF是最大的32位值,因此很有意义。 对此有警告。
  • rbx :这对我来说是令人惊讶的部分,在溢出时实际上会引发错误而不是警告。为什么会出现此错误

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)