|
|
  |
Прибавить константу к регистру! |
|
|
|
Mar 10 2008, 18:46
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Никакого сравнения с ассемблером ибм370 Вы, видимо, не сталкивались с системой комманд IBM360/370 - там все в порядке, не путайте с I80x86. Цитата Попробуйте написать swab @20(r1) - обмен байтами по адресу, лежащему по адресу r1+20, на аврке или другом каком мк и почувствуйте разницу. А надо ли такое в реальной жизни? Ведь вся идея RISC построенна на уходе от комманд, которые надо выполнять при помощи каких-то микропрограмм. Цитата но команда CBR делает побитное И регистра с инвертированной константой, а команда ANDI делает побитное И регистра с НЕинвертированной константой. Комманда CBR требует в битовом представлении именно инвертированной маски - это ANDI в чистом виде, просто назван по другому.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 10 2008, 19:18
|

Местный
  
Группа: Участник*
Сообщений: 323
Регистрация: 11-02-08
Пользователь №: 34 947

|
Цитата(=GM= @ Mar 10 2008, 17:01)  Не на что там смотреть. Т.е. хотите сказать что не почерпнуЛИ для себя ничего нового касаемо реализаций RTOS? P.S. Если будеТЕ отвечать, то я бы попросил Вас тоже без панибратства и уж тем более хамства (хотя даже если и почерпнуЛИ, но никогда не признаеТЕ этого..Да?) А то что касаемо команды CBR , то это действительно как бы встроенный макрос, но это не суть важно, важно то, что если с помощью препроцессора и аппарата макросов можно сделать из ограниченного набора команд почти любую команду, то тогда зачем скулить (это я не Вам, а другим) о том, что эта команда не реализована в железе? Разве когда пишите программы это важно, что препроцессор или компилятор преобразует вашу команду в другую эквивалентную ей?
Сообщение отредактировал Дон Амброзио - Mar 10 2008, 19:20
--------------------
После устранения бага в программе она стала работать....хуже
|
|
|
|
|
Mar 10 2008, 20:43
|

Профессионал
    
Группа: Модераторы
Сообщений: 1 951
Регистрация: 27-08-04
Из: Санкт-Петербург
Пользователь №: 555

