gpt4 book ai didi

linux - 条件移动问题

转载 作者:太空宇宙 更新时间:2023-11-04 09:08:51 26 4
gpt4 key购买 nike

汇编练习的代码片段(GNU 汇编程序,Linux 32 位)

.datamore:.asciz "more\n".text...movl $more, %eax        # this is compiledcmova more, %eax        # this is compiledcmova $more, %eax       # this is not compiled

错误:“cmova”的后缀或操作数无效

我可以使用 movl 将字符串地址放入 %eax,但 cmova 未编译。我需要源操作数是 $more 而不是更多,以便将其用于打印。最后,这个值进入 Linux 系统调用 4(写入)的 %ecx 寄存器。

最佳答案

汇编器是正确的! CMOVcc 指令比 MOV 更受限制:它们只能将 16/32/64 位值从内存移动到寄存器,或从一个寄存器移动到另一个寄存器。它们不支持立即数(或 8 位寄存器)操作数。

(引用:http://www.intel.com/Assets/PDF/manual/253666.pdf - 来自 http://www.intel.com/products/processor/manuals/index.htm 提供的手册集。)

关于linux - 条件移动问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3627046/

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