Важная информация

User Tag List

Страница 5 из 10 ПерваяПервая 123456789 ... ПоследняяПоследняя
Показано с 41 по 50 из 99

Тема: Вызов функций через RST

  1. #41
    Activist Аватар для fk0
    Регистрация
    18.02.2005
    Адрес
    St. Petersburg
    Сообщений
    415
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin

    ...объектами рулить...

    а почему бы не использовать для этих целей индексный регистр? имхо это более рационально (все-таки структура). а вторую регистровую пару использовать для хранения адреса переменных на стеке. получается довольно неплохо
    Можно было бы. Есть одно но: если размер косвенно адресуемой
    структуры мал, если доступ к ней по большей части последовательный,
    если часто используется адресная арифметика -- в таких случаях
    через HL быстрей. Ибо на каждый байт доступный через индексный
    регистр уходит лишних 8 тактов и лишние 2 байта. Если у тебя
    большая структура со случайным доступом -- да, индексный регистр
    лучше. Но HL и IY переложить не долго.

  2. #42
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А если идти и дальше
    этим путём, то любые операторы ветвления и циклов тоже
    не нужны. Ибо они реально, без почти, не нужны. Программа
    может быть элементарно преобразована в эквиэвалентную,
    использующую исключительно функции и оператор '?' (в языке C).
    '?' - это и есть вариант оператора ветвления.

    Глупость про ненужность goto -- это типичный "слышал звон,
    но совершенно не в курсе дела о чём вообще речь". Если он такой
    ненужный, чего ж он мало того, что в последних версиях стандартов
    остался, так ещё и обрастает разными расширениями? То-есть
    да, он таки не нужен, ровно в той степени, как ненужны while и for.
    сколько раз за последние лет 5 ты использовал goto в своих программах?
    лично я - 0 (ноль).
    есть break, есть continue.

    конечно, бывают случаи когда использование goto сокращает код и делает его понятней. но такие случаи возникают редко.
    во всех остальных случаях goto вредно и использовать его не стоит.

    goto нужен зачем? затем, что бы в каком-то исключительном случае перепрыгнуть через несколько блоков.
    ну так в таком случае есть Exceptions.

    и вообще, грамотней всего поступили в java- там goto есть, но это вариация оператора break, только указывается куда надо этот break делать.

    --------

    как известно, любую программу можно написать без goto.

    так же как и с goto, зато без while, for.
    можно не использовать функций.
    можно обойтись одними goto и тернарными операторами.

    всё зависит от степени маразматичности писавшего эту программу.

    однако существуют некие общепризнанные нормы, выверенные годами, как надо писать программы, а именно: использовать функции, for, while, и свести использование goto к минимуму.
    Последний раз редактировалось Sinus; 25.11.2005 в 11:07.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  3. #43
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking

    Цитата Сообщение от Vladimir Kladov
    Есть такая штука называется макрокоманда. Определяется макрокоманда

    PrintChar MACRO char
    RST 16EFB char
    ENDM

    И дальше в коде пишется

    PrintChar 'a'

    Глазами по таблицам лазить не нужно. Для того и сущствуют компиляторы.
    Проблема парсинга от этого не пропадёт, как была так и останется.

    Впрочем не у всех Z80 на 3,5 МГц видимо у кого то он на 2ГГц
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  4. #44
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Sinus
    '?' - это и есть вариант оператора ветвления.

    сколько раз за последние лет 5 ты использовал goto в своих программах?
    лично я - 0 (ноль).
    есть break, есть continue.

    конечно, бывают случаи когда использование goto сокращает код и делает его понятней. но такие случаи возникают редко.
    во всех остальных случаях goto вредно и использовать его не стоит.

    goto нужен зачем? затем, что бы в каком-то исключительном случае перепрыгнуть через несколько блоков.
    ну так в таком случае есть Exceptions.

    и вообще, грамотней всего поступили в java- там goto есть, но это вариация оператора break, только указывается куда надо этот break делать.

    --------

    как известно, любую программу можно написать без goto.

    так же как и с goto, зато без while, for.
    можно не использовать функций.
    можно обойтись одними goto и тернарными операторами.

    всё зависит от степени маразматичности писавшего эту программу.

    однако существуют некие общепризнанные нормы, выверенные годами, как надо писать программы, а именно: использовать функции, for, while, и свести использование goto к минимуму.
    Кем принятые для чего приняты?

    Я все программы на ZX-BASIC писал только с goto и попробуй их перепиши без этого оператора, потом ты в ней запутаешься.

    ZX-BASIC вообще не имеет repeat intil () или while (), только for next, а как делать циклы с неопределённым заранее количествои итераций?

    Это просто мастодонты первых выпусков по специальности "программист" такую имели привычку и повсеместно внедряли.

    Аргументы:

    1) с GOTO программы плохо читаются - так же как и без GOTO, давайте меткам GOTO осмысленные имена или каждый переход GOTO сопровождайте комментарием.

    2) GOTO медленно работает - ещё одно заблуждение, на трансляторах всё медленно работает, а в компиляторах всё зависит от адаптивности последних

    3) с GOTO программа неустойчива - это как раз проблемы компиляторов, если из цикла скажем FOR NEXT осуществлялся GOTO то тупой компилятор сохранённые на стеке данные цикла не снимал, делал GOTO и в результате фатальный исход программы - вопрос решается сменой компилятора.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  5. #45
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Кем принятые для чего приняты?
    умными дядьками.

    Я все программы на ZX-BASIC писал только с goto и попробуй их перепиши без этого оператора, потом ты в ней запутаешься.
    блин, сколько раз повторять, до маразма можно довести всё что угодно.
    естественно, что на ZX-BASIC без GOTO ну никак, ибо ничего другого там нету.

    ZX-BASIC вообще не имеет repeat intil () или while (), только for next, а как делать циклы с неопределённым заранее количествои итераций?
    не использовать ZX-BASIC

    1) с GOTO программы плохо читаются - так же как и без GOTO, давайте меткам GOTO осмысленные имена или каждый переход GOTO сопровождайте комментарием.
    а нафига давать комментавии или осмысленные имена меткам, если гораздо удобнее не использовать GOTO?

    2) GOTO медленно работает - ещё одно заблуждение, на трансляторах всё медленно работает, а в компиляторах всё зависит от адаптивности последних
    первый раз слышу этот аргумент от тебя, ибо совершенно ясно, что GOTO компилится в простой JP, что быстро.

    3) с GOTO программа неустойчива - это как раз проблемы компиляторов, если из цикла скажем FOR NEXT осуществлялся GOTO то тупой компилятор сохранённые на стеке данные цикла не снимал, делал GOTO и в результате фатальный исход программы - вопрос решается сменой компилятора.
    ещё один аргумент, придуманный тобой.
    никакой компилятор никаких данных на стеке во время цикла не создаёт, а даже если б и создавал, то есть прекрасный оператор break (в нормальных языках), который не прыгает фиг знает куда, а чётко выходит из текущего цикла.

    на самом деле умные дядьки приводят только первый аргумент, ибо если программа большая (большая, это с объёмом исходных текстов > 4mb), тогда GOTO ну совсем не рулит. и комментарии, и метки тебе не помогут разобраться через месяц в бесконечных и запутанных GOTO.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

  6. #46
    Activist Аватар для acidrain
    Регистрация
    01.03.2005
    Адрес
    Russia, Krasnodar
    Сообщений
    433
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    RST 16
    defb 81
    defb 12

    то тому, кто будет писать такую п/п будет необходимо будет держать в руках справочник чтобы смотреть соответствие между вызываемой функцией и её байтами описателями (те самые defb) - такую работу должен выполнять не программист, а машина.
    Предопределить в макросах, как это сделано в AmigaOS:
    Код:
         include OpenLib.i
          rst OpenLib
          db.w PrintChar
    Код:
         OpenLib = n; номер рст =)
         PrintChar = -12 ; смещение от начала либлы
    http://amigasc.nm.ru

    Free coder and hardwareman
    Amiga addicted

  7. #46
    С любовью к вам, Yandex.Direct
    Размещение рекламы на форуме способствует его дальнейшему развитию

  8. #47
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking

    Цитата Сообщение от Sinus
    первый раз слышу этот аргумент от тебя, ибо совершенно ясно, что GOTO компилится в простой JP, что быстро.
    Ну это ты так думаешь - возьми любой из компиляторов - достань и посмотри во что там компилится GoTo - думаю ты сильно удивишься

    При этом даже голый goto (программа с единственным оператором, в которой нет других строк вообще) будет в весьма хитрую конструкцию компилится. Очень хороший компилятор может быть будет так компилить (в jp) да и то это под большим сомнением. Аналогично и про стек и переменные на нём в не только в нём - регистрах и т.д.
    Последний раз редактировалось GriV; 28.11.2005 в 16:48.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  9. #48
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Angry

    2AcidRian> вопрос не в том что можно макросы назначит а в том, что придётся рассчёт точек перехода во время работы программы делать, а не до её работы как я предлагаю (? неужели это такая непонятная мысль), что ускорит выполнение работы программы.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  10. #49
    Veteran Аватар для GriV
    Регистрация
    18.02.2005
    Адрес
    Набережные Челны
    Сообщений
    1,574
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    3
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    Talking

    2Sinus> очень оригинальный ответ на вопрос "кем и для чего" - "умными дядьками".

    Не использовать ZX-BASIC - это что оффтоп???? А меня ещё в писюканстве обвиняли

    И вообще, касательно GoTo ты сам себе противоречишь - то ты говоришь что GoTo транслируется в просто Jp <адрес>, то ты говоришь что лучше использовать циклы repeat until и do while и т.п., которые компилируются в такие жуткие конструкции, что просто ужасаешься. А тогда (если Goto быстрей) зачем вообще операторы циклов нужны???
    Последний раз редактировалось GriV; 28.11.2005 в 16:58.
    Биты рулят лучше байтов, байты рулят шустрее!
    View, Звук, Цвет

  11. #50
    Veteran Аватар для Sinus
    Регистрация
    29.01.2005
    Адрес
    Belarus, Grodno
    Сообщений
    1,279
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    1
    Поблагодарили
    1 сообщение
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от GriV
    Ну это ты так думаешь - возьми любой из компиляторов - достань и посмотри во что там компилится GoTo - думаю ты сильно удивишься
    хорошо, берём любой компилятор (MS Visual C 7).

    void main(void) {test: goto test;}

    -->

    .... {{c_startup_code}} ....
    test: jmp test

    и чему удивляться? что goto скомпилилось в один jmp?

    При этом даже голый goto (программа с единственным оператором, в которой нет других строк вообще) будет в весьма хитрую конструкцию компилится. Очень хороший компилятор может быть будет так компилить (в jp) да и то это под большим сомнением.
    ну не знаю что ты за компиляторами пользуешься, но даже те компиляторы которые пишу я (по работе иногда приходится) такой глупостью не занимаются, и компилят всё очевидно.

    Аналогично и про стек и переменные на нём в не только в нём - регистрах и т.д.
    в общем, как говорится учите матчасть
    продизассемблируй разок что сгенерил не совсем древний компилятор, и думаю там есть на что посмотреть.
    [target] [zemu] [js8x] [pouet] KAY-1024, 5''FDD, 3''FDD, HDD

Страница 5 из 10 ПерваяПервая 123456789 ... ПоследняяПоследняя

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. Подключение клона "Байт" к ТВ через RGB.
    от Surfin_Bird в разделе Изображение
    Ответов: 6
    Последнее: 11.03.2013, 16:59
  2. Ответов: 6
    Последнее: 09.12.2007, 22:02
  3. Ответов: 8
    Последнее: 01.05.2006, 01:38
  4. Принтер через 580ВВ55
    от Sonic в разделе Несортированное железо
    Ответов: 14
    Последнее: 08.06.2005, 09:26

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •