请教一道ARM汇编的题目?

发布于 2022-09-04 08:00:04 字数 284 浏览 24 评论 0

有以下函数func用于处理长整形变量V,请详细分析程序,解释算法的计算过程和程序的功能,并给出在ARM系统中实现相同功能的对应的汇编程序

unsigned long func(unsigned long v)
{ 
    unsigned long t;
    t=v^((v<<16)|(v>>16));
    t&=~0xff0000;
    v=(v<<24)|(v>>8)
    return v^(t>>8);
}

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

影子的影子 2022-09-11 08:00:04

函数就是一系列的位级别的逻辑操作,最后函数返回等于接收的变量v。
没有arm的机器,AT&T的32位Intel反汇编表示如下:

0804841d <func>:
 804841d:    55                       push   %ebp
 804841e:    89 e5                    mov    %esp,%ebp
 8048420:    83 ec 10                 sub    $0x10,%esp
 8048423:    8b 45 08                 mov    0x8(%ebp),%eax
 8048426:    c1 c8 10                 ror    $0x10,%eax
 8048429:    33 45 08                 xor    0x8(%ebp),%eax
 804842c:    89 45 fc                 mov    %eax,-0x4(%ebp)
 804842f:    81 65 fc ff ff 00 ff     andl   $0xff00ffff,-0x4(%ebp)
 8048436:    c1 4d 08 08              rorl   $0x8,0x8(%ebp)
 804843a:    8b 45 fc                 mov    -0x4(%ebp),%eax
 804843d:    c1 e8 08                 shr    $0x8,%eax
 8048440:    33 45 08                 xor    0x8(%ebp),%eax
 8048443:    c9                       leave  
 8048444:    c3                       ret    

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文