-
- Давно не работал с асемблером, но помню, что асемблер делает два прохода и если на втором проходе метки оказываются по другим адресам (из-за изменения длины твоего macro), то он отказывавется работать. Я делал так, что бы асемблер сперва увидел AlexBi(78 знак., 06.08.2008 11:00)
- Ниасилил. Это как? - Т.Достоевский(06.08.2008 17:35)
- Что-то типа такого: AlexBi(276 знак., 06.08.2008 18:10)
- Спасибо, но в макросе без елсе не работает :(( . А как задефайнить строку ->? Т.Достоевский(193 знак., 06.08.2008 18:35)
- Задефайнить не выйдет, и не надо. Препроцессор тут не поможет. У тебя проект ассемблируется весь сразу, в виде одного большого .asm файла? Переменные, для которых pagesel как объявляются? - AlexBi(06.08.2008 18:59)
- Это метки. - Т.Достоевский(06.08.2008 19:01)
- В таком виде: ? AlexBi(399 знак., 06.08.2008 19:14)
- по-моему, он имел в виду метки в программной памяти.. - blackbit(06.08.2008 19:27)
- -> Оно Т.Достоевский(06.08.2008 19:19)
- Оказалось, что я не в ту сторону смотрел. Думал о метках для памяти данных... По страницам в програмной памяти я свои програмы делил явно, выбирал нужную страницу почти сам, межстраничных переходов было мало. - AlexBi(06.08.2008 19:32)
- первую версию так и написал. Особенно радовали процессоры с ОТП. Дорого, блин! - Т.Достоевский(06.08.2008 19:36)
- Оказалось, что я не в ту сторону смотрел. Думал о метках для памяти данных... По страницам в програмной памяти я свои програмы делил явно, выбирал нужную страницу почти сам, межстраничных переходов было мало. - AlexBi(06.08.2008 19:32)
- В таком виде: ? AlexBi(399 знак., 06.08.2008 19:14)
- Это метки. - Т.Достоевский(06.08.2008 19:01)
- Задефайнить не выйдет, и не надо. Препроцессор тут не поможет. У тебя проект ассемблируется весь сразу, в виде одного большого .asm файла? Переменные, для которых pagesel как объявляются? - AlexBi(06.08.2008 18:59)
- Спасибо, но в макросе без елсе не работает :(( . А как задефайнить строку ->? Т.Достоевский(193 знак., 06.08.2008 18:35)
- Что-то типа такого: AlexBi(276 знак., 06.08.2008 18:10)
- Ниасилил. Это как? - Т.Достоевский(06.08.2008 17:35)
- ..слишком сложное условие под IF, не любит препроцессор mplab'a разбирать такие строки. - blackbit(06.08.2008 10:23)
- ..попробовал из-под 8.10 (mpasm 5.20), работает препроцессор с макросом нормально: blackbit(597 знак., 06.08.2008 18:58)
- Ниработает. Не выполняется условие. Сними ! или поменяй метки местами. - Т.Достоевский(06.08.2008 19:10)
- какие метки? ..я адреса меняют под org'ами, делая так чтобы куски кода были то на одной странице, то на разных и твой макрос отрабатывает то по одной ветке условия, то по другой. Что не так? - blackbit(06.08.2008 19:16)
- Значит надо качать 8.1 - Т.Достоевский(06.08.2008 19:21, ссылка)
- какие метки? ..я адреса меняют под org'ами, делая так чтобы куски кода были то на одной странице, то на разных и твой макрос отрабатывает то по одной ветке условия, то по другой. Что не так? - blackbit(06.08.2008 19:16)
- Ниработает. Не выполняется условие. Сними ! или поменяй метки местами. - Т.Достоевский(06.08.2008 19:10)
- Может какой компайлер посоветуете? - Т.Достоевский(06.08.2008 17:36)
- Hitech PICC Compiler как раз самое то для Вашего пика, хоть он и base-line. Чем уебищней архитектура, тем больше аргументов писать на си. - jaga-jaga(06.08.2008 17:50)
- Да не, мне оттуда только препроцессор :). - Т.Достоевский(06.08.2008 17:55)
- кстати, вроде как у mpasm'а есть встроенный макрос навроде lcall и lgoto - это то, что нужно? - jaga-jaga(06.08.2008 17:52)
- ..одно плохо с ними: всегда жестко вставляют две битовые команды на переключение PCLATH,03 и PCLATH,04, даже если вызов идет в пределах одной страницы. - blackbit(06.08.2008 18:55)
- а если либо вставлять, либо не вставлять, то это лишь только в том случае, если у вас все в абсолютных адресах (типа не кошерно), в противном случае до линковки неизвестно где метка и далеко ли прыгать. - jaga-jaga(06.08.2008 17:55)
- да и потом, у него же всего два уровня стека и call'иться можно лишь в первые 256 программных слов, так шта... кстати, PICC вызовы ф-ций для base-line пиков делает через таблицы переходов, таким образом обходит ограничение в два уровня стека. есть jaga-jaga(100 знак., 06.08.2008 18:07, ссылка)
- Вот и хочу чтою если из первой страницы не добавлять bsf STATUS,5. - Т.Достоевский(06.08.2008 18:08)
- блок else нужен? jaga-jaga(300 знак., 06.08.2008 18:25)
- Вот и хочу чтою если из первой страницы не добавлять bsf STATUS,5. - Т.Достоевский(06.08.2008 18:08)
- Досадно! Может AlexBi разжуёт? - Т.Достоевский(06.08.2008 18:03)
- ..вряд ли: если код перемещаемый, то это принципиальное ограничение и такой ботваносный макрос не прокатит. :D - blackbit(06.08.2008 19:07)
- да и потом, у него же всего два уровня стека и call'иться можно лишь в первые 256 программных слов, так шта... кстати, PICC вызовы ф-ций для base-line пиков делает через таблицы переходов, таким образом обходит ограничение в два уровня стека. есть jaga-jaga(100 знак., 06.08.2008 18:07, ссылка)
- Hitech PICC Compiler как раз самое то для Вашего пика, хоть он и base-line. Чем уебищней архитектура, тем больше аргументов писать на си. - jaga-jaga(06.08.2008 17:50)
- ..попробовал из-под 8.10 (mpasm 5.20), работает препроцессор с макросом нормально: blackbit(597 знак., 06.08.2008 18:58)
- Давно не работал с асемблером, но помню, что асемблер делает два прохода и если на втором проходе метки оказываются по другим адресам (из-за изменения длины твоего macro), то он отказывавется работать. Я делал так, что бы асемблер сперва увидел AlexBi(78 знак., 06.08.2008 11:00)