Цитата(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, было бы гораздо проще.