C到程序集转换问题

时间:2012-11-21 19:00:51

标签: c assembly

我正在尝试将我的C代码转换为汇编而不使用gcc -S函数,因为我想自己练习汇编。出于某种原因,我无法得到我的汇编文件以匹配我的c代码,我无法弄清楚原因。这是我写的,C代码是正确的,但汇编代码不编译。这是sparc assembly btw。

#include <stdio.h>

int charCompare( const void *ptr1, const void *ptr2 )
{
    char i = *((char *)ptr1);
    char j = *((char *)ptr2);

    if (i > j)
        return (1);
    if (i < j)
        return (-1);
    return (0);
}

这是所谓的等效汇编代码。

.global        charCompare      !makes the function globally usable
.section       ".text"

charCompare:
save    %sp, -96, %sp !save caller's window; if different than -96
cmp i1, i2     !compare i1 with i2
bg  returnpos !if i1 is greater than i2 jump to returntrue
cmp i1, i2     !compare i1 with i2
bl returnneg


returnneg:
set -1, %o0
ba end

returnpos:
set 1, %o0
ba end

end:
ret 
restore

1 个答案:

答案 0 :(得分:1)

尝试使用此命令:

gcc -S -O0 myfile.c

额外的gcc选项将关闭所有优化(例如可以重新排列代码的优化)。