【发布时间】:2018-04-17 19:13:27
【问题描述】:
我在 linux 64 位上使用 NASM 汇编程序。 有一些我无法理解的变量和寄存器。 我创建了一个名为“msg”的变量:
msg db "hello, world"
现在,当我想写入标准输出时,我将 msg 移动到 rsi 寄存器,但是我不明白 mov 指令按位... rsi 寄存器由 64 位组成,而 msg变量有 12 个符号,每个符号 8 位,这意味着 msg 变量的大小为 12 * 8 位,显然大于 64 位。
那么,如何在不溢出为 rsi 分配的内存的情况下做出如下指令:mov rsi, msg。
或者rsi寄存器是否包含字符串的第一个符号的内存位置,并且在写入1个符号后它会更改为下一个符号的内存位置?
对不起,如果我写了完全废话,我是组装新手,我暂时无法掌握它。
【问题讨论】:
-
它是消息的地址,就像在 C 中使用指向字符串的指针一样。
-
感谢您的快速响应。学习了 C 以外的高级语言,所以我不熟悉指针。但我现在明白了。