Как объявить вектор данных - PullRequest
0 голосов
/ 06 июня 2019

Я делаю программу ассемблера в ArmV8, которая использует несколько констант (в плавающей запятой), которые поэтому умножаются на определенное значение (также в плавающей запятой). Для этого я хочу разработать цикл, который просто работал с вектором, который содержал константы, увеличивая адрес каждый раз для доступа к следующей константе, умножая ее и так далее, вместо того, чтобы повторять одну и ту же операцию снова и снова. Хотя я не уверен, как объявить этот вектор непосредственно в программе сборки.

В ArmV7 я сделал что-то подобное для достижения этой цели:

Aux         DCD     0x7F800000, 0x007FFFFF, 0x7FFFFFFF

Но это работает только для слов в ArmV7, и я работал с двойниками в ArmV8.

1 Ответ

1 голос
/ 07 июня 2019

Вы не объявляете вектор, все что вам здесь нужно, это буквальная константа в источнике. Предполагается, что Arm Compiler 6, 7.21 DCQ и DCQU

Директива DCQ выделяет один или несколько восьмибайтовых блоков памяти, выравнивается по четырехбайтовым границам и определяет начальное время выполнения содержимое памяти. DCQU то же самое, за исключением того, что память выравнивание произвольно.

Поскольку память не типизирована, нет никаких причин, кроме читабельности, не использовать DCD по-прежнему. Если ваш литерал с плавающей точкой, вы также можете использовать DCFD или DCFS.

...