在这个汇编代码中,“xorl”和“imul”是做啥用的?可以转成c代码吗?

Posted

技术标签:

【中文标题】在这个汇编代码中,“xorl”和“imul”是做啥用的?可以转成c代码吗?【英文标题】:What is 'xorl' and 'imul' are used for in this assembly code? Can it be converted to c Code?在这个汇编代码中,“xorl”和“imul”是做什么用的?可以转成c代码吗? 【发布时间】:2021-12-29 08:58:26 【问题描述】:
int func2(int x, int y)
    
movl 4(%esp), %eax          
addl 8(%esp), %eax            
xorl $255,%eax            
imul 8(%esp), %eax            
sall $4, eax

    

【问题讨论】:

请勿发布代码图片。编辑您的问题并将代码作为文本(格式正确)放回。 不确定我是否理解有关这些操作“用于”什么的问题。 xorl 执行异或,imul 执行整数乘法。如果您真的想知道这些操作的最终目的是什么,那是任何人的猜测。 【参考方案1】:

这个函数对应的C代码是这样的

int func2(int x, int y)

    int eax;

    eax = x;
    eax += y;
    eax ^= 0xff;
    eax *= y;
    eax <<= 4;

    return (eax);

那应该做什么......我不知道。

【讨论】:

以上是关于在这个汇编代码中,“xorl”和“imul”是做啥用的?可以转成c代码吗?的主要内容,如果未能解决你的问题,请参考以下文章

ASM ROR 是做啥的?

这个基数排序代码中的最后一个“for”循环是做啥的?

CSS:这个星号 (*) 是做啥的?

代码是做啥的?这个语法是啥:list(board[r,:])? [关闭]

这个使用 PHP $$ 语法的循环是做啥的?

渠道是做啥用的?