Как обрабатываются подразделения в PIC18 ISA - PullRequest
1 голос
/ 13 сентября 2010

Вид расширения Преобразование в ASCII в C , мне было интересно, как именно обрабатываются деления на PIC18X.

Если я выполняю операцию DIV, сколько инструкций компилятор интерпретирует как? Сколько тактов потребуется для завершения операции? Зависит ли количество тактов от моего дивиденда, делителя или обоих?

В качестве своего рода менее важного дополнительного вопроса: Каким был первый ЦП, включающий выделенное аппаратное обеспечение деления?

Ответы [ 3 ]

1 голос
/ 13 сентября 2010

Зависит от переменной длины.Проверьте веб-страницу Microchip: AN614

Из AN614 ...

        Clocks
FXD3232S 630 32 bit/32 bit -> 32.32 signed fixed point divide
FXD3232U 683 32 bit/32 bit -> 32.32 unsigned fixed point divide
FXD3231U 588 32 bit/31 bit -> 32.31 unsigned fixed point divide
FXD3131U 579 31 bit/31 bit -> 31.31 unsigned fixed point divide
FXD3224S 529 32 bit/24 bit -> 32.24 signed fixed point divide
FXD3224U 584 32 bit/24 bit -> 32.24 unsigned fixed point divide
FXD3223U 489 32 bit/23 bit -> 32.23 unsigned fixed point divide
FXD3123U 481 31 bit/23 bit -> 31.23 unsigned fixed point divide

Так что для 32-битного / 32-битного необходимо 630 тактов процессора.

1 голос
/ 13 сентября 2010

В программировании в наши дни расшатываются неряшливо, но я все еще чувствую, что они делают много микроконтроллерных проектов. С картинкой у вас уже есть одна рука и одна нога, связанные за спиной, чтобы начать делить, это страшно. Я пытался сделать то же самое (от двоичного к десятичному ASCII) на PIC16, и это было больно. Так что мой доморощенный спидометр был либо в шестнадцатеричном, либо я сделал уродливое дерево «если тогда» Бесплатные компиляторы Си для фото не были доступны в то время.

Во всяком случае, у 8086 был разрыв. 8085 не кажется. Но ENIAC сделал, и квадратный корень это появляется. Теперь это считается процессором, чтобы соответствовать вашему требованию «первый процессор с делением»? Механические машины, которые предшествовали ENIAC, также могли бы разделиться. У PDP-11, похоже, не было. Не вижу ни одного на z80 / 8080, нет на 6502. 6800 нет, но 68000 да. 8051 да, что удивительно, и 8031. У некоторых из более старых, 6502, 8088/86, которые я знаю, в частности, была математика BCD. Таким образом, вместо того, чтобы делать свою математику в двоичном формате, а затем пытаться выполнить кучу деления на 10 с, чтобы поместить десятичный десятичный формат ascii, вы делаете свою математику в bcd с самого начала, тогда это скорее преобразование в гекс без верхнего буквы, сдвиг вправо 4 и с 0xF добавить 0x30, а с 0xF добавить 0x30, повторить.

1 голос
/ 13 сентября 2010

Как правило, число циклов для работы DIV варьируется (таблица данных обычно предоставляет максимальный цикл #). Приличный компилятор на самом деле не заботится о том, сколько циклов занимает инструкция, но вместо этого выполняет различную оптимизацию (т. Е. Деление на степени 2 обрабатывается как сдвиги).

Возможно, вы захотите проверить на этом сайте для различных процедур для PIC.

...