博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
在网上找到一个有用的macro
阅读量:5994 次
发布时间:2019-06-20

本文共 1682 字,大约阅读时间需要 5 分钟。

hot3.png

How about rather than counting down you keep a variable to count up? Like this:

.macro xxmov n, p1, cnt=0    .if (\cnt == 0)        xor %eax, %eax    .endif    .if (\cnt != \n)        movdqu \@*0x10(\p1), %xmm\@        xxmov \n, \p1, (\cnt + 1)    .endif.endm    xxmov 14, %rsi

Which generates:

0000000000000000 <.text>:   0:   31 c0                       xor    %eax,%eax   2:   f3 0f 6f 06                 movdqu (%rsi),%xmm0   6:   f3 0f 6f 4e 10              movdqu 0x10(%rsi),%xmm1   b:   f3 0f 6f 56 20              movdqu 0x20(%rsi),%xmm2  10:   f3 0f 6f 5e 30              movdqu 0x30(%rsi),%xmm3  15:   f3 0f 6f 66 40              movdqu 0x40(%rsi),%xmm4  1a:   f3 0f 6f 6e 50              movdqu 0x50(%rsi),%xmm5  1f:   f3 0f 6f 76 60              movdqu 0x60(%rsi),%xmm6  24:   f3 0f 6f 7e 70              movdqu 0x70(%rsi),%xmm7  29:   f3 44 0f 6f 86 80 00 00 00  movdqu 0x80(%rsi),%xmm8  32:   f3 44 0f 6f 8e 90 00 00 00  movdqu 0x90(%rsi),%xmm9  3b:   f3 44 0f 6f 96 a0 00 00 00  movdqu 0xa0(%rsi),%xmm10  44:   f3 44 0f 6f 9e b0 00 00 00  movdqu 0xb0(%rsi),%xmm11  4d:   f3 44 0f 6f a6 c0 00 00 00  movdqu 0xc0(%rsi),%xmm12  56:   f3 44 0f 6f ae d0 00 00 00  movdqu 0xd0(%rsi),%xmm13

Update: Oops, that only works for the first macro usage in the file. If you need to use it more than once in the same file, it looks like using the .altmacro syntax is the way to go (it can be turned off again with .noaltmacro):

.altmacro.macro xxmov n, p    .if (\n == 1)        xor %eax, %eax    .endif    .if (\n > 1)        xxmov %(\n - 1), \p    .endif    movdqu (\n - 1)*0x10 (%\p) , %xmm\n.endm    xxmov 4, rsi    xxmov 14, rsi

   

转载于:https://my.oschina.net/u/2601353/blog/613221

你可能感兴趣的文章
学点PYTHON基础的东东--数据结构,算法,设计模式---访问者模式
查看>>
[MySQL FAQ]系列 -- Too many open files
查看>>
TCP/IP模型各个层次的功能和协议
查看>>
C 游戏所要看的书
查看>>
Ehcache详细解读(转)
查看>>
UIImagePickerController本地化控件文字
查看>>
CSS3 页面跳转的动画效果
查看>>
Android中的跨进程通信方法实例及特点分析(二):ContentProvider
查看>>
POJ 2676/2918 数独(dfs)
查看>>
Linux kernel Panic 相关知识
查看>>
iOS 从相机或相册获取图片并裁剪
查看>>
ansilbe 入门001、ansible的介绍
查看>>
C++14介绍
查看>>
iOS-- 快速集成iOS基于RTMP的视频推流
查看>>
BZOJ1497: [NOI2006]最大获利[最小割 最大闭合子图]
查看>>
使用Ecplise git commit时出现"There are no stages files"
查看>>
Linux中变量#,#,@,0,0,1,2,2,*,$$,$?的含义
查看>>
C语言 · 核桃的数量
查看>>
第一百五十六节,封装库--JavaScript,延迟加载
查看>>
ssh: connect to host github.com port 22: Connection timed out
查看>>