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

 
 
12 страниц V  « < 10 11 12  
Closed TopicStart new topic
> PC +/- …
Rst7
сообщение Apr 15 2011, 07:55
Сообщение #166


Йа моск ;)
******

Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610



QUOTE
Я требую продолжения темы!


Именно. Пока тут скучно.


--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 15 2011, 07:57
Сообщение #167


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(zombi @ Apr 14 2011, 20:28) *
Аааа.... так вот откуда это все !!!
Ядро и система команд МК AVR с самого начала создавались в сотрудничестве с фирмой IAR Systems — производителем компиляторов для языков программирования C/C++.

Не угадайт! Надо ширее: максимальная приближенность синтаксиса директив асма к сям творит чудеса, самые известные из которых - совместное использование хедеров *.h и там и там. Такшта - движение вроде правильное, но с криворуким вывертом.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 15 2011, 10:38
Сообщение #168


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(defunct @ Apr 15 2011, 04:30) *
оформляйте как 0x01 и т.д. всегда будет моноширно и всегда правильно.

Шестнадцатиричные числа не всегда уместны.

Цитата(defunct @ Apr 15 2011, 04:30) *
aaarrr, ну кончайте жечь про наглядность и безопасность конструкций PC+2, ибо не верю, что человек который осознает философию "пробела", не может не видеть что такая конструкция только ухудшает наглядность, сопровождаемость и безопасность кода.

Последний раз высказываю свое мнение:

Конструкция вида PC + x, где -3 <= x <= 3, может считаться наглядной и безопасной за исключением двух случаев:
1. Патологической невнимательности пишущего
2. Незнания оным системы команд

Все, точка. Сами можете ставить бессмысленные метки через команду на ассемблере и писать исключительно по правилам MIRSA на "C". Только не забывайте, что подобные ограничения показаны далеко не всем.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Apr 15 2011, 11:12
Сообщение #169


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Извините, я всю тему не смог осилить.
Начинал я когда-то давно на MACRO-11, надо сказать мне сильно повезло, это был 'правильный' ассемблер и там сразу была заложена концепция локальных меток как в тексте программы так и в макросредствах. Поэтому эта концепция прочно засела у меня в голове и использование в инструкциях аргументов типа PC+смещение (.+смещение, $+смещение и прочее) воспринимается, мягко говоря, странно.
Потом был Борландовский TASM, также прекрасно поддерживающий локальные метки. А вот потом пошли всякие i51, 8080, Фуджитцы, AVR (лень все перечислять - как архитектуры так и ассемблеры) и я начал сильно страдать. Если бОльшая часть ассемблеров еще как-то поддерживала локальные метки в макросах, то собственно в коде с этими метками была беда. Вот тогда пришла идея написать препроцессор локальных меток. Идея самая заурядная - в коде выделяются границы блоков локальных меток (по первому символу строки - если символ может принадлежать имени обычной (нелокальной) метки - то граница блока) и в пределах этого блока все слова с определенным префиксом (в TASM это было "@@", но можно взять любое понравившееся сочетание) заменяются на такое же слово но с удаленным префиксом и с добавленным числовым суффиксом. Таким образом локальные метки становятся общими и уникальными для текущего файла.

Пример, исходный текст
CODE

