User Tag List

Страница 42 из 63 ПерваяПервая ... 383940414243444546 ... ПоследняяПоследняя
Показано с 411 по 420 из 699

Тема: SjASMPlus от z00m

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

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

    Регистрация
    06.05.2019
    Адрес
    г. Подольск
    Сообщений
    108
    Спасибо Благодарностей отдано 
    8
    Спасибо Благодарностей получено 
    18
    Поблагодарили
    13 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код HTML:
    DUPL		MACRO LEN,FILL
    DUPL:
    $$N		EQU (LEN) / 1024
    $$M		EQU (LEN) # 1024
    		REPT $$N
    		DB 1024 DUP(FILL)
    		ENDM
    		IF $$M <> 0
    		DB $$M DUP(FILL)
    		ENDIF
    		ENDM
    
    HIGH		FUNCTION X,((X >> 8) & 0XFF)
    LOW		FUNCTION X,(X & 0XFF)
    Это макросы из сорцов GSNEO (от savelij). Компилирует через asw (как я понял). В Sjasm ругается. Толком не пойму что здесь написано, макросы ещё не использовал. Можно это для sjasm привести в читаемый вид? Помогите.

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

  3. #2

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

    По умолчанию

    Для этих макросов, вроде в Сжасме есть готовые директивы.

    Первый (DUPL), как я понял, просто заполняет LEN байт памяти байтом FILL.
    Для этого есть BLOCK <length>[,<fill byte>] (DEFS <length>[,<fill byte>]).

    Второе это старший/младший байты.
    В Сжасме они есть тоже.
    low low x low 8 bits of 16 bit value or lower part of register pair
    high high x high 8 bits of 16 bit value or higher part of register pair
    Личка заполнена! И чистить я ее не буду! Пользуйтесь адекватными средствами связи! Спасибо.

    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)
    [свернуть]

  4. #3

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Не могу понять, как правильно работать с IFUSED?

    DEVICE ZXSPECTRUM48

    ORG 0x8000


    main:
    <code>
    <code>
    <code>
    <code>
    <code>
    ret

    include "address.asm" ; здесь объявлен модуль coords
    include "out43.asm"
    include "sto_rec.asm"
    include "pause.asm"
    include "windows.asm"
    Главная программа.




    module coords

    ifused XxXxXxX

    XxXxXxX <code>
    <code>
    <code>
    <code>
    ret

    endif
    Файл address.asm, в котором объявлен модуль coords.




    module windows

    CLS <code>
    <code>
    <code>
    <code>
    <code>
    call coords.XxXxXxX
    ret
    Другой модуль, который ссылается на ссылку в модуле coords.




    Pass 3 complete
    Errors: 4, warnings: 0, compiled: 870 lines, work time: 0.015 seconds
    The terminal process "C:\Program Files\PowerShell\7\pwsh.exe -Command sjasmplus --sld=test.sld --fullpath test.asm" terminated with exit code: 1.

    Terminal will be reused by tasks, press any key to close it.

    > Executing task: sjasmplus --sld=test.sld --fullpath test.asm <

    SjASMPlus Z80 Cross-Assembler v1.18.2 (https://github.com/z00m128/sjasmplus)
    Pass 1 complete (0 errors)
    Pass 2 complete (0 errors)
    windows.asm(91): error: Label not found: windows.coords.XxXxXxX
    Результат...
    Что неправильно?

    upd
    "Known bug: when code is using label inside module "moduleX", like call labelY, only usage of moduleX.labelY label is noted. Then if you define "labelY" outside of module and hide it inside IFUSED labelY block, the call from module will be unable to find the routine.

    Workaround: you can use the global-label operator @: "call @labelY" to trigger usage of the global "labelY", or you can use the alternative IFUSED syntax "labelY: IFUSED" which does not only check condition, but also does define the label. Once the label is defined, the "call labelY" line inside module will find the global variant and mark it as "used" correctly."
    Оно?

    Вроде бы, оно...
    Но новая беда - если написать
    labelY: IFUSED
    то не работают временные метки.
    Последний раз редактировалось 0xDEAD; 19.08.2021 в 18:38.

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

    Ped7g(19.08.2021)

  5. #4

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Код:
    			module n1
    			call @m1.used1
    			endmodule
    			module m1
    			ifused used1
    used1
    			nop
    			jr	1F
    			nop
    1
    			ret
    			endif
    			endmodule
    Так работает, а с новым синтаксисом да, косяк.

  6. #5

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Ну, у меня с @ не работает.

    Pass 1 complete (0 errors)
    Pass 2 complete (0 errors)
    address.asm(25): error: [JR] Target out of range (+598)
    address.asm(29): error: Local-labels flow differs in this pass (missing/new local label or final pass source difference)
    address.asm(33): error: Local label not found: 4F
    address.asm(36): error: Local-labels flow differs in this pass (missing/new local label or final pass source difference)
    out43.asm(28): error: [JR] Target out of range (+434)
    out43.asm(32): error: Local-labels flow differs in this pass (missing/new local label or final pass source difference)
    windows.asm(18): error: Local-labels flow differs in this pass (missing/new local label or final pass source difference)
    include data: name=font.fnt (768 bytes) Offset=0 Len=768
    Pass 3 complete
    Errors: 7, warnings: 0, compiled: 927 lines, work time: 0.031 seconds
    The terminal process "C:\Program Files\PowerShell\7\pwsh.exe -Command sjasmplus --sld=test.sld --fullpath test.asm" terminated with exit code: 1.

  7. #6

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    Ну, у меня с @ не работает.
    Не бывает у меня работает, у других нет. Значит ошибка в другом. Скорее всего ifused объявлен до использования, это в любом случае ошибка.

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

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

  8. #7

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Подпрограммы, которые я хочу использовать с ifused у меня в include лежат, которые размещены после ret главной программы. К меткам, которые объявлены в том модуле, который я хочу пометить как ifused, в любом случае, обращение происходит раньше по тексту программы, если это имеется в виду.
    К тому же, непонятна связь между объявлением ifused и моментальной сразу же после этого потерей работоспособности временных меток.
    address.asm(33): error: Local label not found: 4F
    Цитата Сообщение от krt17 Посмотреть сообщение
    Хотя я проверял без инклюдов. В сиджасме они как выяснилось влияют не на совсем очевидные вещи.
    Интересно, на какие, например?
    Последний раз редактировалось 0xDEAD; 19.08.2021 в 22:06.

  9. #8

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да это. Но то что вы написали в первом посту говорит о другом. Проверил с инклюдами, все в порядке.
    Сделайте минимальный синтетический тест, будет попонятнее.

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

    Цитата Сообщение от 0xDEAD Посмотреть сообщение
    Интересно, на какие, например?
    В старом обсуждении параллельной ветки был мой пример. Насколько я помню в этой ветке его вылечили, но помню я плохо, посему будем считать что проблем с инклюдом и ифюзед уже нет.

  10. #9

    Регистрация
    18.07.2021
    Адрес
    г. Хмельницкий, Украина
    Сообщений
    105
    Спасибо Благодарностей отдано 
    12
    Спасибо Благодарностей получено 
    33
    Поблагодарили
    25 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от krt17 Посмотреть сообщение
    будем считать что проблем с инклюдом и ифюзед уже нет
    В официальной документации к компилятору прямым текстом написано, что есть баг. С ifused. Про include, правда, там речь не идёт.

  11. #10

    Регистрация
    31.01.2007
    Адрес
    Москва
    Сообщений
    810
    Спасибо Благодарностей отдано 
    11
    Спасибо Благодарностей получено 
    77
    Поблагодарили
    59 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Да написано. Прочитали? Предложено пара воркараундов, один работает, во втором проблема с временными метками.
    тест обеих случаев, Ped7g посмотрит разберется
    Код:
    			device	zxspectrum48
    			org	0x8000
    start
    			module	n1
    			call	@m1.used1
    			call m2.used2
    			jr	$
    			endmodule
    			module	m1
    			ifused	used1
    used1
    			nop
    			jr	1F
    			nop
    1
    			ret
    			endif
    			endmodule
    			module	m2
    used2:			ifused
    
    			nop
    			jr	2F
    			nop
    2
    			ret
    			endif
    			endmodule
    
    			savesna	"usedtest.sna", start
    Последний раз редактировалось krt17; 19.08.2021 в 22:27.

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

    Ped7g(19.08.2021)

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

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

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

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

Ваши права

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