好的,所以我正在处理以下代码片段:
push %ebp
mov %esp,%ebp
push %ebx
mov 0x8(%ebp),%eax
movzwl %ax,%edx
因此,在处理正值时,它的行为符合预期。复制到 %edx 的值是 %eax(或 %ax)的尾随 16 位。
然而,如果你输入一个负数,一切都会变得很奇怪,而且它的行为似乎不像预期的那样。
例如,如果 %eax 的值为 -67043552,则复制到 %edx 的值为 65312。
我对组装很陌生,如果这对我来说是一个明显的误解,我很抱歉。任何帮助将不胜感激。