簡體   English   中英

向AArch64中的堆棧壓入並彈出一個完整的128位NEON寄存器

[英]Push and pop a full 128-bit NEON register to/from the stack in AArch64

我在AArch64中找到了如何使用STP / LDP推入/彈出一對64位寄存器的文檔。 我知道他們可以將128位NEON浮點寄存器的低64位作為參數,例如:

@ Push D0, D1
STP D0, D1, [SP, #-16]!
@ Pop D0, D1
LDP D0, D1, [SP], #16

但是,如何在AArch64中壓入/彈出NEON浮點寄存器的完整128位? 請問以下工作? (我的疑問是它不會減少/增加SP寄存器)

STR Q0, [SP, #-16]!
LDR Q0, [SP], #16

內存訪問的簡要說明在此處( 浮點和NEON標量加載和存儲

STR Q0, [sp, #-16]!      // Save 128b (16B)
STP Q0, Q1, [sp, #-32]!  // Save 2x128b (2 x 16B = 32B)


Qx寄存器也可以作為NEON / FTP Vx寄存器訪問。
NEON和浮點架構
向量寄存器大小

st1 {v0.2d}, [sp]  // Save Q0 (V0 is 'vector' alias)


更實際的用法是保留所有“被調用方保存的寄存器”(v8-v15)

sub sp, sp, #func_stack_size
st1 { v8.2d,  v9.2d, v10.2d, v11.2d}, [sp], #64
st1 {v12.2d, v13.2d, v14.2d, v15.2d}, [sp], #64

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM