0--ZEvS--0: Все сообщения за 23 Августа 2023 года

 
ПнВтСрЧтПтСбВс
1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31

0--ZEvS--0

опытный

0-ZEvS-0>> То есть не надо думать, что для каждой строки сообщения своя подпрограмма.
3-62> По всякому бывает. Для тех древних времен, скорее всего, вывод на АЦПУ будет привязан к строкевывода довольно явно.
Нет, наоборот. Все дело в том, что подпрограмма вывода не просто отправляла символ по какому-то интерфейсу типа LPT, а занималась всем, что касалось принтера.
Если бы принтер был отдельным устройством, со своим стандартизированным интерфейсом, то тогда в таком принтере должен был бы быть свой процессор (ну или микроконтроллер), а в ЭВМ должен быть контроллер интерфейса. Ввиду жесткой логики того времени, это все еще заняло бы пару тумбочек с электроникой.
Поэтому моторами и электромагнитами рулил ЦП, через прямой интерфейс (сейчас бы сказали GPIO).
То есть ЦП записывал байт в регистр ввода-вывода с конкретным байтом команды и мотор (например протяжки бумаги включался), потом записывал другой байт и электромагнит клацал молоточком по литере.
Конечно такой интерфейс имел огромную кучу проводов.
Так, что подпрограмма вывода символа являлась программой принтера. И она составляла огромную часть операционной системы.
3-62> И никто не мешает именно в нужное место сразу вогнать ret. Если об ассемблере.Ну или машкод возврата.
Кстати это тоже не так просто. Для изменения какой-нибудь части основной программы нужно было перепрошивать ПЗУ, а это означало физически перематывать проволоку через ферритовые биаксы...
Это не EEPROM перепрошить... :)
3-62> Хотя вся эта затея бессмысленна по своей пропагандистской подоплеке.
А вот этого не понял, какая пропагандисткая подоплека?
 115.0115.0

0--ZEvS--0

опытный

SEA> Все делалось горааааздо проще. ...
SEA> ... И все - пиши что надо, и 0 в конце. Главное, каждая строка не длиннее английского текста должна быть. А хочешь ставь "0" вначале, текста не будет совсем.
Да, так можно было делать каким нибудь Hiew`ом. Вывод был в основном через системный сервис ДОС`а. ЕМНИП ф-ция 09h прерывания Int21h.
Можно было залезать и на другие сообщения, но тогда надо было искать адрес этого сообщения в исполняемом коде и править его тоже... ;)
 115.0115.0

0--ZEvS--0

опытный

