我试图了解有关x86程序集的更多信息。我有一个神秘功能的汇编代码。我所知道的这个函数是它必须返回一个整数并且有一个整数作为参数:
int mystery(int n){}
此功能的程序集是
0000000000400526 <mystery_util>:
400526: 89 f8 mov %edi,%eax
400528: d1 e8 shr %eax
40052a: 83 e7 01 and $0x1,%edi
40052d: 01 f8 add %edi,%eax
40052f: c3 retq
0000000000400530 <mystery>:
400530: 89 f8 mov %edi,%eax
400532: 8d 3c fd 00 00 00 00 lea 0x0(,%rdi,8),%edi
400539: 29 c7 sub %eax,%edi
40053b: 83 c7 04 add $0x4,%edi
40053e: e8 e3 ff ff ff callq 400526 <mystery_util>
400543: f3 c3 repz retq
我不明白如何将其写为C函数。如果有一个callq,那就意味着它有两种不同的功能吗?
我试图在一个返回整数的函数中写出来。我看到它如何返回一个布尔值但是有没有办法返回一个整数?