问题
在这段代码中:
- 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 以避免混淆和潜在的错误。
|