0-ZEvS-0>> Во вторых "return(0)" это оператор языка программирования (среднего или высокого уровня), на тех машинах писали сразу в маш.кодах, и даже ассемблера еще не было.
cholev> Мама дорогая. Когда это было в машинных кодах- и что за коды- разве это не ассемблер. На этих машинах сам программировал на Фортране 77 в 1981 год в институте. :p
Коды это не ассемблер. Ассемблер появился когда уже на терминалах (дисплей+клава) программы писать стали. Ассемблер язык низкого уровня. То есть одному мнемокоду сопоставляется одна маш.команда. Процесс преобразования ассемблерной программы в маш.коды называется трансляцией. Ну и конечно в ассемблере уже можно метки ставить (и обзывать) для "GO TO". А в машкодах приходилось отслеживать адрес ссылки, куда надо управление перекинуть.
cholev> Язык программирования среднего уровня :eek: - и что это- спасибо предварительно за ликбез
Язык программирования среднего уровня - это когда один оператор заменяется на несколько маш.кодов. То есть программа на языке такого уровня сначала транслируется в ассемблер, а потом уже в маш.коды.
Например, тот же "RETURN" будет не просто на "ret" заменен, а добавится ряд комманд "POP" с регистрами, чтобы восстановить РОН`ы из стека.
Пример языка среднего уровня C, С++, ну и еще несколько.
А языки высокого уровня как правило не транслируемые, а интерпритируемые.
 115.0115.0

0--ZEvS--0

опытный

3-62> Хотя. с итогами деятельности сегодняшних ITрастов, можем на второй круг осмысления прежних технологий зайти.
Сегодня уже Фреймворки одни сплошные. Мне знакомый программист рассказывал, что это современный способ программирования, а обычные языки это устаревший способ.
А я считаю, что это коммерческая ботва, разработать такую SDK, чтобы программистам приходилось писать меньше кода.
Как в свое время были модны "визуальные языки". VB, Delphi там всякие.
ИМХО, цель таких языков выжать из программистов программку побыстрее и подешевле, а еще сэкономить на его обучении.
А расплачиваться приходится вычислительным ресурсом, поскольку получаемая программа требует компа помощнее, что тоже хорошо... :D
 115.0115.0

0--ZEvS--0

опытный

cholev> 1. Транслятор это перевод кода с одного языка программирования до другого. Пример с VB.NET до C#
cholev> 2 Интерпретируемые языки это скриптовые языки- VBScript, Java script. VB6 с 1998г и интерпретируемий (через IDE) и компилируемый через exe, dll. Современные VB.NET; C# компилируется посложнее- вот здесь некоторое объяснение https://freecontent.manning.com/how-is-c-compiled/

Iva> возможно я отстал, но транслятор языка - это перевод языка высокого уровня в ассемблер или в машинные коды.
cholev> Тонкости терминов. Сейчас это называется компиляция.
Опишу сразу все. :D
Машкод - это тот код, который исполняется процессором, аппаратно. То есть процессор берет байт из ОЗУ в текущем месте, "смотрит" его, и выполняет определенную операцию, в зависимости от значения этого кода. Чаще всего инструкция имеет параметры, то есть еще один или несколько байт подгружаются за кодом операции, сколько именно определяется кодом операции.
Ассемблирвание - это перевд программы на языке ассемблера в машкод. Программа ассемблера работает в 2 прохода (обычно), сначала она собирает метаданные, вычисляет сколько будет меток и по каким адресам, составляет список. На втором прохде каждая строка программы преобразуется в один или несколько байт машкода и получается "бинарник".
Если этот "бинарник" предназначен для конкретной ОС, в него еще будут добавлены заголовок и хвост.
Например, ".exe" файл предназначенный под ДОС имеет PSP область, и еще может содержать много сегментов кода и данных, плюс оверлей. Не суть.
Ассемблирование есть трансляция, то есть перевод программы транслируемого языка в машкод. Ассемблер по сути своей единственный язык низкого уровня. Команды в нем все аппаратные - те которые процессор может выполнить.
Язык среднего уровня тоже транслируется, но команды (операторы) в нем не являются командами аппаратными, их процессор выполнять напрямую не может. При трансляции языка среднего уровня один оператор заменяется несколькими ассемблерными командами (исполняемыми кодами).
Например: напрсал программист if (A = 0) B:=B+1; это будет заменено на:
if_proc:
mov ax,word ptr A_per
cmp ax,0
jne if_proc_done
mov bx,word ptr B_per
inc bx ; здесь на самом деле будет другое ;)
mov word ptr B_per
if_proc_done ... Ну это так примерно и навскидку :D
Это трансляция.
Теперь про языки высокого уровня, интерпретацию и компиляцию.
Интерпретируемый язык, это что-то вроде виртуального процессора. (если совсем на пальцах)
Тут в мшкодах на настоящем процессоре крутится не программа написанная на языке высокого уровня, а крутится программа интерпретатор.
Такой интерпретатор читает прорамму высокого уровня и "понимает" что нужно сделать. То есть напимер Turbo Basic, если видит "PRINT A+B", то он запустит подпрограмму сложения A и B, а потом запустит подпрограмму вывода на экран результата. и т. д.
Компиляция это не трансляция.
Компиляция это объединение двух элементов. При компиляции создается "бинарник" в котором содержится программа написанная на языке ВУ, и ее интерпретатор. Когда мы запускаем скомпилированную программу, то в ней запускается интерпретатор, который начинает на лету исполнять программу ЯВУ.
 115.0115.0
Это сообщение редактировалось 23.08.2023 в 15:46

0--ZEvS--0

опытный

3-62> В наше время, НЯВ, в этом тоже нет ничего зазорного. И радостно продаются.
Купить честного человека нельзя! А вот продать можно. :D
 115.0115.0

0--ZEvS--0

опытный

3-62> А памяти было совсем немного. Поэтому этот код точно будет подпрограммой. И, скорее всего, будет call на подпрограмму выбора строки к выводу, а из нее - call на "драйвер" АЦПУ. Вот вместо второго call и нужно ставить ret.
Я не отрицаю, что Ваш метод работает. Просто надо весь код перелопатить для этого. А данные лежат все вместе на полочке. Никто не стал серьезно заморачиваться "локализацией" буржуйского софта. :)
0-ZEvS-0>> Кстати это тоже не так просто. Для изменения какой-нибудь части основной программы нужно было перепрошивать ПЗУ ...
3-62> Ну зачем так-то? Кстати, магнитная память - вполне себе "со свойствами ПЗУ" по энергонезависимости.
Ну, потому-что подпрограмма вывода строки на принтер (и полного управления этим принтером), являлась даже не частью ОС, а частью БИОС`а, то есть хранилась в ПЗУ, на феритовых сердечниках...
0-ZEvS-0>> А вот этого не понял, какая пропагандисткая подоплека?
3-62> А почему так не желали видеть строки про IBM?
А-а-а. Может это постоянно деморализовало советских труженников? :D
 115.0115.0

