Assembly strcmp评估哪些寄存器?x86汇编
这似乎是常识,但我还没有在互联网上找到它 当一个程序Assembly strcmp评估哪些寄存器?x86汇编,assembly,x86,Assembly,X86,这似乎是常识,但我还没有在互联网上找到它 当一个程序 call <JMP.&msvcrt.strcmp> 呼叫 比较了哪些值?我不确定,因为cmp是规定的(cmp eax、ebp) 我知道如果有帮助,比较结果将返回到EAX寄存器中。您正在尝试将strcmp与汇编指令cmp关联。但它们是不同的东西。例如,在处理器级(汇编)中,CMPA、B比较两个不同的寄存器,并在一些标志中设置结果。标志是可以由其他指令(如jz,jnz)测试的位,然后根据所需意图重定向流 当您执行调用str
call <JMP.&msvcrt.strcmp>
呼叫
比较了哪些值?我不确定,因为cmp是规定的(cmp eax、ebp)
我知道如果有帮助,比较结果将返回到EAX寄存器中。您正在尝试将
strcmp
与汇编指令cmp
关联。但它们是不同的东西。例如,在处理器级(汇编)中,CMPA、B
比较两个不同的寄存器,并在一些标志中设置结果。标志是可以由其他指令(如jz
,jnz
)测试的位,然后根据所需意图重定向流
当您执行调用strcmp
时,实际上是在调用一个“高级函数”(与汇编相比是高级函数),该函数将执行大量操作来比较两个C样式字符串。一旦每个编译器/平台给出不同的机器指令结果,就不容易知道将使用哪些寄存器(可能会使用其中的许多寄存器)
如果你理解了这一点,你会发现事实上这并不重要,因为范式有点不同:
是一种汇编指令cmp
不是汇编指令,而是函数strcmp