小编Mar*_*kus的帖子

反汇编的gcc输出似乎执行"调用0"而不是"调用函数偏移",但工作正常

我只看了一下我从这个C程序得到的一个非常简单的SPARC程序集输出:

int addition_func(int a, int b)
{
  return(a+b);
}

void main()
{

int a = 20;
int b = 19;
int res;    

res = addition_func(a, b);
}
Run Code Online (Sandbox Code Playgroud)

反汇编.text:

00000000 <addition_func>:
 0: 81 c3 e0 08     retl 
 4: 90 02 00 09     add  %o0, %o1, %o0

00000008 <main>:
 8: 90 10 20 14     mov  0x14, %o0
 c: 92 10 20 13     mov  0x13, %o1
10: 82 13 c0 00     mov  %o7, %g1
14: 40 00 00 00     call  14 <main+0xc>
18: …
Run Code Online (Sandbox Code Playgroud)

assembly sparc disassembly

5
推荐指数
1
解决办法
883
查看次数

基本的C指针问题

自从我上次编程C以来已经有一段时间了,似乎我在此期间已经忘记了所有内容......我有一个非常简单的指针问题.假设我有一个通过循环迭代计算求和的函数.此函数不仅应该返回循环计数器,还要返回它计算的总和.因为我可以只返回一个值,所以我假设我能做的最好就是声明一个指针.我能这样做吗:

   int loop_function(int* sum)
   {
    int len = 10; 

    for(j = 0; j < len; j++) 
    {
      sum += j;
    }

   return(j);
   }   

   ....


   int sum = 0;
   loop_function(&sum);
   printf("Sum is: %d", sum);
Run Code Online (Sandbox Code Playgroud)

或者我是否需要定义一个额外的变量,指向我传递给函数的总和?

非常感谢,马库斯

c pointers

4
推荐指数
2
解决办法
923
查看次数

标签 统计

assembly ×1

c ×1

disassembly ×1

pointers ×1

sparc ×1