x64 asm:将负值从寄存器移动到内存
x64 asm: Moving a negative value from a register to memory
假设我在 .data
中定义了一个名为 val
的字节。
还假设我在寄存器 r10
中有一个数字,假设它是 12
.
我正在尝试对 r10
中的数字进行 2s 赞美并将其存储以备将来在 val
中使用。
所以我这样做:
neg r10
mov [val], r10b
但是当我稍后尝试使用 val
中的值时(或使用调试器进行调试),它被存储并被视为无符号值,所以如果 r10
是 -12, val
现在是 244,这是无符号的等价物。
如何在保留符号的同时将寄存器移动到内存?或者,在将该内存移回不同的寄存器后如何设置符号?
一个带符号的 8 位整数,即 -12
存储为 244
。当您尝试使用调试器读取该值时,它会将数字视为无符号字节并显示 244
。如果您告诉您的调试器将内存视为有符号字节,它将正常工作。
假设我在 .data
中定义了一个名为 val
的字节。
还假设我在寄存器 r10
中有一个数字,假设它是 12
.
我正在尝试对 r10
中的数字进行 2s 赞美并将其存储以备将来在 val
中使用。
所以我这样做:
neg r10
mov [val], r10b
但是当我稍后尝试使用 val
中的值时(或使用调试器进行调试),它被存储并被视为无符号值,所以如果 r10
是 -12, val
现在是 244,这是无符号的等价物。
如何在保留符号的同时将寄存器移动到内存?或者,在将该内存移回不同的寄存器后如何设置符号?
一个带符号的 8 位整数,即 -12
存储为 244
。当您尝试使用调试器读取该值时,它会将数字视为无符号字节并显示 244
。如果您告诉您的调试器将内存视为有符号字节,它将正常工作。