Int_UART_STxD: push R23 ;
push R17 ;
lds R23,SP_Flags ;
sbrc R23,SNFl_RXoff ;
rjmp @@SendXOFF ;
sbrc R23,SNFl_RXon ;
rjmp @@SendXON ;
sbrc R23,SNFl_Xoff ;
rjmp @@ReadyTxd ;
;
lds R16,SP_DrvEnd ;
lds R17,SP_DrvBeg ;
cp R16,R17 ;
breq @@ReadyTxd ;
push Z1 ;
push Z0 ;
mov Z0,R16 ;
clr Z1 ;
subi Z0,low(-SP_DrvBuf) ;
sbci Z1,high(-SP_DrvBuf) ;
ld R17,Z+ ;
out UDR,R17 ;
pop Z0 ;
pop Z1 ;
inc R16 ;
cpi R16,TBufSiz ;
brlo @@Wrapup ;
clr R16 ;
@@Wrapup: sts SP_DrvEnd,R16 ;
;
@@Exit: sts SP_Flags,R23 ;
pop R17 ;
pop R23 ;
pop R16 ;
out SREG,R16 ;
pop R16 ;
reti ;
;
@@ReadyTxd: cbi UCR,UDRIE ;
rjmp @@Exit ;
;
@@SendXOFF: cbr R23,(1<<SNFl_RXoff) ;
ldi R16,_XOFF ;
out UDR,R16 ;
rjmp @@Exit ;
;
@@SendXON: cbr R23,(1<<SNFl_RXon) ;
ldi R16,_XON ;
out UDR,R16 ;
rjmp @@Exit ;


Текст после препроцессора:
CODE

Int_UART_STxD: push R23 ;
push R17 ;
lds R23,SP_Flags ;
sbrc R23,SNFl_RXoff ;
rjmp SendXOFF_0058 ;
sbrc R23,SNFl_RXon ;
rjmp SendXON_0059 ;
sbrc R23,SNFl_Xoff ;
rjmp ReadyTxd_0060 ;
;
lds R16,SP_DrvEnd ;
lds R17,SP_DrvBeg ;
cp R16,R17 ;
breq ReadyTxd_0060 ;
push Z1 ;
push Z0 ;
mov Z0,R16 ;
clr Z1 ;
subi Z0,low(-SP_DrvBuf) ;
sbci Z1,high(-SP_DrvBuf) ;
ld R17,Z+ ;
out UDR,R17 ;
pop Z0 ;
pop Z1 ;
inc R16 ;
cpi R16,TBufSiz ;
brlo Wrapup_0061 ;
clr R16 ;
Wrapup_0061: sts SP_DrvEnd,R16 ;
;
Exit_0062: sts SP_Flags,R23 ;
pop R17 ;
pop R23 ;
pop R16 ;
out SREG,R16 ;
pop R16 ;
reti ;
;
ReadyTxd_0060: cbi UCR,UDRIE ;
rjmp Exit_0062 ;
;
SendXOFF_0058: cbr R23,(1<<SNFl_RXoff) ;
ldi R16,_XOFF ;
out UDR,R16 ;
rjmp Exit_0062 ;
;
SendXON_0059: cbr R23,(1<<SNFl_RXon) ;
ldi R16,_XON ;
out UDR,R16 ;
rjmp Exit_0062 ;

Пишем и редактируем исходный код, а ассемблеру подсовываем результат препроцессора.

Позже препроцессор оброс еще всякими полезными функциями - преобразование табуляций, удаление комментариев (недавно особенно хорошо было отрубать букву 'я' в комментах для IAR-ского кортексовского ассемблера). В-общем, программа 15 лет в строю и зарекомендовала себя как универсальный инструмент с десятком разных ассемблеров. Изначально была написана на TASM для MS-DOS, но недавно Win7 отказался запускать .com файл - пришлось переписать под Win32. Если кому-то интересно - то архив с исходниками этой крошечной утилиты в аттаче. Там же проект и уже готовая собранная утилита.

Прикрепленный файл  atxt32.rar ( 20.19 килобайт ) Кол-во скачиваний: 56
Go to the top of the page
 
+Quote Post
SysRq
сообщение Apr 15 2011, 12:09
Сообщение #170


Чайник, 1 литр
****

Группа: Свой
Сообщений: 655
Регистрация: 17-05-06
Из: Moscow
Пользователь №: 17 168



Цитата(VslavX @ Apr 15 2011, 15:12) *
...локальные метки.
У нас есть локальные метки.

Также у нас есть флудовая тема и пятница.
Требую:
Цитата(Wise @ Apr 12 2011, 14:04) *
все свои претензии пользователя
или
Цитата(Wise @ Apr 12 2011, 14:04) *
будет стыдно
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 15 2011, 12:43
Сообщение #171


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Цитата(SysRq @ Apr 15 2011, 16:09) *
У нас есть локальные метки.

