0
アセンブリ言語に変換する必要があるC言語のコードがあります。ここ はCコードです:アセンブリのファイルから読み取る方法x86
int rb (FILE *f){
int s;
char c;
s = fr(&c, 1, 1, f);
if (s <= 0) return -1;
return (int)c;
}
これまでのところ、私は私のセグメンテーションフォールトを与え、このアセンブリコードに着い:
rb:
pushl %ebp
movl %esp,%ebp
pushl 8(%ebp)
pushl $1
pushl $1
leal 12(%ebp), %eax
pushl %eax
call fr
jz ng
jns ex
ng:
pushl $1
negl %eax
ex:
popl %ebp
ret
誰も私がこの問題を解決するのに役立つことはできますか? :)
'c'を割り当てるのを忘れて、' 12(%ebp) 'を使うのは忘れてしまいます。これは存在しない第二引数のアドレスになります。また、実際に 'call fr'の後に' eax'に基づいてフラグを設定する必要があります。 – Jester
私はあなたに尋ねるかもしれません、なぜですか? –
GCC(および一般にすべてのCコンパイラ)は、このような機能を提供しています(Cをアセンブリに変換する)。 –