gpt4 book ai didi

C到汇编的转换问题

转载 作者:行者123 更新时间:2023-12-05 01:25:47 25 4
gpt4 key购买 nike

我想在不使用 gcc -S 函数的情况下将我的 C 代码转换为汇编代码,因为我想自己练习汇编代码。出于某种原因,我无法让我的程序集文件与我的 C 代码相匹配,我也不知道为什么。这是我写的,C 代码是正确的,但汇编代码无法编译。顺便说一句,这是 sparc 程序集。

#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

最佳答案

尝试使用这个命令:

gcc -S -O0 myfile.c

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

关于C到汇编的转换问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13500228/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com