Если бы были, то не было бы флуда. Он вызван исключительно убогостью аврасма.

А претензии послушать всегда интересно, да. Одной аж на 12 страниц хватило sm.gif
Go to the top of the page
 
+Quote Post
zombi
сообщение Apr 15 2011, 12:58
Сообщение #172


Гуру
******

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



Цитата(SysRq @ Apr 15 2011, 16:09) *
У нас есть локальные метки.

А как хоть выглядят ЛОКАЛЬНЫЕ МЕТКИ?
А то акромя как в макросах невидел нигде.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 15 2011, 13:02
Сообщение #173


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



Вот так примерно.
Go to the top of the page
 
+Quote Post
VslavX
сообщение Apr 15 2011, 13:47
Сообщение #174


embarrassed systems engineer
*****

Группа: Свой
Сообщений: 1 083
Регистрация: 24-10-05
Из: Осокорки
Пользователь №: 10 038



Цитата(aaarrr @ Apr 15 2011, 16:02) *
Вот так примерно.

%F, %B - это все ноги от убогого MASM-овского стиля локальных меток растут - далеко не самый удачный пример, имхо. Проще же написать @@Loop, @@Exit и не думать куда оно там - вперед, назад.
Go to the top of the page
 
+Quote Post
aaarrr
сообщение Apr 15 2011, 14:03
Сообщение #175


Гуру
******

Группа: Свой
Сообщений: 10 713
Регистрация: 11-12-04
Пользователь №: 1 448



ИМХО, удобнее циферку поставить. Ну да каждому свое, главное, чтобы сама возможность была.
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 15 2011, 22:52
Сообщение #176





Guests






Цитата
Не угадайт! Надо ширее: максимальная приближенность синтаксиса директив асма к сям творит чудеса...
Такшта - движение вроде правильное, но с криворуким вывертом.

Ну одно из чудес криворукого синтаксиса нам здесь уже продемомстрировали. sm.gif
Самое интересное, что использование лидирующего нуля, как идентификатора восьмеричных чисел, предписано непосредственно стандартом языка Си. Вот, так вот! Можно сказать, триумф идиотизма.
P.S. Всегда подозревал, что Си - гуано, но не думал, что до такой степени...
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 15 2011, 23:00
Сообщение #177


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(@Ark @ Apr 16 2011, 01:52) *
P.S. Всегда подозревал, что Си - гуано, но не думал, что до такой степени...

Ви не умеете им лечить, етим мумиё. sm.gif Тем более, что другого нету (равного по уровню продуманности, конечно).
Go to the top of the page
 
+Quote Post
Guest_@Ark_*
сообщение Apr 15 2011, 23:08
Сообщение #178





Guests






Цитата
Тем более, что другого нету (равного по уровню продуманности, конечно).

О, да! Уровень продуманности обозначения восьмеричных чисел, просто потрясает! biggrin.gif
Go to the top of the page
 
+Quote Post
_Pasha
сообщение Apr 15 2011, 23:20
Сообщение #179


;
******

Группа: Участник
Сообщений: 5 646
Регистрация: 1-08-07
Пользователь №: 29 509



Цитата(@Ark @ Apr 16 2011, 02:08) *
О, да! Уровень продуманности обозначения восьмеричных чисел, просто потрясает! biggrin.gif

Это мы так скоро коллекцию глобальных претензий соберем sm.gif
А мне тоже не нравится. Причем давно, одна штука
Код
char a,b;
int c;

c=a*b;

никогда не делается с использованием доступных аппаратных средств, я имею ввиду расширитель аккумулятора А:В для 51-х, либо пары регистров R0:R1 для АВР либо PRODL:PRODH для пиков. Причем, и в паскале ( знаете, есть PMP такой) - та же фигня. Как я зол!
Go to the top of the page
 
+Quote Post

12 страниц V  « < 10 11 12
Closed TopicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 22nd July 2025 - 10:53
Рейтинг@Mail.ru


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