【发布时间】:2019-09-27 11:51:13
【问题描述】:
我的 CS 书中的一个练习要求一个简短的 (x86-64) 程序集 sn-p 用于将 char 指针作为参数并返回它指向的(第一个)字符的函数。
书中提出的解决方案如下:
movq (%rdi), %rax
movb (%rax), %al
我原以为一条指令就足够了:
movb (%rdi), %al
这两个是等价的吗?我错过了什么?
【问题讨论】:
-
第一个做两次解引用,就好像你有一个双指针。
-
这是哪本书,让被同一本书中的相同错误迷惑的未来读者更容易找到这个?
-
哦,所以这不是
char*arg。 :/ 或者它通过引用来获取它,而你忘了提及这一点。不知道如何解决这个误导性问题。也许包括书中的实际措辞,然后答案可以纠正您对它的解释为char*。 -
IMO 明显更糟;您的新标题不太具体。搜索和查看问题标题的人不会知道问题的指令序列是什么。并且在问题主体中“除其他外”并没有修改 arg 被称为 char 指针的事实。
-
我想我们不妨离开它。既然事实证明这不是一本书的错误,那么来源就不那么重要了,我们不妨离开它。有了这个特定的标题和有用的答案,也许它会有一些用处。