День программиста

Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: День программиста

Сообщение Serg »

Ладно, будем считать, что это я не утерпел. :hehehe:
Сия программа состоит из одной команды:
JSR R7, -(R7) ; восьмиричный код 004747
Помещается в ячейку по адресу 0, работает так:
Это вызов подпрограммы по адресу, находящемуся в R7 (Program Counter), т.е. саму себя. При выполнении этого вызова автоматически заносится в стэк адрес возврата, т.е. 0 и указатель стека (R6) уменьшается на 1 (точнее на два т.к. ячейки по 2 байта). Стэк по дефолту находится в конце памяти и растёт в сторону нулевой ячейки. Соотв. при каждой итерации память будет заполнятся нулями с конца в начало. В конце концов в нулевой ячейке сия инструкция будет затёрта очередным нулём, который при очередной итерации исполнится как HALT.

P.S. из трёх курсов эту задачу решили только 5 студентов, из них 2 девушки. :)
Последний раз редактировалось Serg 17 сен 2013, 14:53, всего редактировалось 1 раз.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: День программиста

Сообщение Nick »

Вот, я же говрил, нужна индукция! :)
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: День программиста

Сообщение nkp »

UAVpilot писал(а):, из них 2 девушки.
может все таки им парни подсказали :hehehe:
Аватара пользователя
Nick
Мастер
Сообщения: 22776
Зарегистрирован: 23 ноя 2009, 16:45
Репутация: 1735
Заслуга: Developer
Откуда: Gatchina, Saint-Petersburg distr., Russia
Контактная информация:

Re: День программиста

Сообщение Nick »

А какой факультет / универ был?
А то у нас были и "такие" девушки :).
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: День программиста

Сообщение Serg »

nkp писал(а):может все таки им парни подсказали :hehehe:
Не, девчёнки реально сильны в программировании, сейчас одна в MS, другую в Google приглашали, результата пока не знаю.
Nick писал(а):А какой факультет / универ был?
Московский техникум электронных приборов.
По оснащению был покруче универов - любимчик министерства электронной промышленности СССР всётаки. :)
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: День программиста

Сообщение Сергей Саныч »

UAVpilot писал(а):JSR R7, (R7) ; восьмиричный код 004747
не совсем понял.
я тоже бродил вокруг JSR но до такого решения не дошел.
Разве 004747 не JSR R7, -(R7)? Но тогда в PC занесется содержимое ячейки 0 (код команды), а не сам 0, что приведет либо к ошибке перехода по нечетному адресу (в "больших" машинах, либо к переходу на адрес 004746 (в LSI-11 и аналогах). А если JSR R7, (R7) (004717), то занесется содержимое ячейки 2. Хотя, если туда заранее занести 0, то ...черт! должно заработать!
PS: не выходит каменный цветок. Стек будет двойками заполняться, а не нулями :(
Чудес не бывает. Бывают фокусы.
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: День программиста

Сообщение Serg »

Да, "JSR R7, -(R7)", у меня минус потерялся, поправил. Код 004747 правильный - много раз вбивал его с пульта.
Serg-tmn писал(а):Но тогда в PC занесется содержимое ячейки 0
Не занесётся, ибо это не команда MOV. Произойдёт именно передача управления на ячейку, адрес которой в R7 (за вычетом 1 слова).
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
ukr-sasha
Мастер
Сообщения: 3401
Зарегистрирован: 21 мар 2011, 07:47
Репутация: 2180
Настоящее имя: Украинец Александр Григорьевич
Откуда: Киев, Украина
Контактная информация:

Re: День программиста

Сообщение ukr-sasha »

Началось..... :D
Аватара пользователя
Serg
Мастер
Сообщения: 21923
Зарегистрирован: 17 апр 2012, 14:58
Репутация: 5181
Заслуга: c781c134843e0c1a3de9
Настоящее имя: Сергей
Откуда: Москва
Контактная информация:

Re: День программиста

Сообщение Serg »

Вот впомнил пароль на отладочную железку с эмуляцией PDP-11/40 и "снял кино" работы этой проги:

Код: Выделить всё

11/40>DEPOSIT 0 1 2 3 4 5 6 7 8 9
11/40>exa
000000/ 000001
000002/ 000002
000004/ 000003
000006/ 000004
000010/ 000005
000012/ 000006
000014/ 000007
000016/ 000010
11/40>ass 0
000000  jsr r7, -(r7)
000002  ^C
11/40>sp 0776
11/40>pc 0
11/40>go

%HALT
R0/000000 R1/000000 R2/000000 R3/000000  CM=K PM=K PRIO=0
R4/000000 R5/000000 SP/000000 PC/000002  N=0 Z=0 V=0 C=0
000002	halt
11/40>exa
000000/ 000000
000002/ 000000
000004/ 000000
000006/ 000000
000010/ 000000
000012/ 000000
000014/ 000000
000016/ 000000
11/40>
Стэк ограничил размером в 512 т.к. у железки развитая перефирия и я не помню на каких адресах она начинаются, а тупо писать нули в перефирию не стоит.
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
Аватара пользователя
Сергей Саныч
Мастер
Сообщения: 9116
Зарегистрирован: 30 май 2012, 14:20
Репутация: 2858
Откуда: Тюмень
Контактная информация:

Re: День программиста

Сообщение Сергей Саныч »

Запустил на эмуляторе - да, работает. Самое смешное, что эмулятор у меня самопальный - как-то в начале девяностых сваял, работает под ДОС.
ukr-sasha писал(а):Началось..... :D
А почему бы старикам не поностальгировать? :hottabych-still: :hottabych:
Чудес не бывает. Бывают фокусы.
nkp
Мастер
Сообщения: 8340
Зарегистрирован: 28 ноя 2011, 00:25
Репутация: 1589
Контактная информация:

Re: День программиста

Сообщение nkp »

кто хочет изучить си - спешите...
пока курс бесплатный ...
https://www.youtube.com/watch?v=jy641mFFshk
(16)
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: День программиста

Сообщение NightV »

раз мы оказывается все программисты... всем бухать!!! :hehehe:
Всё просто! если знаешь КАК!
Аватара пользователя
Predator
Мастер
Сообщения: 9583
Зарегистрирован: 18 июл 2013, 18:26
Репутация: 2531
Контактная информация:

Re: День программиста

Сообщение Predator »

NightV писал(а):р
всем бухать!!! :hehehe:
Вам лишь бы повод найти, опять все нажрётесь, как свиньи! © Гоблин
:lol:
Аватара пользователя
torvn77
Мастер
Сообщения: 2442
Зарегистрирован: 02 июн 2012, 22:12
Репутация: 215
Откуда: Россия,Санкт-Петербург
Контактная информация:

Re: День программиста

Сообщение torvn77 »

И как такая задача решается?
Правильно предполагаю что ноль воспринимается как стоп?
Аватара пользователя
NightV
Почётный участник
Почётный участник
Сообщения: 6599
Зарегистрирован: 30 дек 2011, 09:14
Репутация: 2279
Настоящее имя: Владимир Айрапетян
Откуда: Israel
Контактная информация:

Re: День программиста

Сообщение NightV »

ага..
а за ноль будем брать уровень асфальта.... ух.. ёпть...
Всё просто! если знаешь КАК!
Ответить

Вернуться в «Оффтоп»