根據「稍後在路上」的確切時間長短,如果它拒絕組裝(或鏈接),則可能會達到您可以加載多遠的限制。從some documentation:
標籤必須在當前指令的±1KB內的字邊界上對齊。
armasm的具有作爲用於MOV
,產生一個自動即時/文字加載適當的和通常確保文字保持通過適當地接近一個VLDR r, =const
pseudo-op。 GNU 爲似乎並不具備這一點,但只要您手動安排標籤足夠接近,無論使用哪種.double
或.word
定義數據生成相應的代碼:
data1: .double 0.774596669241483377
vldr.f64 d0, data1 @ UAL syntax for fldd
data2: .word 0xf43f7248
.word 0x3fe8c97e
vldr.f64 d1, data2
給出:
Disassembly of section .text:
00000000 <data1>:
0: f43f7248 .word 0xf43f7248
4: 3fe8c97e .word 0x3fe8c97e
8: ed1f0b04 vldr d0, [pc, #-16] ; 0 <data1>
0000000c <data2>:
c: f43f7248 .word 0xf43f7248
10: 3fe8c97e .word 0x3fe8c97e
14: ed1f1b04 vldr d1, [pc, #-16] ; c <data2>
這讓我懷疑另一個「看起來不起作用」的原因,因爲您的sqrt(3/5)
的值看起來相當錯誤。