汇编代码到C实践

路加福音12

在此处输入图片说明

所以我在做下面的问题,使汇编代码变成C(汇编代码还是很新的)假设您知道,当将具有原型long解码器4(long x,long y,long z)的函数编译为汇编代码时,代码的主体如下

addq %rsi, %rdi
imulq %rdx, %rdi    
movq %rdi, %rax    
sarq $15, %rax    
salq $31, %rax    
andq %rdi, %rax    
ret

参数x,y和z传递到寄存器%rdi,%rsi和%rdx。该代码将返回值存储在寄存器%rax中。

我对代码的解释方式如下:

long w =(x+y)*z;
w=(w>>15);
w=(<<31);
return x&w;

请查看我的代码,请保持友好!

WIN_SOM_LIV

是的,您的解释是正确的。只是添加。该代码也可以是-

addq %rsi, %rdi   => x = x + y
imulq %rdx, %rdi  => x = x*z
movq %rdi, %rax   => w = x
sarq $15, %rax    => w = w >> 15
salq $31, %rax    => w = w << 31
andq %rdi, %rax   => w = w & x
ret               => return w

+++++++++++++++++++++++++++++++++++++++++++++++++++

long w;
x=(x+y)*z; 
w=((x>>15)<<31); 
return x&w;  

这完全取决于编译器决定如何将其转换为asm,有时还添加了自己的优化。如果需要,您不能将其最初完全转换为C代码。

但是你可以做相反的事情。从C文件生成一个asm文件。

gcc -O2 -S -c file.c

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

汇编代码到C实践

来自分类Dev

C到汇编代码-这意味着什么

来自分类Dev

无法将参数从C传递到汇编代码

来自分类Dev

*在实践中*哪个更快:像样的C代码或像样的手写汇编器?

来自分类Dev

*在实践中*哪个更快:像样的C代码或像样的手写汇编器?

来自分类Dev

汇编与C代码比较

来自分类Dev

从汇编到C代码

来自分类Dev

汇编 8086 代码到 8088 兼容转换 - 汇编错误

来自分类Dev

我的C函数的汇编代码

来自分类Dev

结合C和汇编代码

来自分类Dev

分析崩溃的汇编C ++代码

来自分类Dev

汇编到C代码的跳转

来自分类Dev

从C ++调用汇编代码

来自分类Dev

C语言中的汇编代码

来自分类Dev

汇编中的C循环代码

来自分类Dev

简单的汇编代码到Java的转换

来自分类Dev

从C到汇编的重写问题

来自分类Dev

给定汇编代码,找到缺少的C代码?

来自分类Dev

我尝试理解[c代码->汇编]代码

来自分类Dev

将多个C代码编译到一个汇编文件中

来自分类Dev

将变量从 C 代码传递到汇编并返回的正确语法是什么?

来自分类Dev

C代码调用汇编:无限循环

来自分类Dev

C ++ CodeBlocks反汇编;方式太多的代码?

来自分类Dev

了解C语言中的汇编代码

来自分类Dev

使用代码进行C#符号汇编

来自分类Dev

从汇编反向工程优化的C代码

来自分类Dev

C struct完成功能的汇编代码

来自分类Dev

如何从C代码调用汇编函数?

来自分类Dev

从调用C代码汇编函数在linux