реклама на сайте
подробности

 
 
2 страниц V   1 2 >  
Reply to this topicStart new topic
> AVRASM2, продублировать макрос N раз
zombi
сообщение Mar 27 2017, 22:47
Сообщение #1


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Нужно в сегменте кода создать 212 одинаковых фрагментов.
Сделал через макросы.
Объявил макрос M1 содержащий один фрагмент.
Потом макрос M10 состоящий из десяти M1.
Затем M100 из десяти M10.

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

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

Может есть другая возможность сделать такое?
Что типа цикла макросов или loop или for какой или rep-endrep или еще как?
Go to the top of the page
 
+Quote Post
adc
сообщение Apr 3 2017, 05:17
Сообщение #2


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Порочный путь. Нереальный жор памяти, если это не обусловлено скоростью выполнения. Повторяющийся код, лучше вызывать, нежели вставлять по 200раз.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 3 2017, 09:15
Сообщение #3


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(adc @ Apr 3 2017, 08:17) *
Повторяющийся код, лучше вызывать, нежели вставлять по 200раз.

спасибо, кэп
Go to the top of the page
 
+Quote Post
adc
сообщение Apr 12 2017, 11:28
Сообщение #4


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(zombi @ Apr 3 2017, 13:15) *
спасибо, кэп

Если Вам так все очевидно, на кой ляд Вы занимаетесь такой ересью? В каком случае может понадобится бесконечно много копировать один и тот же код? Попахивает быдлокодингом. Или вы нопы множите)))
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 12 2017, 16:04
Сообщение #5


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(adc @ Apr 12 2017, 14:28) *
В каком случае может понадобится бесконечно много копировать один и тот же код?

Попытайтесь внимательно прочитать своё первое сообщение в этой теме и попробуйте найти в нём ответ на свой вопрос.
Go to the top of the page
 
+Quote Post
adc
сообщение Apr 14 2017, 20:24
Сообщение #6


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Если код имеет сотни повторов, и это дает прирост в скорости которой нельзя заменить на вызовы пп, это означает только то, что Вы неправильно выбрали платформу, либо алгоритм хромает. Вы довольно грубо ведете диалог, без явной на то причины. Возможно, Вам имеет смысл подтянуть культуру общения. С такими комментариями, Вам,уважающие себя люди, помогать не будут.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 14 2017, 20:41
Сообщение #7


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(adc @ Apr 14 2017, 23:24) *
Если код имеет сотни повторов, и это дает прирост в скорости которой нельзя заменить на вызовы пп, это означает только то, что Вы неправильно выбрали платформу, либо алгоритм хромает. Вы довольно грубо ведете диалог, без явной на то причины. Возможно, Вам имеет смысл подтянуть культуру общения. С такими комментариями, Вам,уважающие себя люди, помогать не будут.

Люди которые на конкретно поставленный вопрос вместо ответа начинают писать всякую ... не вызывают у меня уважения и уж тем более помощи от таких людей я не жду.
А о культуре общения Вам лучше промолчать.
Go to the top of the page
 
+Quote Post
adc
сообщение Apr 15 2017, 06:34
Сообщение #8


Местный
***

Группа: Свой
Сообщений: 409
Регистрация: 29-10-07
Пользователь №: 31 836



Цитата(zombi @ Apr 15 2017, 00:41) *
А о культуре общения Вам лучше промолчать.

Спасибо за совет)) я вас прощаю)
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Apr 15 2017, 14:19
Сообщение #9


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(zombi @ Apr 15 2017, 02:41) *
А о культуре общения Вам лучше промолчать.

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

Сообщение отредактировал demiurg1978 - Apr 15 2017, 14:21
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 15 2017, 14:30
Сообщение #10


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(demiurg1978 @ Apr 15 2017, 17:19) *
Вообще-то вам ответили на вопрос.

Прочтите мой вопрос и процитируйте ответ на него.
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Apr 15 2017, 14:50
Сообщение #11


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Цитата(zombi @ Apr 15 2017, 20:30) *
Прочтите мой вопрос и процитируйте ответ на него.

Эээ, мнэээ, кхе-кхе, кхм... Тело макроса вставляется в код как есть, только каждый макрос спрятан за определенное ему название. Вставили один раз, будет один раз вставлен весь код макроса, вставили 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 память МК.

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

Все просто...
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 15 2017, 14:59
Сообщение #12


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(demiurg1978 @ Apr 15 2017, 17:50) *
Эээ, мнэээ, кхе-кхе, кхм... Тело макроса вставляется в код как есть...

В огороде бузина, а в Киеве — дядька. biggrin.gif
Вопрос читали?
Go to the top of the page
 
+Quote Post
demiurg1978
сообщение Apr 15 2017, 15:15
Сообщение #13


Местный
***

Группа: Участник
Сообщений: 333
Регистрация: 19-12-13
Из: Новосибирск
Пользователь №: 79 709



Макросы в студию. Что делают эти макросы. После этого посмотрим, стоит ли продолжать.
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 15 2017, 15:21
Сообщение #14


Гуру
******

Группа: Свой
Сообщений: 2 076
Регистрация: 10-09-08
Пользователь №: 40 106



Цитата(demiurg1978 @ Apr 15 2017, 18:15) *
Макросы в студию. Что делают эти макросы. После этого посмотрим, стоит ли продолжать.

Ну, прочитайте же вопрос в конце концов !!!!
Go to the top of the page
 
+Quote Post
Владивольт
сообщение Apr 15 2017, 15:24
Сообщение #15


Частый гость
**

Группа: Участник
Сообщений: 168
Регистрация: 14-02-10
Пользователь №: 55 490



Может, как-то встроить в технологическую цепочку пред-обработчик вроде
GNU M4
Смутно помню, что в ассемблере PDP-11 был макрос .REPT\.ENDR

Сообщение отредактировал Владивольт - Apr 15 2017, 15:26


--------------------
#define TRUE (4==(2*2))
Go to the top of the page
 
+Quote Post

2 страниц V   1 2 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 11th July 2025 - 03:24
Рейтинг@Mail.ru


Страница сгенерированна за 0.01483 секунд с 7
ELECTRONIX ©2004-2016