Страница 3 из 3
Re: День программиста
Добавлено: 16 сен 2013, 23:19
Serg
Ладно, будем считать, что это я не утерпел.
Сия программа состоит из одной команды:
JSR R7, -(R7) ; восьмиричный код 004747
Помещается в ячейку по адресу 0, работает так:
Это вызов подпрограммы по адресу, находящемуся в R7 (Program Counter), т.е. саму себя. При выполнении этого вызова автоматически заносится в стэк адрес возврата, т.е. 0 и указатель стека (R6) уменьшается на 1 (точнее на два т.к. ячейки по 2 байта). Стэк по дефолту находится в конце памяти и растёт в сторону нулевой ячейки. Соотв. при каждой итерации память будет заполнятся нулями с конца в начало. В конце концов в нулевой ячейке сия инструкция будет затёрта очередным нулём, который при очередной итерации исполнится как HALT.
P.S. из трёх курсов эту задачу решили только 5 студентов, из них 2 девушки.
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: День программиста
Добавлено: 16 сен 2013, 23:35
Nick
Вот, я же говрил, нужна индукция!
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: День программиста
Добавлено: 16 сен 2013, 23:38
nkp
UAVpilot писал(а):, из них 2 девушки.
может все таки им парни подсказали
![Хе-хе-хе :hehehe:](./images/smilies/hehe.gif)
Re: День программиста
Добавлено: 16 сен 2013, 23:41
Nick
А какой факультет / универ был?
А то у нас были и "такие" девушки
![Smile :)](./images/smilies/icon_e_smile.gif)
.
Re: День программиста
Добавлено: 16 сен 2013, 23:48
Serg
nkp писал(а):может все таки им парни подсказали
![Хе-хе-хе :hehehe:](./images/smilies/hehe.gif)
Не, девчёнки реально сильны в программировании, сейчас одна в MS, другую в Google приглашали, результата пока не знаю.
Nick писал(а):А какой факультет / универ был?
Московский техникум электронных приборов.
По оснащению был покруче универов - любимчик министерства электронной промышленности СССР всётаки.
![Smile :)](./images/smilies/icon_e_smile.gif)
Re: День программиста
Добавлено: 17 сен 2013, 05:15
Сергей Саныч
UAVpilot писал(а):JSR R7, (R7) ; восьмиричный код 004747
не совсем понял.
я тоже бродил вокруг JSR но до такого решения не дошел.
Разве 004747 не JSR R7, -(R7)? Но тогда в PC занесется
содержимое ячейки 0 (код команды), а не сам 0, что приведет либо к ошибке перехода по нечетному адресу (в "больших" машинах, либо к переходу на адрес 004746 (в LSI-11 и аналогах). А если JSR R7, (R7) (004717), то занесется содержимое ячейки 2. Хотя, если туда заранее занести 0, то ...черт! должно заработать!
PS: не выходит каменный цветок. Стек будет двойками заполняться, а не нулями
![Sad :(](./images/smilies/icon_e_sad.gif)
Re: День программиста
Добавлено: 17 сен 2013, 14:53
Serg
Да, "JSR R7, -(R7)", у меня минус потерялся, поправил. Код 004747 правильный - много раз вбивал его с пульта.
Serg-tmn писал(а):Но тогда в PC занесется содержимое ячейки 0
Не занесётся, ибо это не команда MOV. Произойдёт именно передача управления на ячейку, адрес которой в R7 (за вычетом 1 слова).
Re: День программиста
Добавлено: 17 сен 2013, 15:16
ukr-sasha
Началось.....
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
Re: День программиста
Добавлено: 17 сен 2013, 16:04
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 т.к. у железки развитая перефирия и я не помню на каких адресах она начинаются, а тупо писать нули в перефирию не стоит.
Re: День программиста
Добавлено: 17 сен 2013, 19:27
Сергей Саныч
Запустил на эмуляторе - да, работает. Самое смешное, что эмулятор у меня самопальный - как-то в начале девяностых сваял, работает под ДОС.
ukr-sasha писал(а):Началось.....
![Very Happy :D](./images/smilies/icon_e_biggrin.gif)
А почему бы старикам не поностальгировать?
![Hottabych :hottabych:](./images/smilies/hottabych-hehe.gif)
Re: День программиста
Добавлено: 10 ноя 2013, 21:29
nkp
кто хочет изучить си - спешите...
пока курс бесплатный ...
https://www.youtube.com/watch?v=jy641mFFshk
(16)
Re: День программиста
Добавлено: 13 сен 2014, 21:26
NightV
раз мы оказывается все программисты... всем бухать!!!
![Хе-хе-хе :hehehe:](./images/smilies/hehe.gif)
Re: День программиста
Добавлено: 13 сен 2014, 21:38
Predator
NightV писал(а):р
всем бухать!!!
![Хе-хе-хе :hehehe:](./images/smilies/hehe.gif)
Вам лишь бы повод найти, опять все нажрётесь, как свиньи! © Гоблин
![LOL :lol:](./images/smilies/lol.gif)
Re: День программиста
Добавлено: 13 сен 2014, 21:48
torvn77
И как такая задача решается?
Правильно предполагаю что ноль воспринимается как стоп?
Re: День программиста
Добавлено: 14 сен 2014, 03:02
NightV
ага..
а за ноль будем брать уровень асфальта.... ух.. ёпть...