【问题标题】:What VST/VLD actually do?VST/VLD 实际上是做什么的?
【发布时间】:2016-07-15 02:12:06
【问题描述】:

下面两行代码究竟会发生什么?

vst1.64 {d8, d9, d10, d11}, [r4:128]!
vst1.64 {d12, d13, d14, d15}, [r4:128]

更一般地说,我想知道 VST 和 VLD 自从 doc 以来做了什么: ARM InfoCenter 对我来说不是很清楚。

【问题讨论】:

    标签: assembly arm neon


    【解决方案1】:
    vst1.64 {d8, d9, d10, d11}, [r4:128]!
    

    该指令将寄存器 d8、d9、d10 和 d11 的内容存储在 r4 指向的位置。提示此位置与 128 位边界对齐。之后 r4 将增加存储的字节数。在您的情况下,这些将是 32(四乘以 8 个字节)

    vst1.64 {d12, d13, d14, d15}, [r4:128]
    

    该指令与上述相同,但存储 d12、d13、d14 和 d15。 R4 不会增加,而是留在原处。

    【讨论】:

    • 值得一提的是,寄存器列表的有效模式有严格的限制。从链接的文档中,它们必须是 4 个连续的寄存器,或者步长为 2。所以你不能像 vst1.64 {d9, d8, d11, d10}, [dst] 这样的商店免费洗牌。我假设机器编码只对第一个寄存器进行编码,并且为 stride=1 或 2 多编码一位。
    • @Nils Pipenbrinch 谢谢。但是请您说得更清楚些好吗?例如:d8,d9,d10,d11的内容如何存储到r4,.64后跟vst1是什么意思?
    • 这不会存储到r4,而是存储到地址r4的内存位置。 .64 是元素大小。对于vst1,它不会产生太大影响(在某些情况下对齐和字节序除外),但它会对vst2vst3vst4 产生更大的影响,同时在存储到内存之前对结构进行解交织。
    猜你喜欢
    • 2011-03-11
    • 2010-11-26
    • 2015-06-23
    • 2017-12-26
    • 2016-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多