この 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
基本的にはほぼ完了していると思いますが、実行しようとしたときに無効とフラグが立てられた2行の横にコメントしましたが、なぜ無効なのかわかりません。また、a > b の if ステートメントを実行する方法もわかりません。y86 アセンブリ言語について知っている人からの提案を使用できます。