直接在多个说明中使用静态数据地址,还是将其移至寄存器中并使用它?

发布于 2025-02-02 00:27:21 字数 608 浏览 2 评论 0原文

考虑一下我在.rodata部分中都有一个数据表...现在在我的功能中,我想使用该数据表,3-4次...我有2个选项:

选项1(较少的代码尺寸):

 mov    rax, MY_DATA_TABLE
 vpbroadcastb zmm2, BYTE [rax+64]
 vpbroadcastb zmm3, BYTE [rax+128]
 vpbroadcastb zmm4, BYTE [rax+192]

选项2(更多的代码尺寸,但我认为性能更好(我认为延迟较少)):

 vpbroadcastb zmm2, BYTE [MY_DATA_TABLE+64]
 vpbroadcastb zmm3, BYTE [MY_DATA_TABLE+128]
 vpbroadcastb zmm4, BYTE [MY_DATA_TABLE+192]

哪一个更好?请注意,我不只是vpbroadcastb!我说的是一切...

我的数据表拥有256 x 16字节(对于0到255(包装字节))...不是256 x 64字节...

Consider that I have a data-table in .rodata section … Now in my function, I want to use that data-table, 3-4 times ... I have 2 options:

option 1 (less code-size):

 mov    rax, MY_DATA_TABLE
 vpbroadcastb zmm2, BYTE [rax+64]
 vpbroadcastb zmm3, BYTE [rax+128]
 vpbroadcastb zmm4, BYTE [rax+192]

option 2 (more code-size but I think better performance (less latency I think)):

 vpbroadcastb zmm2, BYTE [MY_DATA_TABLE+64]
 vpbroadcastb zmm3, BYTE [MY_DATA_TABLE+128]
 vpbroadcastb zmm4, BYTE [MY_DATA_TABLE+192]

Which one is better at all? Please attention that I don't talk about just vpbroadcastb !! I'm talking about everything ...

My data-table holds 256 x 16-byte (for 0 to 255 (packed byte)) ... it's not 256 x 64-byte ...

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

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

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文