User Tag List

Страница 38 из 70 ПерваяПервая ... 343536373839404142 ... ПоследняяПоследняя
Показано с 371 по 380 из 699

Тема: SjASMPlus от z00m

  1. #371

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    The second way should work quite ok?
    еще не проверил
    додумался до такого варианта только когда уже написал сообщение

    да и есть некоторые сомнения
    так как на PASS 1 уже в макросах прицеплена lua

  2. #372

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    The nested macros are possible and should generally work, although they will exercise some not pretty parts of the code, and the maximum depth of nesting is limited (like 20 probably). So I can't promise there's no hidden bug nobody reported yet, but try it, it should work.

    Этот пользователь поблагодарил Ped7g за это полезное сообщение:

    NEO SPECTRUMAN(19.09.2020)

  3. #373

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    The nested macros are possible and should generally work, although they will exercise some not pretty parts of the code, and the maximum depth of nesting is limited (like 20 probably). So I can't promise there's no hidden bug nobody reported yet, but try it, it should work.
    интересная информация

    а так уже применил
    сейчас тестирую

  4. #374

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    меня периодически достает такая бага
    или может быть я чего то не вижу?

    Код:
    SjASMPlus Z80 Cross-Assembler v1.17.0 (https://github.com/z00m128/sjasmplu
    Pass 1 complete (0 errors)
    Pass 2 complete (0 errors)
    test.asm(34): error: [IF] No ENDIF
    Pass 3 complete
    Errors: 1, warnings: 0, compiled: 14 lines, work time: 0.000 seconds
    Код:
    mode = 1
    
    	if mode = 6
    		lua allpass	
    			for temp_cnt = 0,255,2 do
    
    				var = 0
    
    				if var > 65535 then
    				var = 65535
    				end
    			end	
    		endlua
    	endif
    в исходнике из которого я эту конструкция скопировал (упрощенно)
    ошибка происходит уже на pass 3

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

    при этом если сделать

    Код:
    mode = 1
    
    	if mode = 6
    	include "fix.asm
    	endif
    fix.asm
    Код:
    		lua allpass	
    			for temp_cnt = 0,255,2 do
    
    				var = 0
    
    				if var > 65535 then
    				var = 65535
    				end
    			end	
    		endlua
    то все работает...

    Код:
    SjASMPlus Z80 Cross-Assembler v1.17.0 (https://github.com/z00m128/sjasmplu
    Pass 1 complete (0 errors)
    Pass 2 complete (0 errors)
    Pass 3 complete
    Errors: 0, warnings: 0, compiled: 24 lines, work time: 0.000 seconds
    так тоже без ошибок

    Код:
    mode = 1
    
    	if mode = 6
    	
    		lua allpass	
    			for temp_cnt = 0,255,2 do
    
    				var = 0
    
    				--if var > 65535 then
    				--var = 65535
    				--end
    			end	
    		endlua
    
    	endif
    Последний раз редактировалось NEO SPECTRUMAN; 28.10.2020 в 01:25.

    Этот пользователь поблагодарил NEO SPECTRUMAN за это полезное сообщение:

    Ped7g(28.10.2020)

  5. #375

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    меня периодически достает такая бага
    или может быть я чего то не вижу?
    I get "error: [IF] No ENDIF" too, and I also don't see anything wrong about the code you posted = bug in sjasmplus.
    Thanks for reporting it (I will let you know later when I will have time to investigate, what is happening, seems like the lua part derails the parser in wrong way, but I don't see the reason).

  6. #376

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    нужны нормальные временные метки с именами
    типа

    Код:
    temp_label
    ld hl,temp_label.f
    jp temp_label.b
    temp_label

    или же нужно доделывание временных меток которые есть сейчас
    так как сейчас такое не сделать
    Код:
    				ld de,$5555
    				ld sp,$4555
    		ld ix,1f
    		jp some_procedure
    1	
    				ld de,$6666
    				ld sp,$4444
    		ld ix,1f
    		jp some_procedure
    1	
    				ld de,$7777
    				ld sp,$4333
    		ld ix,1f
    		jp some_procedure
    1
    например чтобы отличать от цифр можно было бы использовать какойто дополнительный символ

    ld ix,1_f
    1_f 100% not valid label

    ld ix,1.f


    но цифрами не очень удобно пользоваться
    есть вероятность поставить ту что уже есть
    и переход будет не туда
    а с временной меткой у которой есть имя проблем бы не было...



    сейчас случаем нет ограничения на максимально возможное число для временной метки?
    Последний раз редактировалось NEO SPECTRUMAN; 09.11.2020 в 00:29.

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

  8. #377

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    сейчас случаем нет ограничения на максимально возможное число для временной метки?
    It must be positive 32 bit integer (maybe zero works too? So non-negative 32b integer.), i.e. ~2e9 numbers.


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    но цифрами не очень удобно пользоваться
    есть вероятность поставить ту что уже есть
    You can use the same number multiple times, the relative position is important, i.e.:
    Код:
    1
       daa
       jr  1f  ; to cpl
       jr  1b ; to daa
    1
       cpl
       jr  1b ; to cpl
    About your suggestion... feels like quite a big departure from the original concept (whatever you may think about it ... I rarely use temporary labels, feels usually wrong, but I don't write very complex projects). I will think about it more, but I don't see any nice "fit" to the current syntax, so feels like something to be discussed again when/if v2.0 happens...

    About your actual problem... maybe define juggling? I will try to prepare some example, what I have on mind (I need to verify first if it even works, my first simpler idea did NOT work).


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    test.asm(34): error: [IF] No ENDIF
    fixed, the false IF-ENDIF block was reading lua script, finding the "if" inside lua, adding nest-level to the current conditional block.

    In v1.17.0 use workaround, hide the lua script definition inside macro or include (as you figured out).

    Этот пользователь поблагодарил Ped7g за это полезное сообщение:

    NEO SPECTRUMAN(11.11.2020)

  9. #378

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    You can use the same number multiple times, the relative position is important, i.e.:
    Код:

    1
    daa
    jr 1f ; to cpl
    jr 1b ; to daa
    1
    cpl
    jr 1b ; to cpl

    проблема возникает когда

    Код:
    1
       jr  2b ;not in view
    
    ... 100 lines of code
    
    some code
    
    ... 100 lines of code
    
    2
       jr  1b ;not in view


    при редактировании легко можно сделать ошибку



    Код:
    1
       jr  2b   ;not in view
    
    ... 100 lines of code
    
    1
     jr 3f
    some code
     jr 1b
    
    ... 100 lines of code
    
    2
       jr  1b ;not in view
             ;wrong jump !!!!!

    и все перестнет работать...

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

    Цитата Сообщение от Ped7g Посмотреть сообщение
    feels like quite a big departure from the original concept
    в оригинальном концепте
    метки не могут начинаться с цифры
    а шестнадцатеричные цифры должны обязательно начинаться с символа $ # 0x или заканчиваться на h
    и по идеи любые *f *b не могут быть valid numbers-ами

    почему такая конструкция это правильно
    Код:
    label
      ld hl,label
      jp label
    а такая нет ?
    Код:
    1
      ld hl,1b
      jp 1b
    выглядит как недоделка компилятора
    когда добавляли временные метки
    или не учли такого варианта использования
    или просто забыли


    в придачу если имеется в виду именно переход на $001b
    и будет временная метка 1
    то всё скомпилируется совершенно не так как нужно

    изначальные вариант ставить B и F сразу после цифры
    не есть правильным
    нужен был символ разделитель
    но его изначально не сделали...



    конечно если добавлять все это сейчас
    может возникнуть вероятность появления несовместимостей со старыми исходниками...
    Последний раз редактировалось NEO SPECTRUMAN; 11.11.2020 в 02:35.

  10. #379

    Регистрация
    10.05.2019
    Адрес
    Prague, Czech Republic
    Сообщений
    229
    Спасибо Благодарностей отдано 
    51
    Спасибо Благодарностей получено 
    103
    Поблагодарили
    77 сообщений
    Mentioned
    6 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    при редактировании легко можно сделать ошибку

    и все перестнет работать...
    Da. Temporary labels *smells*. (but sometimes they may be handy, like in macro which is used many times, and you don't want to insert many new symbols into label table in the listing file)


    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    ld hl,1b
    that's a valid way how to write binary number in sjasmplus (suffix form with "b" at end).

    It's actually super annoying to me, because:
    Код:
    1000
        jp 1000b    ; jumps back to the temporary label, not address 8
        ld hl,1000b ; HL = 8
    The risk of real collision in source is very low, but I dislike this feature, feels like it was added by somebody not foreseeing the ambiguity.

    Anyway, the solution is simple, don't use temporary labels.

    But I guess your original problem is about generating some code by generator or what... making some "previous/next" label handy?

  11. #380

    Регистрация
    22.05.2011
    Адрес
    г. Дзержинск, Украина
    Сообщений
    6,829
    Спасибо Благодарностей отдано 
    483
    Спасибо Благодарностей получено 
    663
    Поблагодарили
    513 сообщений
    Mentioned
    10 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Ped7g Посмотреть сообщение
    But I guess your original problem is about generating some code by generator or what... making some "previous/next" label handy?
    в данном случая я хотел использовать для имитация call
    когда занят SP

    я очень сильно не люблю конструкции типа
    jp $+5
    так как проблем от них когда нужно добавить даже 1 байт между...
    поэтому хотел сделать с временными метками внутри dup цикла
    по типу

    dup 100500
    ;some code
    ld ix,label
    jp some_procedure
    label
    edup

    some_procedure
    ;some code
    push bc
    jp (ix)

    сделать макросами не получится так как вокруг сплошная LUA
    Последний раз редактировалось NEO SPECTRUMAN; 11.11.2020 в 06:05.

Страница 38 из 70 ПерваяПервая ... 343536373839404142 ... ПоследняяПоследняя

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

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

Эту тему просматривают: 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

Ваши права

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