User Tag List

Страница 32 из 63 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя
Показано с 311 по 320 из 699

Тема: SjASMPlus от z00m

Комбинированный просмотр

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

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

    По умолчанию

    Цитата Сообщение от NEO SPECTRUMAN Посмотреть сообщение
    а на каком pass-е уже будет результат?
    так как полученные цифры еще будут передаваться lua для расчета таблиц
    Macros are like "includes", expanded upon instance in every pass (becoming part of source). Notice how inside my example macro "CN=CN+(cycles?)" -> the argument is in parentheses - that's because the macro arguments are substituted in C-preprocessor way, substituting the strings, doing the value evaluation as last step after all substitutions, so without parentheses the usage `countT (26-CN+3)&-4` does expand to `CN=CN+(26-CN+3)&-4` which will evaluate to different result as `CN=CN+((26-CN+3)&-4)`! So it's similar landmine field like C #defines ...

    But the value of symbol CN is updated in every pass, just as if you would do the CN=CN+4 at beginning of line (but it happens after instruction, because macro is expanded after instruction).

    ---------------

    listing disabling:
    http://z00m128.github.io/sjasmplus/d...on.html#po_opt
    Код:
        OPT push listoff    ; preserve current state of listing, and switch listing off
          ; some code without listing (only marked by "# listing disabled" and "# listing enabled" lines in listing)
          ...
        OPT pop              ; restore the listing to original state
    (the disabling/enabling of listing is announced in the listing file, so this shortens listing for blocks of code, for single line this will explode listing even more)

    the OPT state can be push/pop-ed, so you can even nest these in includes/etc... if the top level has listing enabled, and it will go through multiple nested blocks having this switch off, then the first will switch listing off, nested ones will make no visible change, and the final last `opt pop` will restore listing back to "on".

    Similarly if you are doing sjasmplus library to be included as source code, and you want customize the syntax, but you don't want to affect project which is including your source, you can do `OPT push reset --syntax=aBf` to have your source going by these rules, then `OPT pop` at end of your library to restore the syntax of original project...

    Sorry for spamming you with this info you didn't ask for, but I'm kinda proud of the OPT design... :P
    Последний раз редактировалось Ped7g; 24.08.2020 в 10:52.

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

  3. #2

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

    По умолчанию

    Ped7g, а сейчас как то можно организовать синонимы для макросов?

    есть куча макросов которые для сохранения совместимости переименовать нельзя
    ну и делать копию тоже нельзя


    по смыслу должно работать так
    Код:
    	macro aabb123 || blahblahblah_aa_bb_123_NOW111 aaa 
    	defb aaa
    	...
    	100500 lines of code
    	...
    	endm
    или так
    Код:
    	macro aabb123 || blahblahblah_aa_bb_123_NOW111 aaa 
    	defb aaa
    	...
    	100500 lines of code
    	...
    	endm
    
    	macro blahblahblah_aa_bb_123_NOW111 aaa 
    	aabb123 aaa
    	endm
    с результатом
    Код:
    	aabb123 1
    
    	blahblahblah_aa_bb_123_NOW111 2
    
    	defb 1
    	...
    	100500 lines of code
    	...
    	defb 2
    	...
    	100500 lines of code
    	...
    при этом на всех PASS-ах
    синонимы должны вести себя так же как и оригинальный макрос

    define-ом наверно будет опасно пользоваться для такого
    хотя надо будет попробовать
    Последний раз редактировалось NEO SPECTRUMAN; 17.09.2020 в 10:35.

  4. #3

    Регистрация
    10.04.2005
    Адрес
    Сибирь
    Сообщений
    1,202
    Спасибо Благодарностей отдано 
    270
    Спасибо Благодарностей получено 
    396
    Поблагодарили
    171 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

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

    Grand's - сайт об электронно-вычислительной технике (зеркало)

  5. #4

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

    По умолчанию

    так намного лучше

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

    Ped7g(24.08.2020)

  6. #5

    Регистрация
    06.05.2010
    Адрес
    Бердск, НСО
    Сообщений
    4,966
    Спасибо Благодарностей отдано 
    1,074
    Спасибо Благодарностей получено 
    1,168
    Поблагодарили
    911 сообщений
    Mentioned
    5 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    А еще язык славянский.
    Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.

    Seamos realistas y hagamos lo imposible!

    Ernesto Che Guevara
    Переехал сюда: SteinBlume (ex ATM CP/M Explorer)
    http://era-cg.su

    Скрытый текст

    Speccy2010 r2 (Спасибо m.d. & xlat),
    Sinclair ZX Spectrum + (Спасибо stepmotor),
    ZX Evolution rev.C + 5'25 FDD Epson SD-700AA + NedoPC PAL-Coder (Спасибо m.d. & xlat)
    [свернуть]

  7. #6

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

    По умолчанию

    So you want the same macro, but with the two different names?

    The second way should work quite ok?
    Код:
    	macro aabb123 aaa ; "main" version 
    	defb aaa
    	...
    	100500 lines of code
    	...
    	endm
    
    	macro blahblahblah_aa_bb_123_NOW111 aaa ; "alias" version 
    	aabb123 aaa ; call the "main" version of macro
    	endm
    
    	; usage
    	aabb123 1
    	blahblahblah_aa_bb_123_NOW111 2
    Is this broken for you?

    DEFINE is of course another option, but that works best with distinct names, like `DEFINE blahblahblah_aa_bb_123_NOW111 aabb123` .. seems unlikely you will have collision with such long string like "blahblahblah_aa_bb_123_NOW111" (although may happen, if you have "blahblahblah_aa_bb_123_NOW111_2" -> "aabb123_2" will be substituted.

  8. #7

    Регистрация
    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

  9. #8

    Регистрация
    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)

  10. #9

    Регистрация
    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.
    интересная информация

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

  11. #10

    Регистрация
    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)

Страница 32 из 63 ПерваяПервая ... 282930313233343536 ... ПоследняяПоследняя

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

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

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

Ваши права

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