首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何将IA32 'cmp‘指令转换为Y86?

如何将IA32 'cmp‘指令转换为Y86?
EN

Stack Overflow用户
提问于 2013-02-26 19:55:53
回答 1查看 7.5K关注 0票数 2

IA32 to Y86

ATT组装

我有以下IA32程序集代码:

代码语言:javascript
复制
Bubble:
.LFB0:
    pushl   %esi
    pushl   %ebx
    movl    16(%esp), %esi
    movl    12(%esp), %edx
    subl    $1, %esi
    andl    %esi, %esi
    jle .L1
.L7:
    xorl    %eax, %eax
.L5:
    movl    4(%edx,%eax,4), %ecx
    movl    (%edx,%eax,4), %ebx
    cmpl    %ebx, %ecx
    jge .L4
    movl    %ebx, 4(%edx,%eax,4)
    movl    %ecx, (%edx,%eax,4)
.L4:  
    addl    $1, %eax
    cmpl    %eax, %esi
    jg  .L5
    subl    $1, %esi
    jne .L7
.L1: 
    popl    %ebx
    popl    %esi
    ret

我正在尝试将其转换为Y86程序集代码。我在翻译比较指令时遇到困难:

代码语言:javascript
复制
 cmpl    %ebx, %ecx

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-02-26 20:01:45

Y86似乎没有cmp指令。然而,它有subpushpop

因此,可以将cmpl %ebx, %ecx转换为以下代码:

代码语言:javascript
复制
pushl %ecx
subl  %ebx, %ecx
popl  %ecx

cmpsub完全相同,其区别在于cmp不存储结果,它只更新标志。因此,cmp总是可以被pushsubpop取代(如果堆栈中有足够的空间)。

票数 10
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15098073

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档