User Tag List

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

Тема: SjASMPlus от z00m

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

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

    Регистрация
    24.07.2018
    Адрес
    г. Москва
    Сообщений
    83
    Спасибо Благодарностей отдано 
    34
    Спасибо Благодарностей получено 
    49
    Поблагодарили
    34 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Существует ли какой-нибудь метод, который позволяет автоматически развернуть все макросы, подставить все данные и удалить из несработавшие условия?
    Если честно, вы немного... непонятно формулируете вопрос и свою задачу, мне она не очень понятна. Впечатление, что проблемы именно с формулированием.

    Вызов макроса формирует код. В теле макроса у вас выполняются или не выполняются отдельные условия, формируется код, размещенный в сработавших ветвях, код из несработавших ветвей не формируется. Что значит "метод, который позволяет автоматически развернуть все макросы, подставить все данные и удалить из несработавшие условия"? Откуда чего вы хотите удалить?! Я вас не понимать.

    Добавил:
    Код:
    	DEVICE ZXSPECTRUM48
    
    	ORG 32768
    
    A      EQU 0
    и в конце:

    Код:
    rIX DEFW 0
    (А почему я это должен писать?!)

    В итоге, все нормально скомпилировалось, ваш макрос при таком вызове macro_ld_reg_ix_d A,99-100,0 сформировал вот такой код:

    Код:
             PUSH HL
             LD HL,(#8012) ; это адрес вашей переменной rIX
             PUSH BC
             LD BC,#FFFF ; это ваша минус единица, 99-100=-1
             ADD HL,BC
             POP BC
             LD A,(HL)
             LD (#8011),A   ; это не то, что вы хотели, но таков ваш макрос:
                                        ;if reg == 0    ; A
                                        ;     ld    (.tmp + 1), a
                                        ;endif
                                    ; исправляйте его, если хотите что-то другое
             POP HL
             LD A,0    ; это тоже не то, что вам нужно, но... вы же это написали в макросе
    И что вы хотите? Поконкретнее плз. Потому что

    Цитата Сообщение от CityAceE Посмотреть сообщение
    А нужно, чтобы он развернулся, подставились все необходимые значения и убрались все несработавшие условия.
    именно это и произошло.

    - - - Добавлено - - -

    Цитата Сообщение от CityAceE Посмотреть сообщение
    Вот так работает, но в итоге имеем лишних 7 байт на константы. Причём в конец кода их перекинуть нельзя, так как они должны находится перед первым вызовом макроса.
    Какие константы? Это реальные байты. Я не понимаю, зачем использовать для этого реальные байты памяти... Есть переменные. Вон я пример привел с EQU, определил A. Можете теперь сравнивать с A, а не с нулем. Ну вообще конечно плохо пересекаться с именами регистров, но если очень уж хочется, то можно. Но зачем?!

    Ну и я просто не вполне понимаю задачу, которую вы делаете. Я так понял, вы хотите реализовать инструкцию работы с индексным регистром, обходясь регистрами HL и BC, этим обеспечив совместимость с другим процессором без поддержки таких инструкций. Вы хотите какие-то исходники преобразовать в такой вот измененный код, переассемблировать, что-то куда-то портировать? На какую машину? Что и откуда вам нужно удалить?!

    И да, вам очень правильно указали, что ADD влияет на флаги, в отличие от загрузки в память/из памяти по адресу из индексного регистра плюс-минус смещение, вам придется об этом позаботиться.

    Регистры и регистровые пары логичнее было бы нумеровать так, как они пронумерованы в опкодах, чтобы затем по возможности по приходящему значению вычислять нужный опкод, а не городить многоэтажные IFы.
    Последний раз редактировалось cafedead; 04.07.2025 в 02:21.

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

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

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

Похожие темы

  1. SjASMPlus Z80 кросс ассемблер
    от Aprisobal в разделе Программирование
    Ответов: 1663
    Последнее: 19.06.2021, 01:36
  2. Исходники TR-DOS для SjASMPlus
    от Keeper в разделе Программирование
    Ответов: 20
    Последнее: 11.02.2011, 11:57
  3. Запуск STS из .sna, сгенерированного sjasmplus.
    от siril в разделе Программирование
    Ответов: 7
    Последнее: 11.10.2010, 21:33
  4. Breakpoints в связке Sjasmplus+UnrealSpeccy
    от Kurles в разделе Программирование
    Ответов: 19
    Последнее: 26.01.2009, 12:36
  5. Disturbed COverMAnia ( music disk with z00m music collection)
    от kyv в разделе Музыка
    Ответов: 10
    Последнее: 27.03.2008, 10:01

Ваши права

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