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

User Tag List

Показано с 1 по 10 из 126

Тема: ASAM Compiler By Rob F. / Entire Group ...

Древовидный режим

Предыдущее сообщение Предыдущее сообщение   Следующее сообщение Следующее сообщение
  1. #31

    Регистрация
    04.03.2005
    Адрес
    Ukraine, Kiev
    Сообщений
    792
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    5
    Поблагодарили
    5 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Higgins Посмотреть сообщение
    1) Надо понимать так, что весь макропроцессор написан через вызовы эмулятора? То есть, непосредственно языком поддерживается только сама возможность определения и использования макросов, но не их раскрытия?
    Нет ... Макропроцессор написан как простоя подмена входных параметров нужными значениями. Именно поэтому нужно писать 0+LOW(xxx), что бы компиллер понял, что это не макрос а цикл, восприняв первый "0" как число. Вообщем макросы раскрываются только в виде подставляемых в них параметров. Простая замена, а уже потом компилятор разбирает это число или команда или ещё один макрос ...

    Цитата Сообщение от Higgins Посмотреть сообщение
    2) Эти вызовы эмулятора происходят на каждом проходе? Если да, то с какими значениями меток, в том числе $, если раскрытие макроса зависит от этих значений?
    Да, на каждом проходе ... Отличие только в окончании ne ... RunEmulZX запустит в любом случае, а RunEmulZXne, только если нет ошибок компиляции ...


    Цитата Сообщение от Higgins Посмотреть сообщение
    Как в этом случае будут вычисляться значения меток? Или во время трансляции мы должны получить ошибку?
    В этом случае будет зацикливание ... Что бы этого не было, нужно сделать так:
    Код:
            ORG #8006-(END-START)
    START   DB "ABC"
            .0+LOW($/#8000)
             DB "X"
            ..
            DB "DEF"
            EQU END=$
            SaveBIN "TEST.BIN",START,END-START
    Зацикливание будет только в случае адреса #8003. Поскольку длина кода будет меняться от адреса куда попадает "Х" !!!

    Эта строчка: "EQU END=$", нужна, что бы метка END была удалена после первого прохода. Таким образом ты объясняешь компилятору, что эта метка точно используется в тексте и не нужно её контролировать на наличие использования. В таком случае не будет ошибки и не будет зацикливаний ...

    ---------- Post added at 14:29 ---------- Previous post was at 14:16 ----------

    Цитата Сообщение от Higgins Посмотреть сообщение
    параметры макросов обозначаются этими странными значками?
    Да - точно ... Я специально выбрал не использованный символ для входного параметра в макрос. А значёт вконце макроса (галочка в дос кодировке), эозначает, что всякие параметры далее запрещены, и если вдруг строчка вызываемая макрос их содердит, ты получишь ошибку. Так же можно создать макрос без значков и окончания. Тогда компилятор через запятую воспримет 10-ть значений макроса.

    Например:
    Код:
     .HELLO
      @.0
      @.1
      @.2
      @.3
     ..
     Далее вызываем макрос:
     HELLO NOP, POP, LDIR
    То есть компилятор первый параметр макроса поймёт как NOP, второй POР, третий LDIR, а четвёртый как пустая строчка. Конечно же в этом случае нужно помнить, что нельзя передать, например - "LD HL,16384", поскольку разделитель есть запятая ... Если нужно передавать более сложные параметры макроса, то лучше иначе его описать и придумать другие разделители.

    ---------- Post added at 14:37 ---------- Previous post was at 14:29 ----------

    Цитата Сообщение от Higgins Посмотреть сообщение
    То есть, сам ассемблер непосредственно сравнения и другие операции не поддерживает?
    Не поддерживает. Чтобы описать 100% IF, тебе нужно писать все вариации IF'ов ... Это не язык высокого уровня и вложенность не поддерживает. То есть в макрос нельзя передать раскрытый макрос прямым путём ! Нелзья сделать макрос ABS(A) и его передать в IF (ABS(A)<0). Отдельно нужно получить значение из ABS и отдельно его передать в IF !
    AAA когда меня режут, я терплю, но когда дополняют, становится нестерпимо.

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

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

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

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

Похожие темы

  1. Colorbok^Phantom Family Group
    от rajdee в разделе Графика
    Ответов: 12
    Последнее: 20.01.2011, 23:32
  2. C compiler
    от vitasam в разделе Программирование
    Ответов: 17
    Последнее: 25.08.2005, 16:42

Ваши права

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