[英]Translate C code to assembly code?
我必须将此C代码转换为汇编代码:
#include <stdio.h>
int main(){
int a, b,c;
scanf("%d",&a);
scanf("%d",&b);
if (a == b){
b++;
}
if (a > b){
c = a;
a = b;
b = c;
}
printf("%d\n",b-a);
return 0;
}
我的代码在下面,并且不完整。
rdint %eax # reading a
rdint %ebx # reading b
irmovl $1, %edi
subl %eax,%ebx
addl %ebx, %edi
je Equal
irmov1 %eax, %efx #flagged as invalid line
irmov1 %ebx, %egx
irmov1 %ecx, %ehx
irmovl $0, %eax
irmovl $0, %ebx
irmovl $0, %ecx
addl %eax, %efx #flagged as invalid line
addl %ebx, %egx
addl %ecx, %ehx
halt
基本上我认为它已经完成了,但是当我尝试运行它时,我在标记为无效的两行旁边发表了评论,但是我不确定为什么它们无效。 我也不确定a> b的if语句。 我可以使用任何了解y86汇编语言的人的建议。
延,
首先,Y86没有任何efx,egx和ehx寄存器,这就是为什么当您通过YAS注入代码时得到无效行的原因。
其次,通过使用subl指令减去两个寄存器,并通过jxx指令跳转到Y86 ALU设置的条件代码,可以进行条件分支。
有关详细信息,请访问http://y86tutoring.wordpress.com查看我的博客。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.