|
Цитата(Дон Амброзио @ Mar 10 2008, 22:18)  А то что касаемо команды CBR , то это действительно как бы встроенный макрос, но это не суть важно, важно то, что если с помощью препроцессора и аппарата макросов можно сделать из ограниченного набора команд почти любую команду, то тогда зачем скулить (это я не Вам, а другим) о том, что эта команда не реализована в железе? Разве когда пишите программы это важно, что препроцессор или компилятор преобразует вашу команду в другую эквивалентную ей? Это не всегда эквивалентные команды! Например при написании и использовании макросов addi и adci надо знать что флаги эти команды будут устанавливать не так как при обычном сложении. "Встроеные макросы" тоже имеют особенности например условные переходы (типа беззнакового больше С и Z сброшены такого перехода нет и инструкция реально противоположая та же что и беззноакове меньше С установелен) при которых надо менять операнды в предыдущей команде cmp или sub, IMHO вообще лучше не использовать.
|
|
|
|
|
Mar 10 2008, 23:29
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Rst7 @ Mar 10 2008, 18:46)  Вы, видимо, не сталкивались с системой команд IBM360/370 - там все в порядке, не путайте с I80x86 Ну почему, сталкивался. Для IBM-370, вернее IСL (английский вариант IBMки, стоял в министерстве морфлота) писал немного, в частности, подпрограммы вывода на планшетный графопостроитель и стыковал их с фортрановскими. Один оператор BALR *,14 чего стоит. Переход на ассемблер pdp-11 был как глоток свежего воздуха, поверьте. Цитата(Rst7 @ Mar 10 2008, 18:46)  А надо ли такое в реальной жизни? Ведь вся идея RISC построена на уходе от команд, которые надо выполнять при помощи каких-то микропрограмм Не пойму, почему вы говорите о микропрограммах. Так делалось раньше, сейчас можно сделать по-иному, ну и что? Суть состоит не в том, как это было реализовано, а в том, что режимы адресации, применённые в pdp-11, упрощают программирование, делают его прозрачным. Вот, например, команда JMP @20(R1) может быть легко применена в операторе switch, что на си, что на ассемблере. И так во всём. Жаль, что всё ушло безвозвратно. Не хотите работать с командой swab @20(r1), попробуйте реализовать команду JMP @20(R1) на аврке. Цитата(Rst7 @ Mar 10 2008, 18:46)  Команда CBR требует в битовом представлении именно инвертированной маски - это ANDI в чистом виде, просто назван по другому Никто не спорит, что код команды один и тот же. Но константа в одном случае инвертирована, а в другом - нет. Сравните сами. Код cbr r16,0b00010011 andi r16,0b00010011 В первом варианте сбросятся биты 0, 1 и 4, а во втором эти биты останутся. Сделано для удобочитаемости кода и только. Цитата(Дон Амброзио @ Mar 10 2008, 19:18)  Т.е. хотите сказать что не почерпнули для себя ничего нового касаемо реализаций RTOS? P.S. Если будеТЕ отвечать, то я бы попросил Вас тоже без панибратства и уж тем более хамства (хотя даже если и почерпнуЛИ, но никогда не признаеТЕ этого..Да?) К сожалению, я не специалист по ртос, так что ничего там не почерпнул, увы. Посмотрел я ветку по диагонали, и честно говоря не понял, зачем вы меня туда посылали. Я заметил, что вы так частенько делаете, только цель мне непонятна. Хотите флейма? По-моему, так можно достичь прямо противоположного результата, нормальный оппонент вскоре перестанет с вами общаться. Или вы подрабатываете на форумах, поднимая посещаемость и рейтинг, э? Кстати, пытался я вызнать у коллег здесь на форуме, зачем нужна ос/ртос в микроконтроллерах, даже ветку такую заводил...но ответы меня не убедили. И, пожалуйста, не пишите P.S., если нет подписи, это моветон. P.S. буквально означает "после подписи", использовалось ещё в Древнем Риме, когда письмо было написано и подписано, и вдруг понадобилось что-то добавить.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 11 2008, 06:36
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Вот, например, команда JMP @20(R1) может быть легко применена в операторе switch, что на си, что на ассемблере. Да не спорит никто. Просто идеология RISC подразумевает, что 20 процентов комманд выполняется 80 процентов времени. Посему остальные 20% лучше не реализовывать в аппаратуре, а заменить несколькими коммандами Код lds zl,label lds zh,label+1 add zl,r16 adc zh,r17 ijmp результирующий выигрыш - больше, как в быстродействии, так и в потреблении, площади кристалла и т.д. И писать для RISC поэтому лучше на ЯВУ, дабы компилятор сам выполнил за вас работу по изготовлению аналогов CISC-комманд.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 11 2008, 13:26
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Rst7 @ Mar 11 2008, 06:36)  Просто идеология RISC подразумевает, что 20 процентов команд выполняется 80 процентов времени. Посему остальные 20% лучше не реализовывать в аппаратуре, а заменить несколькими командами Не хочу спорить, но при чём здесь риск или циск? Всегда так было и наверное так будет, что для большинства обозримых задач какое-то количество команд занимает львиную долю процессорного времени. Не знаю точного определения риск или сиск и вообще трудно, а может и невозможно, найти чистый риск-МК, но по-моему задача перед проектировщиком риск-машины должна стоять такая: определить минимальное количество элементарных команд, выполняющихся за единый квант времени, чтобы любые операции можно бы было выполнить, используя комбинации из этого минимального набора. Ну а если у проектировщика остались неиспользованные площади кристалла, то грех не добавить дополнительных команд или функций, памяти, периферии, ещё какой-нибудь фичи... Что мы и наблюдаем в реальном мире. По аналогии с логическими схемами - любую сколь угодно сложную комбинаторную схему можно построить на комбинации схем 2И-НЕ, а можно на комбинации 2ИЛИ-НЕ. А проектировщики вроде бы реально используют базис 4И-НЕ... Цитата(Rst7 @ Mar 11 2008, 06:36)  Код lds zl,label lds zh,label+1 add zl,r16 adc zh,r17 ijmp Немного вы недопоняли, и не так сделали. Здесь вы реализовали команду JMP label(R1), которая прыгает на адрес (label+R1), а надо было реализовать команду JMP @label(R1), которая прыгает по адресу, который лежит по адресу (label+R1). Рассматривайте команду JMP просто как специфическую команду MOV, которая заносит операнд в программный счетчик РС. Хотя можно было бы использовать и MOV @label(R1),РС. Вот это гибкость! Отвлекусь. Даже простой вопрос о расположении операндов в pdp-11 решён идеально. Портится второй операнд. Почему в аврках и интелах портится первый операнд? Откуда спрашивается арабское письмо возникло? Или вот, опять о пространстве ввода-вывода. Атмелу этого пространства уже не хватает, поневоле приходится использовать in/out в комбинации с lds/sts. Как ни крути, а для программиста это лишняя головная боль и возможный источник ошибок. Будь пространство ввода-вывода сразу отмаплено на память как в pdp-11, было бы гораздо проще.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 11 2008, 14:19
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Немного вы недопоняли, и не так сделали. Здесь вы реализовали команду JMP label(R1), которая прыгает на адрес (label+R1), а надо было реализовать команду JMP @label(R1), которая прыгает по адресу, который лежит по адресу (label+R1). Да, пардон. Хотя на суть ответа это не влияет. Цитата Отвлекусь. Даже простой вопрос о расположении операндов в pdp-11 решён идеально. Портится второй операнд. Почему в аврках и интелах портится первый операнд? Откуда спрашивается арабское письмо возникло? Вам написание y=f(x) не жмет? Не возникает желание всю математическую нотацию переделать? На самом деле - это только вопрос привычки. Лично мне при работе первый раз одновременно на двух процессорах, у одного асм слева-направо, у другого справа-налево, понадобилось где-то 3 дня, чтобы привыкнуть, больше я никогда вопрос направления не обсуждал и не испытывал никаких неудобств.
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 11 2008, 15:24
|

