0
CとPythonでアセンブリプログラムを実装します。私はCとPythonの両方でそれを実装私はそれについて何の説明がありませんしながら、アセンブリプログラムの一部を理解しようとしている
;x is stored at 8(%ebp)
movl 8(%ebp), %edx
movl $0, %eax
testl %edx, %edx
je .L7
.L10:
xorl %edx, %eax
shrl %edx
jne .L10
.L7:
andl $1, %eax
:
unsigned fun_a(unsigned x) {
int val = 0;
while (x != 0) {
val = val^x;
x = x >> 1;
}
return val && 1;
}
def fun_a(x):
val = 0
while x != 0:
val = val^x
x = x >> 1
return val & 1
を
しかし、彼らは異なる結果を生成することが判明:私のC/Pythonプログラムと間違って何
//C
fun_a(0) = 0
fun_a(1) = 1
fun_a(2) = 1
fun_a(3) = 1
fun_a(4) = 1
fun_a(5) = 1
fun_a(6) = 1
fun_a(7) = 1
fun_a(8) = 1
fun_a(9) = 1
#Python
fun_a(0) = 0
fun_a(1) = 1
fun_a(2) = 1
fun_a(3) = 0
fun_a(4) = 1
fun_a(5) = 0
fun_a(6) = 0
fun_a(7) = 1
fun_a(8) = 1
fun_a(9) = 0
を?
最後の行が異なります。 – thebjorn
最も近いCマニュアルに行き、 '&&'と '&'の違いを調べてください。 – lurker
は、Cコードで '& 'を1つだけ使用する必要があります。&&は、while(文)とwhile(文)のためのif(文)ループに対してのみ使用されます。 – SSpoke