Главное меню
Мы солидарны с Украиной. Узнайте здесь, как можно поддержать Украину.

Ассемблер для Z80

Автор Alone Coder, октября 8, 2011, 00:50

0 Пользователи и 2 гостей просматривают эту тему.

Alone Coder

Цитата: Python от октября 13, 2011, 21:48
Мечтаю об асме с лисп-подобным синтаксисом.
Лисп-подобный синтаксис по определению не указывает порядок выполнения операций. В асме это критично.

orang_baik

Цитата: Alone Coder от октября 13, 2011, 21:50
Лисп-подобный синтаксис по определению не указывает порядок выполнения операций. В асме это критично.
Функции вызываются в произвольном порядке?

Alone Coder


Python

Цитата: Alone Coder от октября 13, 2011, 21:50
Цитата: Python от октября 13, 2011, 21:48
Мечтаю об асме с лисп-подобным синтаксисом.
Лисп-подобный синтаксис по определению не указывает порядок выполнения операций. В асме это критично.
1) S-expressions пригодны для записи чего-угодно (в т.ч. и императивного языка с четким следованием команд). А вот лиспоидные макросы в ассемблере пригодились бы.
2) Команду можно рассматривать как функцию, получающую на входе старое состояние системы и возвращающую новое.
3) В известных мне диалектах лиспа присутствуют функции с побочным действием, последовательность выполнения которых при работе программы не изменяется произвольным образом.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Alone Coder

Цитата: Python от октября 13, 2011, 21:58
А вот лиспоидные макросы в ассемблере пригодились бы.
Приведите пример задачи.

Цитата: Python от октября 13, 2011, 21:58
Команду можно рассматривать как функцию, получающую на входе старое состояние системы и возвращающую новое.
Тогда программа будет выглядеть как (cmdN ... (cmd2 (cmd1state)))..). Удобно шопесец. Главное наглядно!

Python

Цитата: Alone Coder от октября 13, 2011, 22:02
Тогда программа будет выглядеть как (cmdN ... (cmd2 (cmd1state)))..). Удобно шопесец. Главное наглядно!
Ну зачем так грубо? Можно ведь и (reduce #(apply %2 %1) state [cmd1 cmd2 cmd3 ... cmdN])
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

mnashe

Цитата: Dana от октября 13, 2011, 03:49
Но только для архитектуры x86. О Z80 я вообще понятия не имею.
:+1:
Ещё я в своё время знакомился с ассемблером для PDP-11 (кажется,  так оно называлось), у меня даже сохранилась тетрадка, куда я это переписывал; но воспользоваться не довелось: я вскоре уехал оттуда, а вся эта платформа потеряла актуальность.
Адепт единственного числа и безродового склонения
שָׁלוֹם עֲלֵיכֶם!

Python

Цитата: Alone Coder от октября 13, 2011, 22:02
Цитата: Python от октября 13, 2011, 21:58
А вот лиспоидные макросы в ассемблере пригодились бы.
Приведите пример задачи.
Ну, например, закинуть в стек аргументы, вызвать функцию, вернуть стэк в изначальное состояние. Функция и количество аргументов — произвольные, последний аргумент в стек ложится первым. Возможно использование макросов в качестве апгументов (в этом случае происходит подстановка кода из макроса, после чего делается push AX).
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Alone Coder

Цитата: Python от октября 13, 2011, 22:47
Ну, например, закинуть в стек аргументы, вызвать функцию, вернуть стэк в изначальное состояние. Функция и количество аргументов — произвольные, последний аргумент в стек ложится первым. Возможно использование макросов в качестве апгументов (в этом случае происходит подстановка кода из макроса, после чего делается push AX).
Это делается и на обычных макросах, только это жирные макросы. Влом писать. Особенно если учесть, что это не нужно. В асме параметры передают в регистрах, а не через стек.

Python

Цитата: Alone Coder от октября 13, 2011, 22:55
Цитата: Python от октября 13, 2011, 22:47
Ну, например, закинуть в стек аргументы, вызвать функцию, вернуть стэк в изначальное состояние. Функция и количество аргументов — произвольные, последний аргумент в стек ложится первым. Возможно использование макросов в качестве апгументов (в этом случае происходит подстановка кода из макроса, после чего делается push AX).
Это делается и на обычных макросах, только это жирные макросы. Влом писать. Особенно если учесть, что это не нужно. В асме параметры передают в регистрах, а не через стек.
Почему же, из асма можно вызвать функцию из сишной библиотеки, которой аргументы передаются описанным выше способом. Если оформить это в виде макроса, то лучше и не начинать — получится что-то жирное и глючное.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2


Python

Цитата: arseniiv от октября 13, 2011, 23:02
А у меня был не Лисп.
Знаю. Но такое скопление скобок невольно вызывает мысли...
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Тайльнемер


Python

Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

jvarg

Цитата: Python от октября 13, 2011, 22:47
Ну, например, закинуть в стек аргументы, вызвать функцию, вернуть стэк в изначальное состояние.
Угу, только это лишние байты, что при тогдашних объемах памяти и быстродействии имело огромное значение.

Для тогдашних маленьких машин были и компиляторы высокоуровневых языков, однако именно потому для создания практических программ и использовался, в основном, ассемблер, что он позволял сократить объем программы даже на таких мелочах, как передача параметров через стек.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

Python

Однако, ввод-вывод на чистом ассемблере реализовывался довольно неудобно. Почему и возникала необходимость подключать чужие библиотеки.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

jvarg

Цитата: Python от октября 14, 2011, 13:42
Однако, ввод-вывод на чистом ассемблере реализовывался довольно неудобно. Почему и возникала необходимость подключать чужие библиотеки.
Смотря для какой архитектуры.

У вышеупомянутой PDP-11 все устройства ввода-вывода просто выглядили, как ячейки памяти в общем адресном пространстве. У Z80, ЕМНИП, тоже. Так что вывод на внешнее устройство ничем не отличался от обычной записи данных в память.

Когда через порты, или прерывания - тогда да, на ассемблере - геморно.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

jvarg

Цитата: Alone Coder от октября 10, 2011, 18:10
Там 28 регистров, и все они неравноправны. Так что можно жонглировать ими долго, пока не найдёшь самое эффективное решение.
Кстати, для быстрого обучения ассемблеру это не всегда плюс. У меня самый большой практический опыт программирования на АСМ для Атари. Там был вообще, фактически, один регистр, и ничего.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

Python

ЦитироватьУ вышеупомянутой PDP-11 все устройства ввода-вывода просто выглядили, как ячейки памяти в общем адресном пространстве. У Z80, ЕМНИП, тоже. Так что вывод на внешнее устройство ничем не отличался от обычной записи данных в память.
Т.е., аналога обычных функций ввода/вывода не было вообще? В ДОС можно еще выводить текст через стандартный вывод и принимать из стандартного ввода, используя прерывания.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

jvarg

Цитата: Python от октября 14, 2011, 16:47
Т.е., аналога обычных функций ввода/вывода не было вообще?
В PDP-11 и моем Атари - нет. Даже команд процессора типа IN и OUT не было. Просто, к примеру, каждый символ или пиксель экрана соответсвует байтику в определенной области памяти. Что бы вывести символ (в текстовом режиме), нужно просто записать его код по нужному адресу. В графическом режиме аналогично с пикселями.

Это очень упрощает программирование, но тратит драгоценное адресное пространство.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

jvarg

Цитата: Python от октября 14, 2011, 16:47
В ДОС можно еще выводить текст через стандартный вывод и принимать из стандартного ввода, используя прерывания.
Ну так ДОС этим косил под Юникс. А вообще там тоже без проблем через память адресовалось, только Майкрософт этого категорически не рекомендовал делать.
Все боятся быть обвинёнными в ксенофобии. А вот в русофобии никто.
(© Захар Прилепин)

sasza

Просто такова была реализация конкретных компьютеров. В Синклере под видеопамять тоже использовалось около 7 КБ общего адресного пространства, но это совсем не значит, что у Z80 нет команд ввода/вывода.

RawonaM

Цитата: jvarg от октября 14, 2011, 17:21
Цитата: Python от октября 14, 2011, 16:47Т.е., аналога обычных функций ввода/вывода не было вообще?
В PDP-11 и моем Атари - нет. Даже команд процессора типа IN и OUT не было. Просто, к примеру, каждый символ или пиксель экрана соответсвует байтику в определенной области памяти. Что бы вывести символ (в текстовом режиме), нужно просто записать его код по нужному адресу. В графическом режиме аналогично с пикселями.
В ДОСе на х86 точно так же доступна графическая память через общее пространство. Ничего особистого в этом нет.

RawonaM

Цитата: jvarg от октября 14, 2011, 17:21
Это очень упрощает программирование, но тратит драгоценное адресное пространство.
Собственно, не понял как это упрощает. Может я недопонял о чем речь.

Python

Цитата: jvarg от октября 14, 2011, 17:26
Цитата: Python от октября 14, 2011, 16:47
В ДОС можно еще выводить текст через стандартный вывод и принимать из стандартного ввода, используя прерывания.
Ну так ДОС этим косил под Юникс. А вообще там тоже без проблем через память адресовалось, только Майкрософт этого категорически не рекомендовал делать.
Это имеет смысл не во всех случаях. Во многих случаях удобнее работать с потоками, которые можно перенаправлять в файл или другое устройство вывода. С видеобуфером экрана это уже сложнее сделать.
Пролетареві ніколи вчити європейських мов, бодай би свою знати добре і на ній принести до своєї хати світло знання (Гнат Хоткевич)
ÆC CASALI NAXI PRASQURI: AHOV CÆRU, MERTVÆRI TÆ SLAVUTÆT!
Вони просили його: «Скажи: кетум», а він говорив: «сатем», і не міг вимовити правильно.
Хотелось бы также отметить, что "Питон" - это "мышиный язык" : "пи+тон". © АБР-2

Быстрый ответ

Обратите внимание: данное сообщение не будет отображаться, пока модератор не одобрит его.

Имя:
Имейл:
Проверка:
Оставьте это поле пустым:
Наберите символы, которые изображены на картинке
Прослушать / Запросить другое изображение

Наберите символы, которые изображены на картинке:

√36:
ALT+S — отправить
ALT+P — предварительный просмотр