找回密码
 立即注册
word使用内存mov | 软件设计/软件工程 2022-05-06 308 0star收藏 版权: . 保留作者信息 . 禁止商业使用 . 禁止修改作品
问题
在这段代码中:
  1.    global _start
  2. section .bss
  3.     v1 resw 1
  4.     v2 resb 2    ;array of 2 chars
  5. section .text
  6. _start:
  7.     mov word[v1],500
  8.     mov word[v2],500

  9.     mov rax,60
  10.     mov rdi,0
  11.     syscall
复制代码

这个密码正确吗?
  1. word[v1]
  2. work the same way as
  3. 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 以避免混淆和潜在的错误。





上一篇:“无法启动 Visual Studio”错误(在 Mac 上)
下一篇:如何使用 openssl 创建公钥和私钥?