gpt4 book ai didi

assembly - strcmp 评估哪些寄存器? x86 汇编

转载 作者:行者123 更新时间:2023-12-02 07:55:00 30 4
gpt4 key购买 nike

这似乎是常识,但我在互联网上找不到它(还)。

当程序有

call <JMP.&msvcrt.strcmp>

比较什么值?我不确定,因为对于 cmp 来说是这样的(cmp eax, ebp)。

我知道比较结果会返回到 EAX 寄存器中(如果有帮助的话)。

最佳答案

您正在尝试关联 strcmp与组装指令cmp 。但它们是不同的东西。在处理器级别(汇编),cmp A, B例如,比较 2 个不同的寄存器,并将结果设置在某些标志中。标志是可以由其他指令测试的位(例如 jzjnz ),然后根据所需的意图重定向流程。

当您执行 call strcmp 时您实际上正在调用一个“高级函数”(高级,与汇编相比),它将执行很多操作来比较 2 个 C 风格字符串。一旦每个编译器/平台都会给出不同的机器指令结果,就很难知道将使用哪些寄存器(可能会使用其中许多寄存器)。

如果你理解了这一点,你就会发现事实上这并不重要,因为范式有点不同:

  • cmp是一条汇编指令。
  • strcmp不是汇编指令,而是函数。

关于assembly - strcmp 评估哪些寄存器? x86 汇编,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28204405/

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