Страница 3 из 3

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

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

P.S. из трёх курсов эту задачу решили только 5 студентов, из них 2 девушки. :)

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

Добавлено: 16 сен 2013, 23:35
Nick
Вот, я же говрил, нужна индукция! :)

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

Добавлено: 16 сен 2013, 23:38
nkp
UAVpilot писал(а):, из них 2 девушки.
может все таки им парни подсказали :hehehe:

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

Добавлено: 16 сен 2013, 23:41
Nick
А какой факультет / универ был?
А то у нас были и "такие" девушки :).

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

Добавлено: 16 сен 2013, 23:48
Serg
nkp писал(а):может все таки им парни подсказали :hehehe:
Не, девчёнки реально сильны в программировании, сейчас одна в MS, другую в Google приглашали, результата пока не знаю.
Nick писал(а):А какой факультет / универ был?
Московский техникум электронных приборов.
По оснащению был покруче универов - любимчик министерства электронной промышленности СССР всётаки. :)

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: не выходит каменный цветок. Стек будет двойками заполняться, а не нулями :(

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

Добавлено: 17 сен 2013, 14:53
Serg
Да, "JSR R7, -(R7)", у меня минус потерялся, поправил. Код 004747 правильный - много раз вбивал его с пульта.
Serg-tmn писал(а):Но тогда в PC занесется содержимое ячейки 0
Не занесётся, ибо это не команда MOV. Произойдёт именно передача управления на ячейку, адрес которой в R7 (за вычетом 1 слова).

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

Добавлено: 17 сен 2013, 15:16
ukr-sasha
Началось..... :D

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 писал(а):Началось..... :D
А почему бы старикам не поностальгировать? :hottabych-still: :hottabych:

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

Добавлено: 10 ноя 2013, 21:29
nkp
кто хочет изучить си - спешите...
пока курс бесплатный ...
https://www.youtube.com/watch?v=jy641mFFshk
(16)

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

Добавлено: 13 сен 2014, 21:26
NightV
раз мы оказывается все программисты... всем бухать!!! :hehehe:

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

Добавлено: 13 сен 2014, 21:38
Predator
NightV писал(а):р
всем бухать!!! :hehehe:
Вам лишь бы повод найти, опять все нажрётесь, как свиньи! © Гоблин
:lol:

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

Добавлено: 13 сен 2014, 21:48
torvn77
И как такая задача решается?
Правильно предполагаю что ноль воспринимается как стоп?

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

Добавлено: 14 сен 2014, 03:02
NightV
ага..
а за ноль будем брать уровень асфальта.... ух.. ёпть...