Просто Che
    
Группа: Свой
Сообщений: 1 567
Регистрация: 22-05-07
Из: ExUSSR
Пользователь №: 27 881

|
Цитата(=GM= @ Mar 11 2008, 01:29)  И, пожалуйста, не пишите P.S., если нет подписи, это моветон. P.S. буквально означает "после подписи", использовалось ещё в Древнем Риме, когда письмо было написано и подписано, и вдруг понадобилось что-то добавить.  забавно: всегда считалось, что post scriptum означает «после написанного». Об этом и академические словари говорят. Так что p.s. в конце топика без подписи очень даже уместнен. Постскриптум
|
|
|
|
|
Mar 11 2008, 17:22
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Rst7 @ Mar 11 2008, 14:19)  Да, пардон. Хотя на суть ответа это не влияет Не знаю, какую суть имели в виду вы, но моя суть ответа такая. То, что можно написать на pdp-11 одной командой, уложится в десяток команд аврки. Вот где настоящая красота и компактность кода. Цитата(Rst7 @ Mar 11 2008, 14:19)  Вам написание y=f(x) не жмет? Не возникает желание всю математическую нотацию переделать? Вот ё-маё, ставите с ног на голову! Я читаю правильно слева-направо "игрек равняется эф от икс", а вот в вашем случае надо бы писать f(x)=y. Ещё можно попробовать некоторые слова в предложении писать справа-налево, для разнообразия. Попробуйте "ьтасипан" некоторые слова вот так, понятнее стало? Да, можно привыкнуть, не вопрос, но это ж неправильно. Или всё читаем слева-направо, или всё слева-направо. Зачем микс делать? Если это нужно компилеру, хотя вряд ли, пусть он переворачивает сам аргументы у себя внутри, а человеку надо создать удобство восприятия, как он привык. Слева, так слева. Справа, так справа. Не пойму, что тут упираться, вопрос простой до неприличия. Не ответили на мысль о пространстве ввода-вывода. Атмелу этого пространства уже не хватает, поневоле приходится использовать in/out в комбинации с lds/sts. Как ни крути, а для программиста это лишняя головная боль и возможный источник ошибок. Будь пространство ввода-вывода сразу отмаплено на память как в pdp-11, было бы гораздо проще. И вот вы видите, вроде бы всё одно и тоже, и привыкнуть можно, но там чуток не так, там чуток не эдак, и вместо красоты получается безобразный монстр. В одном случае сказочно красивый ассемблер для pdp-11, в другом случае кривой атмеловский ассемблер. И заметьте, это один из самых лучших на сегодняшний день, не будем вспоминать 8051 или пик...
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 11 2008, 17:30
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата Я читаю правильно слева-направо "игрек равняется эф от икс", а вот в вашем случае надо бы писать f(x)=y. Это читаем мы так. А обозначает это то, что множеству значений x ставится в соответствие множество значений y. Заметьте, из значения x следует значение y, а не наоборот. Цитата То, что можно написать на pdp-11 одной командой, уложится в десяток команд аврки. Сколько лишней аппаратуры потребуется для реализации этой красивой комманды? Цитата Не пойму, что тут упираться, вопрос простой до безобразия. Упираетесь Вы. Я утверждаю, что разницы нет вообще, есть привычка, не более!
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 11 2008, 17:46
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(Baser @ Mar 11 2008, 15:24)   забавно: всегда считалось, что post scriptum означает «после написанного». Об этом и академические словари говорят. Так что p.s. в конце топика без подписи очень даже уместнен. ПостскриптумНу а голова у нас на что дадена? Не только же есть в неё? Такое впечатление, что никто обычных писем не пишет и не подписывается. Раньше, до середины 20 века не было компьютеров, а ещё раньше и бумага была дорогая. Ну написали вы письмо, подписались, ещё что-то в голову вступило, ну перепишите на новом листе, ан нет. Ставили П.С., и писали, что хотели добавить. Опять расписывались. Это разумно и практично. Отвлекусь. Есть такая поговорка: "исключение подтверждает правило", это калька с латинского. Много лет думал, как же исключение может подтвердить правило. Лет 8 назад узнал, что это был неправильный перевод с латинского. Правильно так: "исключением поверяется правило". Т.е. правило работает там и тогда, где и когда не возникает исключения из этого правила.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 11 2008, 18:18
|
дятел
    
