问题 
在这段代码中: 
-    global _start
 
 - section .bss
 
 -     v1 resw 1
 
 -     v2 resb 2    ;array of 2 chars 
 
 - section .text
 
 - _start:
 
 -     mov word[v1],500
 
 -     mov word[v2],500
 
  
-     mov rax,60
 
 -     mov rdi,0
 
 -     syscall
 
  复制代码 
这个密码正确吗? 
- word[v1]
 
 -  work the same way as 
 
 - word[v2]?
 
  复制代码 
无论 
 
我在 x86-64 Ubuntu 上使用 NASM。 
 
回答 
是的,它们都保留了相同数量的内存(2 个字节),因此您可以使用 mov word[...], ... 安全地访问它们。 
 
请注意,这大致相当于在 C 中编写 uint8_t v1[2] 与 uint16_t v2[1] 的比较。但是 NASM 不强制类型,因此每个内存引用类似于使用 C memcpy() 执行N 字节的严格安全别名加载或存储传输,无论内存的 C 类型如何。 
 
如果您打算将分配的数据用作 resw 或 word 数组,我强烈建议您实际使用 word 以避免混淆和潜在的错误。 
 
 
 
 |