День программиста
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: День программиста
Ладно, будем считать, что это я не утерпел.
Сия программа состоит из одной команды:
JSR R7, -(R7) ; восьмиричный код 004747
Помещается в ячейку по адресу 0, работает так:
Это вызов подпрограммы по адресу, находящемуся в R7 (Program Counter), т.е. саму себя. При выполнении этого вызова автоматически заносится в стэк адрес возврата, т.е. 0 и указатель стека (R6) уменьшается на 1 (точнее на два т.к. ячейки по 2 байта). Стэк по дефолту находится в конце памяти и растёт в сторону нулевой ячейки. Соотв. при каждой итерации память будет заполнятся нулями с конца в начало. В конце концов в нулевой ячейке сия инструкция будет затёрта очередным нулём, который при очередной итерации исполнится как HALT.
P.S. из трёх курсов эту задачу решили только 5 студентов, из них 2 девушки.
Сия программа состоит из одной команды:
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: День программиста
Вот, я же говрил, нужна индукция!
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: День программиста
может все таки им парни подсказалиUAVpilot писал(а):, из них 2 девушки.
- Nick
- Мастер
- Сообщения: 22776
- Зарегистрирован: 23 ноя 2009, 16:45
- Репутация: 1735
- Заслуга: Developer
- Откуда: Gatchina, Saint-Petersburg distr., Russia
- Контактная информация:
Re: День программиста
А какой факультет / универ был?
А то у нас были и "такие" девушки .
А то у нас были и "такие" девушки .
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: День программиста
Не, девчёнки реально сильны в программировании, сейчас одна в MS, другую в Google приглашали, результата пока не знаю.nkp писал(а):может все таки им парни подсказали
Московский техникум электронных приборов.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: День программиста
Да, "JSR R7, -(R7)", у меня минус потерялся, поправил. Код 004747 правильный - много раз вбивал его с пульта.
Не занесётся, ибо это не команда MOV. Произойдёт именно передача управления на ячейку, адрес которой в R7 (за вычетом 1 слова).Serg-tmn писал(а):Но тогда в PC занесется содержимое ячейки 0
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- ukr-sasha
- Мастер
- Сообщения: 3401
- Зарегистрирован: 21 мар 2011, 07:47
- Репутация: 2180
- Настоящее имя: Украинец Александр Григорьевич
- Откуда: Киев, Украина
- Контактная информация:
Re: День программиста
Началось.....
- Serg
- Мастер
- Сообщения: 21923
- Зарегистрирован: 17 апр 2012, 14:58
- Репутация: 5181
- Заслуга: c781c134843e0c1a3de9
- Настоящее имя: Сергей
- Откуда: Москва
- Контактная информация:
Re: День программиста
Вот впомнил пароль на отладочную железку с эмуляцией PDP-11/40 и "снял кино" работы этой проги:
Стэк ограничил размером в 512 т.к. у железки развитая перефирия и я не помню на каких адресах она начинаются, а тупо писать нули в перефирию не стоит.
Код: Выделить всё
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>
Я не Христос, рыбу не раздаю, но могу научить, как сделать удочку...
- Сергей Саныч
- Мастер
- Сообщения: 9116
- Зарегистрирован: 30 май 2012, 14:20
- Репутация: 2858
- Откуда: Тюмень
- Контактная информация:
Re: День программиста
Запустил на эмуляторе - да, работает. Самое смешное, что эмулятор у меня самопальный - как-то в начале девяностых сваял, работает под ДОС.
А почему бы старикам не поностальгировать?ukr-sasha писал(а):Началось.....
Чудес не бывает. Бывают фокусы.
-
- Мастер
- Сообщения: 8340
- Зарегистрирован: 28 ноя 2011, 00:25
- Репутация: 1589
- Контактная информация:
Re: День программиста
кто хочет изучить си - спешите...
пока курс бесплатный ...
https://www.youtube.com/watch?v=jy641mFFshk
(16)
пока курс бесплатный ...
https://www.youtube.com/watch?v=jy641mFFshk
(16)
- NightV
- Почётный участник
- Сообщения: 6599
- Зарегистрирован: 30 дек 2011, 09:14
- Репутация: 2279
- Настоящее имя: Владимир Айрапетян
- Откуда: Israel
- Контактная информация:
Re: День программиста
раз мы оказывается все программисты... всем бухать!!!
Всё просто! если знаешь КАК!
- Predator
- Мастер
- Сообщения: 9583
- Зарегистрирован: 18 июл 2013, 18:26
- Репутация: 2531
- Контактная информация:
Re: День программиста
Вам лишь бы повод найти, опять все нажрётесь, как свиньи! © ГоблинNightV писал(а):р
всем бухать!!!
- torvn77
- Мастер
- Сообщения: 2442
- Зарегистрирован: 02 июн 2012, 22:12
- Репутация: 215
- Откуда: Россия,Санкт-Петербург
- Контактная информация:
Re: День программиста
И как такая задача решается?
Правильно предполагаю что ноль воспринимается как стоп?
Правильно предполагаю что ноль воспринимается как стоп?
- NightV
- Почётный участник
- Сообщения: 6599
- Зарегистрирован: 30 дек 2011, 09:14
- Репутация: 2279
- Настоящее имя: Владимир Айрапетян
- Откуда: Israel
- Контактная информация:
Re: День программиста
ага..
а за ноль будем брать уровень асфальта.... ух.. ёпть...
а за ноль будем брать уровень асфальта.... ух.. ёпть...
Всё просто! если знаешь КАК!