Перейти к содержанию
    

Нужно в сегменте кода создать 212 одинаковых фрагментов.

Сделал через макросы.

Объявил макрос M1 содержащий один фрагмент.

Потом макрос M10 состоящий из десяти M1.

Затем M100 из десяти M10.

 

В тексте программы записал:

M100

M100

M10

M1

M1

 

Все получилось как надо, но сама запись не нравится.

 

Может есть другая возможность сделать такое?

Что типа цикла макросов или loop или for какой или rep-endrep или еще как?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Порочный путь. Нереальный жор памяти, если это не обусловлено скоростью выполнения. Повторяющийся код, лучше вызывать, нежели вставлять по 200раз.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Повторяющийся код, лучше вызывать, нежели вставлять по 200раз.

спасибо, кэп

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

спасибо, кэп

Если Вам так все очевидно, на кой ляд Вы занимаетесь такой ересью? В каком случае может понадобится бесконечно много копировать один и тот же код? Попахивает быдлокодингом. Или вы нопы множите)))

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Попытайтесь внимательно прочитать своё первое сообщение в этой теме и попробуйте найти в нём ответ на свой вопрос.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

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

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

А о культуре общения Вам лучше промолчать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

А о культуре общения Вам лучше промолчать.

Вообще-то вам ответили на вопрос. Мало того, вы сами ответили. 10 макросов - 10 раз вызываем. 100 макросов - 100 раз. Это и есть циклы.

Ваши макросы не развернуты. Остается только телепатировать.

Вам намекнули на культуру общения. А вы в бутылку полезли. Прежде чем ответить, подумайте 10 раз. Здесь не пацанские встречи. Разговаривайте вежливо. Ваш собеседник может быть владельцем фирмы, занимать серьезную должность, серьезным специалистом. Любой специалист по электронике закончил как минимум 1 высшее учебное заведение. А это уже другой уровень общения.

Ругаться может никто и не будет, но отвечать вам больше не будут. Время и нервы дороже.

Изменено пользователем demiurg1978

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Вообще-то вам ответили на вопрос.

Прочтите мой вопрос и процитируйте ответ на него.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Прочтите мой вопрос и процитируйте ответ на него.

Эээ, мнэээ, кхе-кхе, кхм... Тело макроса вставляется в код как есть, только каждый макрос спрятан за определенное ему название. Вставили один раз, будет один раз вставлен весь код макроса, вставили 10 раз, будет 10 раз вставлено тело макроса.

.macro    OUT_SRAM
    ldi        XH,HIGH(@0)
    ldi        XL,LOW(@0)
    ldi        Data_H,HIGH(@1)
    ldi        Data_L,LOW(@1)
    rcall    _OUT_SRAM
.endmacro

.macro    OUTI_SRAM
    ldi        XH,HIGH(@0)
    ldi        XL,LOW(@0)
    ldi        r17,@1
    ldi        r16,@2
    rcall    _OUT_SRAM
.endmacro

_OUT_SRAM:
    st        X+,r16
    dec        r17
    brne    _OUT_SRAM
    ret

 

Написали 1 раз OUT_SRAM. Будет вставлено 1 раз. Написали 10 раз, будет вставлено 10 раз. Это жрет flash память МК.

 

Значит делаем циклы.

 

Все просто...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Эээ, мнэээ, кхе-кхе, кхм... Тело макроса вставляется в код как есть...

В огороде бузина, а в Киеве — дядька. :biggrin:

Вопрос читали?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Макросы в студию. Что делают эти макросы. После этого посмотрим, стоит ли продолжать.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Макросы в студию. Что делают эти макросы. После этого посмотрим, стоит ли продолжать.

Ну, прочитайте же вопрос в конце концов !!!!

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Может, как-то встроить в технологическую цепочку пред-обработчик вроде

GNU M4

Смутно помню, что в ассемблере PDP-11 был макрос .REPT\.ENDR

Изменено пользователем Владивольт

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...