52ky 发表于 2022-5-6 15:56:00

resb 2 是否等同于 resw 1?

问题
在这段代码中:
   global _start
section .bss
    v1 resw 1
    v2 resb 2    ;array of 2 chars
section .text
_start:
    mov word,500
    mov word,500

    mov rax,60
    mov rdi,0
    syscall
这个密码正确吗?
word
work the same way as
word?
无论

我在 x86-64 Ubuntu 上使用 NASM。

回答
是的,它们都保留了相同数量的内存(2 个字节),因此您可以使用 mov word[...], ... 安全地访问它们。

请注意,这大致相当于在 C 中编写 uint8_t v1 与 uint16_t v2 的比较。但是 NASM 不强制类型,因此每个内存引用类似于使用 C memcpy() 执行N 字节的严格安全别名加载或存储传输,无论内存的 C 类型如何。

如果您打算将分配的数据用作 resw 或 word 数组,我强烈建议您实际使用 word 以避免混淆和潜在的错误。



页: [1]
查看完整版本: resb 2 是否等同于 resw 1?