Группа: Свой
Сообщений: 1 681
Регистрация: 13-05-06
Из: Питер
Пользователь №: 17 065

|
Цитата(=GM= @ Mar 11 2008, 20:22)  Не ответили на мысль о пространстве ввода-вывода. Атмелу этого пространства уже не хватает, поневоле приходится использовать in/out в комбинации с lds/sts. Как ни крути, а для программиста это лишняя головная боль и возможный источник ошибок. Будь пространство ввода-вывода сразу отмаплено на память как в pdp-11, было бы гораздо проще. Неправильно расставленны акценты, ИМХО, lds/sts это есть стандартный доступ к памяти и регистрам в частности, и этот доступ двухтактовый, НО, производитель позаботился о том чтобы некоторая часть регистров была доступна с однотактовыми in/out, но при этом конечно за нас решил в каком чипе и к каким регистрам можно доступаться однотактово...
|
|
|
|
|
Mar 11 2008, 21:35
|

Ambidexter
    
Группа: Свой
Сообщений: 1 589
Регистрация: 22-06-06
Из: Oxford, UK
Пользователь №: 18 282

|
Цитата(singlskv @ Mar 11 2008, 18:18)  Неправильно расставлены акценты, ИМХО, lds/sts это есть стандартный доступ к памяти Ну, положим, вы их сами смещаете(:-). Стандартный, это как? А ld/st тогда какой? Нестандартный? Цитата(singlskv @ Mar 11 2008, 18:18)  ... НО, производитель позаботился о том чтобы некоторая часть регистров была доступна с однотактовыми in/out, но при этом конечно за нас решил в каком чипе и к каким регистрам можно доступаться однотактово... Ну и в результате получили некоторую кривизну. Вот и приходится часть регистров инициировать с помощью in/out, а часть с помощью lds/sts, хоть они и двухсловные, а что делать? Ладно, это всё ностальгический флейм, немного пар выпустили... Я на неделю в отпуск собрался, хочу посетить столицу Священной Римской империи, не удивляйтесь, если не буду отвечать.
--------------------
Делай сразу хорошо, плохо само получится
|
|
|
|
|
Mar 12 2008, 08:06
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Складывается впечатление, господа, что =GM= и Rst7 взялись создавать платформы и спорят чья лучше  (никого не хочу обидеть). А разница то какая? Или кто-то в состояние повлиять на уже существующие вещи? Имеем то, что имеем и заморачиваться над субьективным качеством, сетовать на неудобства и восхвалять (весьма навязчиво) удобства - это на мой взгляд отвлекаться от реальной работы. Вы предполагали какое-нибудь резюме этой теме? Или кто-то обопрётся на эту тему при выборе платформы для разработки? Скорее всего это пустой флейм, пусть даже и с весьма умной подоплёкой.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|