0--ZEvS--0

опытный

0-ZEvS-0>> Ассемблер появился когда уже на терминалах (дисплей+клава) программы писать стали.
П.З.> Гораздо раньше.
П.З.> Всё прекрасно умещалось на перфоленту/перфокарты без всяких терминалов/мониторов/клавиатур
Не принципиально, когда именно придумали ассемблер, но как Вы себе представляете пользование ассемблером на перфокартах и принтерах?
В те времена, без клав и моников ассемблер - просто изврат был-бы. :)
 115.0115.0

0--ZEvS--0

опытный

0-ZEvS-0>> В те времена, без клав и моников ассемблер - просто изврат был-бы. :)
3-62> На Электронике Д3-28 подобное было. С вводом-выводом на "консул".
3-62> :)
У меня была (и сейчас есть) "Микроша". Очень хорошая микро ПЭВМ.
В начале 90х я писал прямо в машкодах.
Ассемблер был, и он входил в комплект программ этой машины, но пользоваться было геморойнее чем писать в машкодах.
Ассемблер надо было загрузить с кассеты в ПЭВМ, потом вводить программу на ассемблере, которая, надо сказать, все равно иначально писалась на бумаге в тетрадке. Потом надо было выгрузить полученный результат обратно на кассету.
Оказалось, что проще ассемблировать вручную - реально быстрее получалось.
Сейчас, я до сих пор пользуюсь таким ПЭВМ, в порядке увлечения. Даже есть специально отведенный угол.
Конечно, сейчас я не пишу проги на самой машине. Я пишу на современном ноутбуке, затем использую самопальный софт для трансляции, и только потом перекидываю на целевую машину.
А в те времена - кранты! Даже ПЗУ с УФ стиранием шили с помощью тумблеров и лампочек! :eek:
 52.052.0

0--ZEvS--0

опытный

cholev> Интересный ты человек. :) . Написал про всяких компиляторах, трансляторах и интерпретаторов куча важнейшей информации. (правда неверной :D )
Что именно неверно я написал?
cholev> Сейчас взялся с 8080 в виде Микроше на которые писал сразу в машкодах.
Просто упомянул об одном из своих увлечений. Надо было зацепится, да?
И не за что я не "взялся".
cholev> Я сам дочь офицера
cholev> писал для 8080 в СССР исполнением- был Вектор и еще один названия не помню- cholev> Тогда и начал программировать на GW Basic и ассемблер для 8080- К580ИК80. ...
Да, помню Вектор. Он был посерьезнее Микроши.
cholev> ... ЕМНИП-30 лет прошло все таки, сначала загружается GW Basic- он и ОС был, а потом ассемблер. В машкодах что то писать- не помню про такую возможность.
В Микроше при включении запускалась из ПЗУ оболочка, которая называлась "Системный монитор", в ней есть директива "M" которая позволяет править ОЗУ вручную, вот с помощью нее программу и вводили (в машкодах).

