2012-07-02 2 views
0

Я пытаюсь разделить целочисленный тип 64 бит на 32-битный, и я использую RVDS 4.1 в качестве инструментальной цепочки.Целочисленное деление с Cortex-M0 под RVDS

У Cortex-M0 нет аппаратного делителя, так что я могу сделать операцию ниже? Если да, то как?

unsigned long int b = 2590202; 
unsigned long long int a = 953502716552001ULL; 
unsigned long long int result; 
result = a/b; 

ответ

1

Компилятор компилировать операцию деления как вызов подпрограммы библиотеки, которая выполняет 64-битный алгоритм разделения программного обеспечения. Возможно, вам придется также рассказать компилятору о связи с математической библиотекой, у меня нет опыта работы с RVDS.

Почему бы не попробовать составить код самостоятельно и посмотреть, что произойдет? Попробуйте разобрать полученный машинный код, чтобы увидеть, как он работает: он должен быть очень образованным.

+1

RVDS выполняет эту операцию на Cortex-M0 с использованием встроенных функций библиотеки, например. "__aeabi_uldivmod." Я разобрался, тогда я увидел ветвь этой функции, чтобы удовлетворить оператор деления. – albin

Смежные вопросы