gpt4 book ai didi

assembly - 在 GNU 汇编器中处理或记住 cmp 的反向参数的好方法是什么?

转载 作者:行者123 更新时间:2023-12-03 13:28:06 24 4
gpt4 key购买 nike

以下是一些英特尔语法中的汇编代码:

// Jump to done if rsi >= rax.
cmp rsi, rax
jae done

这对我的大脑来说是有道理的:如果 rsi “高于或等于”rax,你就跳,
匹配 cmp 中的参数顺序操作说明。将此与
GNU 语法:
// Jump to done if rsi >= rax.
cmp %rax, %rsi
jae done

这每次都让我的大脑受伤。当我来到这个新鲜的
一段时间不写汇编代码后,我去查找 cmp 的语义。
jae在英特尔手册中,发现它都是用“第一”来说明的
和“第二个”操作数,它与我在屏幕上看到的不匹配
我的面前。

结束提示。我的问题:
  • 有没有其他的表达方式cmpjae到 GNU 汇编器,所以
    操作数的顺序为cmp匹配引用的逻辑比较
    来自 jae ?
  • 假设(1)的答案是否定的,有没有人有好的方法让我
    看看这个,以便我下次记住它是如何工作的?任何更好的
    比“GNU 倒退”?

  • 请注意,我不是在问如何在 GNU 汇编器中使用 Intel 语法;我知道这是可能的。我在现有的 GNU 语法代码库中工作,并要求使用一些助记符或其他方式来帮助我保持头脑清醒。

    最佳答案

    在 GAS 中,您可以使用 .intel_syntax noprefix以获得您更熟悉的语法,但您不能只是在 AT&T 语法中交换它们。

    我会说请记住,在英特尔语法中 mov x,y意思是“使 x 等于 y”,而在 AT&T 语法中它是“将 x 复制到 y”,一旦你有了这个约定,就将它扩展到你遇到的其他指令。

    关于assembly - 在 GNU 汇编器中处理或记住 cmp 的反向参数的好方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34804508/

    24 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com