繁体   English   中英

用于取消引用 char 指针并返回结果的汇编指令

[英]Assembly instruction to dereference a char pointer and return the result

我的 CS 书中的一个练习要求 function 的一个简短 (x86-64) 汇编片段,该片段将 char 指针作为参数并返回它指向的(第一个)字符。

书中提出的解决方案如下:

movq (%rdi), %rax
movb (%rax), %al

我原以为一条指令就足够了:

movb (%rdi), %al

两者是等价的吗? 我错过了什么?

在您的第一个片段中,发生了两个指针取消引用:

movq (%rdi), %rax
movb (%rax), %al

也就是说,将rdi指向的 8 字节 memory 位置加载到rax中。 然后,将rax指向的 1 字节 memory 位置加载到al中。 您可以将其视为完全取消引用指向char的指针(即char ** )的指针。

而在您的第二个片段movb (%rdi), %al中,有一个指针取消引用,即rdi指向的 1 字节位置被加载到al中。 您可以将其视为取消引用指向char的指针(即char * )。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM