Nasm-将值从4字节寄存器移入1字节地址空间

问题描述 投票:0回答:1

当我将存储在eax,ebx,ecx等中的4字节值移动到分配的空间少于4字节的地址空间时,nasm的行为如何?当我将var中存储的1字节值移动到4字节寄存器时,nasm分别表现如何?

赞:

.bss
var resb 1
.text
mov eax, 2000000000
mov [var], eax

xor ebx, ebx
mov ebx, [var]

[var]ebx将具有什么值?又为什么呢?当用printf调用%d时,我得到的是2000000000。但是怎么可能呢? var只能保存1个字节。怎么可能从中接收到需要更大字节数的数字?

assembly memory-management nasm cpu-registers
1个回答
0
投票

与MASM不同,Nasm不会跟踪变量的大小。 (它实际上没有变量,它只有标签。)因此,mov指令将简单地覆盖(或读取)从标签var开始的四个字节中的任何内容。

© www.soinside.com 2019 - 2024. All rights reserved.