IA32 to Y86
ATT组装
我有以下IA32程序集代码:
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程序集代码。我在翻译比较指令时遇到困难:
cmpl %ebx, %ecx谢谢。
发布于 2013-02-26 20:01:45
Y86似乎没有cmp指令。然而,它有sub、push和pop。
因此,可以将cmpl %ebx, %ecx转换为以下代码:
pushl %ecx
subl %ebx, %ecx
popl %ecxcmp与sub完全相同,其区别在于cmp不存储结果,它只更新标志。因此,cmp总是可以被push、sub、pop取代(如果堆栈中有足够的空间)。
https://stackoverflow.com/questions/15098073
复制相似问题