-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