-2
我正在学校学习汇编,我想知道我是否理解它。如果我有3个C代码功能编译成汇编代码的C函数
int fun1(int a, int b)
{
unsigned ua = (unsigned) a;
if (ua < b)
return b;
else
return ua;
}
int fun2(int a, int b)
{
if (b < a)
return b;
else
return a;
}
int fun3(int a, int b)
{
if (a < b)
return a;
else
return b;
}
然后,我有汇编代码
pushl %ebp
movl %esp,%ebp
movl 8(%ebp),%edx
movl 12(%ebp),%eax
cmpl %eax,%edx
jge .L3
movl %edx,%eax
.L3:
movl %ebp,%esp
popl %ebp
ret
难道我理解它是正确的,FUN1是汇编代码正确的C代码?
这是前2行是头,下两个将int a和int b添加到它们的“点”中,cmpl是无符号ua =(无符号)a然后如果ua不大于或等于b,则我们直接跳到.L3。
或者我认为这一切都错了?
你的同学已经问同样的问题3天前在这里: http://stackoverflow.com/questions/26188068/assembly-language-how-it-works/26191257#26191257 [1]:http://stackoverflow.com/questions/26188068/assembly-language-how-it-works/26191257#26191257 – 2014-10-07 00:52:01