-
- Энное время назад работал с NVCom-1. Там универсальное ядро MIPS. Там простейшие операции приходилось расписывать в несколько команд. Что точно не помню, но помню, что я просто зверел, кода писал код. Вроде с ветвлением были проблемы. И не только. - st256(01.09.2015 22:05)
- Б...! Ну нет в жизни совершенства. Захочешь 32-разрядную машину вместо 16-разрядной, так работа с ними, словно вырезание гландов в армии. - Крок(01.09.2015 22:09)
- Первое, что вспомнил. Там есть регистры общего назначения. Так самый первый из них всегда равен 0. Т.е. писать в него ничего нельзя. Зачем, спрашивается? А чтобы было удобно сравнивать с нулем другие РОНы... Ну не идиотизм ли это??? - st256(02.09.2015 09:31)
- это оченно и оченно удобно Zikon(268 знак., 02.09.2015 11:29)
- А ПИК, например, может сравнить с нулём любой из восьми тысяч регистров (за одну команду). - Крок(07.09.2015 13:48)
- мне легче написать лишнюю операция обнуления регистра и получить еще один в свое полное распоряжение. - st256(02.09.2015 14:24)
- И получить зависимость между командами, ну чтобы out-of-order лесом пошло? - LightElf(02.09.2015 15:51)
- Чаво-чаво??? - st256(02.09.2015 19:01)
- Обнуление регистра + последующее сравнение = зависимые операции, которые нельзя выполнить параллельно. Значит обнулять регистр придется заранее и ноль в нем хранить. Имеем
те же яйцыобнуленный регистр, тольков профильего еще и LightElf(78 знак., 03.09.2015 11:26)- Сравнение с нулем любого регистра или ячейки памяти - операция очень и очень простая. Для этой цели имеется специальная инструкция. А в ряде случаев даже и она не нужна, сравнение происходит автоматически при выполнении других инструкций. Или нет? - Bill(07.09.2015 16:47)
- Это всё-таки про RISC процессоры, а не контроллеры в первую очередь. Любая команда где операнд источник 0. Любая команда требующая операнда приёмника, но приёмник не требуется в дальнейшем. - загрузить константу(07.09.2015 20:08,
)
- Нулевой регистр может и другие цели иметь, например эмуляцию какого-нибудь режима адресации. Типа нет у проца абсолютной адресации, но есть косвенно-регистровая со смещением. Используем R0 и получаем то что надо. У той же PDP-11 не было LightElf(127 знак., 07.09.2015 19:01)
- Тут вы ошибаетесь. У PDP-11 была и абсолютная адресация, и непосредственная. Например: Bill(106 знак., 07.09.2015 19:10 - 19:16, ссылка, ссылка)
- А вы машинный код посмотрите у этой ассемблерной инструкции и удивитесь. Там будет (по памяти) что-то типа add (R7)+, @(R7)+ LightElf(32 знак., 08.09.2015 11:48 - 11:56)
- Вы оба правы. vmp(257 знак., 07.09.2015 21:40)
- Все так, но тем не менее, Bill(671 знак., 08.09.2015 07:06)
- Тут вы ошибаетесь. У PDP-11 была и абсолютная адресация, и непосредственная. Например: Bill(106 знак., 07.09.2015 19:10 - 19:16, ссылка, ссылка)
- Иногда бывает надо сравнить с нулём ячейку, которая была вычислена давно. Вот у ДСПИКов это можно сделать одной командой. - Крок(07.09.2015 18:11)
- У AVR, к примеру, это тоже можно сделать одной командой, TST называется. То же самое имеется и у STM8, только там мнемоника - TNZ. Можно еще много других примеров привести. - Bill(07.09.2015 18:27)
- Эта операция у АВРов применима ко всей памяти или только к регистрам? - Крок(07.09.2015 18:42)
- У AVR только к регистрам. Вообще все арифметические и логические операции в AVR применимы только к регистрам. Для работы с памятью имеются инструкции загрузки/сохранения, не более того. - Bill(07.09.2015 18:47)
- Вооот! А у пиков есть кусок памяти - 8к которая может быть операндом в арифметических операциях (далеко не во всех). В том числе обращение к каждому биту. Ну 8к - это может быть пижонство, а вот 64 РОНа было бы уместно. - Крок(07.09.2015 19:55)
- У меня есть опыт работы как с AVR, так и с PIC. Если говорить об AVR, то обычно в программе не требуется частого обращения к памяти, обычно хватает регистров. Кроме того, в AVR имеются различные методы адресации, что повышает эффективность Bill(554 знак., 08.09.2015 07:29)
- Если бы пико24дезигнеры не пожидились сделать программное слово в 32, а не в 24 бита, то и было бы как минимум 4096 (2^4 + 2^8) полноценных РОНов - MBedder(07.09.2015 19:59)
- Я вот думаю, может там чисто технологическая проблема - коммутировать РОНы. Просто по нагрузочной способности ключей нельзя сделать больше? - Крок(07.09.2015 20:04)
- Любые другие операции (включая некоторые арифметические/логические - ADD/C f {,WREG}, AND f {,WREG}, ASR f {,WREG}, BCLR/BSET f,#bit4, BTG f,#bit4 и т.п) с операндами в Near Memory (до 8191) ведь делаются, значит, на всю арифметику тупо не хватило MBedder(14 знак., 07.09.2015 20:18)
- Сэкономили память программ, мать их... - Крок(07.09.2015 21:37)
- Любые другие операции (включая некоторые арифметические/логические - ADD/C f {,WREG}, AND f {,WREG}, ASR f {,WREG}, BCLR/BSET f,#bit4, BTG f,#bit4 и т.п) с операндами в Near Memory (до 8191) ведь делаются, значит, на всю арифметику тупо не хватило MBedder(14 знак., 07.09.2015 20:18)
- Я вот думаю, может там чисто технологическая проблема - коммутировать РОНы. Просто по нагрузочной способности ключей нельзя сделать больше? - Крок(07.09.2015 20:04)
- Вооот! А у пиков есть кусок памяти - 8к которая может быть операндом в арифметических операциях (далеко не во всех). В том числе обращение к каждому биту. Ну 8к - это может быть пижонство, а вот 64 РОНа было бы уместно. - Крок(07.09.2015 19:55)
- У AVR только к регистрам. Вообще все арифметические и логические операции в AVR применимы только к регистрам. Для работы с памятью имеются инструкции загрузки/сохранения, не более того. - Bill(07.09.2015 18:47)
- Эта операция у АВРов применима ко всей памяти или только к регистрам? - Крок(07.09.2015 18:42)
- У AVR, к примеру, это тоже можно сделать одной командой, TST называется. То же самое имеется и у STM8, только там мнемоника - TNZ. Можно еще много других примеров привести. - Bill(07.09.2015 18:27)
- Аффтор хочет сравнить с нулем произвольную ячейку памяти при этом считается что состояние флага z когда создавалось значение в ячейке давно потеряно. Boвa(34 знак., 07.09.2015 17:57)
- Это всё-таки про RISC процессоры, а не контроллеры в первую очередь. Любая команда где операнд источник 0. Любая команда требующая операнда приёмника, но приёмник не требуется в дальнейшем. - загрузить константу(07.09.2015 20:08,
- Сие есть изврат. Boвa(66 знак., 07.09.2015 11:00)
- Вау! Я даже с ним не знаком. Как и Вы с ЦОС, где за лишний регистр иногда готов отдать все, что угодно. Знаете, что именно по причине нехватки регистров БПФ по основанию 2 часто получается быстрее, чем по основанию 4? - st256(03.09.2015 16:12)
- Хм, использовать MIPS для ЦОС - напоминает секас в гамаке на лыжах. - LightElf(03.09.2015 18:27)
- Для управления DSP ядрами самое то. Например, в NVCom. - st256(03.09.2015 18:31)
- Ну а зачем писать на асме код управления DSP ядрами? Пускай компилятор парится с регистрами. - LightElf(04.09.2015 12:25)
- DSP ядра в NVCom очень шустрые, мощные и их много. А управляющий проц - хилый. Вот и считайте - 8 РОНов на ядро это много или мало? - st256(04.09.2015 14:27)
- Для настройки ДМА 8 регистров хватает? :-)) - =AlexD=(04.09.2015 14:29)
- вот наверное единственное, что нужно писать на АСМе (и ни на чём другом) - код управления ДСП ядрами... - Крок(04.09.2015 12:43)
- DSP ядра в NVCom очень шустрые, мощные и их много. А управляющий проц - хилый. Вот и считайте - 8 РОНов на ядро это много или мало? - st256(04.09.2015 14:27)
- Ну а зачем писать на асме код управления DSP ядрами? Пускай компилятор парится с регистрами. - LightElf(04.09.2015 12:25)
- Для управления DSP ядрами самое то. Например, в NVCom. - st256(03.09.2015 18:31)
- Хм, использовать MIPS для ЦОС - напоминает секас в гамаке на лыжах. - LightElf(03.09.2015 18:27)
- Сравнение с нулем любого регистра или ячейки памяти - операция очень и очень простая. Для этой цели имеется специальная инструкция. А в ряде случаев даже и она не нужна, сравнение происходит автоматически при выполнении других инструкций. Или нет? - Bill(07.09.2015 16:47)
- Тупой он, процессор. - r31 AArch64(02.09.2015 23:03,
)
- Обнуление регистра + последующее сравнение = зависимые операции, которые нельзя выполнить параллельно. Значит обнулять регистр придется заранее и ноль в нем хранить. Имеем
- Чаво-чаво??? - st256(02.09.2015 19:01)
- И получить зависимость между командами, ну чтобы out-of-order лесом пошло? - LightElf(02.09.2015 15:51)
- А LR у ARM-ов не беспокоит? А аккумулятор у 8051? - LightElf(02.09.2015 10:15)
- Кто такой LR? Что-то я не обратил внимания на него при чтении. - Крок(02.09.2015 10:28)
- обычный РОН, но туда еще попадает аппаратно адрес возврата - st256(02.09.2015 10:36)
- Ну вот не изврат ли - сохранять адрес возврата в регистре, чтобы потом его в стек руками складывать? В каждой избушке свои погремушки. - LightElf(02.09.2015 13:02)
- можно и не складывать. А можно и сложить в стек весь регистровый файл. Не понял в чем изврат-то? - st256(02.09.2015 14:33)
- В том, что не сразу в стек складывается. А вот проверка на ноль - частая операция, почему бы не предусмотреть специальный нулевой регистр? - LightElf(02.09.2015 14:38)
- в ARM - регистр LR Zikon(447 знак., 02.09.2015 15:39)
- Вы чо, фанат MIPSа? А чем-нибудь приличным пользоваться пробовали? - st256(02.09.2015 14:44)
- Я вообще не фанат архитектур. Ничего особенно плохого в MIPS не вижу - известная архитектура, огромная installation base, масса всякого софта. Всяко лучше, чем велосипед изобретать. - LightElf(02.09.2015 14:52)
- Что-то со зрением? - st256(02.09.2015 19:02)
- Закусывай. - LightElf(03.09.2015 11:28)
- Что-то со зрением? - st256(02.09.2015 19:02)
- Я вообще не фанат архитектур. Ничего особенно плохого в MIPS не вижу - известная архитектура, огромная installation base, масса всякого софта. Всяко лучше, чем велосипед изобретать. - LightElf(02.09.2015 14:52)
- В том, что не сразу в стек складывается. А вот проверка на ноль - частая операция, почему бы не предусмотреть специальный нулевой регистр? - LightElf(02.09.2015 14:38)
- можно и не складывать. А можно и сложить в стек весь регистровый файл. Не понял в чем изврат-то? - st256(02.09.2015 14:33)
- Ну вот не изврат ли - сохранять адрес возврата в регистре, чтобы потом его в стек руками складывать? В каждой избушке свои погремушки. - LightElf(02.09.2015 13:02)
- обычный РОН, но туда еще попадает аппаратно адрес возврата - st256(02.09.2015 10:36)
- И чем Вам линковый регистр не угодил? А 8051 всегда был отстоем. - st256(02.09.2015 10:24)
- Ну как - отъедается регистр, которых вечно не хватает и все такое. А вот с моей кочки зрения во многих регистрах много печали при сохранении/восстановлении контекста задачи. - LightElf(03.09.2015 18:30)
- А с моей, их вечно не хватает - st256(03.09.2015 18:33)
- Ну как - отъедается регистр, которых вечно не хватает и все такое. А вот с моей кочки зрения во многих регистрах много печали при сохранении/восстановлении контекста задачи. - LightElf(03.09.2015 18:30)
- Кто такой LR? Что-то я не обратил внимания на него при чтении. - Крок(02.09.2015 10:28)
- это оченно и оченно удобно Zikon(268 знак., 02.09.2015 11:29)
- Первое, что вспомнил. Там есть регистры общего назначения. Так самый первый из них всегда равен 0. Т.е. писать в него ничего нельзя. Зачем, спрашивается? А чтобы было удобно сравнивать с нулем другие РОНы... Ну не идиотизм ли это??? - st256(02.09.2015 09:31)
- Б...! Ну нет в жизни совершенства. Захочешь 32-разрядную машину вместо 16-разрядной, так работа с ними, словно вырезание гландов в армии. - Крок(01.09.2015 22:09)
- Энное время назад работал с NVCom-1. Там универсальное ядро MIPS. Там простейшие операции приходилось расписывать в несколько команд. Что точно не помню, но помню, что я просто зверел, кода писал код. Вроде с ветвлением были проблемы. И не только. - st256(01.09.2015 22:05)