ここに私のCコードがあります:
int test(int x, int y){
int val=4*x;
if (y>0){
if (x<y) val=x-y;
else val=x^y;
}
else if (y<-2) val=x+y;
return val;
}
そして、GCCコマンドラインに入力したものは次のとおりです。
gcc -O1 -S -march=i686 test.c
そして、これが私が得たSファイルです(計算部分のみ):
pushl %ebx
movl 8(%esp), %ecx
movl 12(%esp), %edx
testl %edx, %edx
jle L2
movl %ecx, %eax
subl %edx, %eax
movl %edx, %ebx
xorl %ecx, %ebx
cmpl %edx, %ecx
cmovge %ebx, %eax
jmp L4
L2:
leal 0(,%ecx,4), %eax
addl %edx, %ecx
cmpl $-2, %edx
cmovl %ecx, %eax
L4:
popl %ebx
ret
私の質問は、上記の S ファイルを使用してまったく同じ C コードを取得できますか? 私はまったく同じことを意味します。たとえば、val
is 4*x
(C コードの 2 行目) のデフォルト値を特定できますか? if
各ステートメントのテスト式を特定できますか?
私は本当にあなたの助けが必要です。ありがとうございました!!!