Если я правильно понимаю, поскольку инструкции ARM имеют длину 32 бита, они могут содержать только столько битов непосредственного значения.То, что я пытаюсь сделать, это vmov.f32 s0, #0.0
, и я получаю ошибку "immediate out of range
".Странно то, что когда я использую непосредственное значение, скажем, #0.5
или #0.25
(все очень аккуратно представлено в двоичном виде), мой код компилируется.Когда я пытаюсь присвоить немедленное значение #0.1
, я получаю ошибку "garbage after following instruction
", которая имеет смысл, если она пытается представить эти значения с большим количеством битов, которые могут вписаться в инструкцию ARM.Случай #0.0
- единственный, где я получаю "immediate out of range
", поэтому я думаю, что это может быть ошибкой, если нет других объяснений.
Кто-нибудь знает, как назначить немедленное значение#0.0
в регистр с плавающей запятой из одного слова без необходимости преобразовывать его из другого места?Если есть веская причина, по которой это не сработает, пожалуйста, дайте мне знать.Я использую GNU ассемблер с инструментом сборки Android NDK.
Обновление : vmov.f32 d0, #0.0
работает .Это имеет все меньше и меньше смысла.
Обновление 2 : Это тоже не работает: vmov.s32 s0, #0