cholev> И кстати
cholev> Никакие интерпретаторы нет в .NET ...
А я утверждал что есть?
cholev> И да на это деньги зарабатываю и да хобби всегда интересно. Дерзай
Это вообще как понимать? Трудно понять, что Вы пишете.
 52.052.0

0--ZEvS--0

опытный

0-ZEvS-0>> У меня была (и сейчас есть) "Микроша". Очень хорошая микро ПЭВМ.
SEA> О как! Прикольно... А я работал в ее КБ в свое время, мы ее запускали в производство во 2й половине 80х и софт писали!
В Лианозово? Здорово! Очень приятно!
Я как-то с Поповым общался, тоже круто было, он в уме ассемблирует. :D
А сейчас ностальгируете по теме?
 52.052.0

0--ZEvS--0

опытный

0-ZEvS-0>> Ассемблер был, и он входил в комплект программ этой машины, но пользоваться было геморойнее чем писать в машкодах.
3-62> Хм. Как бы, хоть какая-то. но мнемоника сильно запоминабельнее и узнаваемее цифирь.

А мнемоника была. Я пользовался мурзилкой прямо из инструкции по эксплуатации.
comm.PNG (скачать) [737x833, 72 кБ]
 
 
 52.052.0

0--ZEvS--0

опытный

SEA> Я свою первую игру - удава для Микроши в машинных кодах писал, ассемблера еще не было под руками )))
А не Вы ли, случайно, создатель того знаменитого удава, что на родной кассете шел?

SEA> Ассемблер был потом. И НГМД прикрутил и дос к нему, в всякие оболочки (SE назвал, незатейливо :) )
Примерно то, чем я в порядке увлечения занимаюсь сейчас. Свой проектик я веду уже 3 года.
Вот такую систему разработал. Слева вручную собранный макет, а с права уже серийный.
Это система для загрузки выгрузки программ на SD-карту. Есть ПЗУ, которая отражается в область F000-F7FF. Если ввести GF000 и нажать <ВК>, то Микроша инициализирует SD карту, находит на ней файл "OS.SYS", загружает его в ОЗУ и передает управление.
Сейчас пишу полноценный ДОС, со всеми пирогами, как MS-DOS 6.22, примерно.
3 год занимаюсь, скоро закончу. Нравится мне это...
miksd.JPG (скачать) [868x500, 114 кБ]
 
 
 52.052.0

0--ZEvS--0

опытный

cholev>>> Никакие интерпретаторы нет в .NET ...
0-ZEvS-0>> А я утверждал что есть?
cholev> Ну в принципе говорили что : Компиляция это не трансляция.
cholev> Компиляция это объединение двух элементов. При компиляции создается "бинарник" в котором содержится программа написанная на языке ВУ, и ее интерпретатор. Когда мы запускаем скомпилированную программу, то в ней запускается интерпретатор, который начинает на лету исполнять программу ЯВУ.
Да, компиляция это не трансляция. Но я ничего не писал по ".NET".
Например, Borland Turbo Basic делает .exe из бейсик программы, но если посмотреть, то это интерпретатор+исходная программа.
А про ".net" это другая тема.
cholev>>> И да на это деньги зарабатываю и да хобби всегда интересно. Дерзай
0-ZEvS-0>> Это вообще как понимать? Трудно понять, что Вы пишете.
cholev> Ну я профессиональный программист и на это деньги зарабатываю- а вы скорее всего любитель: уважаю
А, теперь понятно :D
Я не профессиональный программист. Я пишу программы по работе, а именно под микроконтроллеры AVR и STM32 (ARM). Пишу на ассемблере прямо под эти микроконтроллеры.
Но это делается из-за того, что трудно поручить кому-то написать сопровождающий код для того железа, разработкой которого я занимаюсь.
Я инженер-электронщик, но программирую, не часто, но бывает.
Также я довольно много пишу под личные проекты - домашние. Тоже микроконтроллеры.
Так, что Вы правы - я любитель в программировании.
cholev> Мир, дружба, жвачка
:beer:
 52.052.0

в начало страницы | новое
 
Поиск
Настройки
Твиттер сайта
Статистика
Рейтинг@Mail.ru