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

 
 
> Создание и работа с переменными в ассемблере
allsettingsdone
сообщение Feb 3 2014, 07:11
Сообщение #1


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Не могу понять как создавать и работать с переменными разного размера в ассемблере в Keil. Директивы DB, DW, DD выдают ошибку(похоже на то, что Keil их вообще не знает), BYTE, WORD, DWORD - то же самое. Как я понял директивы GBLL, GBLS, GBLA создают (в RAM?) переменную и далее ей можно придать значение используя SETA, SETL, SETS, но при попытке повторно сохранить значение этой переменной получаем ошибку при компиляции, да и не понятно где именно в памяти Keil разместит переменную. Можно конечно сделать так Var0 EQU 0x(адрес переменной в памяти), но есть ли другие(более удобные) способы ? И как вообще принято это делать?
Go to the top of the page
 
+Quote Post
 
Start new topic
Ответов
Палыч
сообщение Feb 3 2014, 07:27
Сообщение #2


Гуру
******

Группа: Свой
Сообщений: 2 399
Регистрация: 10-05-06
Из: г. Новочеркасск
Пользователь №: 16 954



Цитата(allsettingsdone @ Feb 3 2014, 11:11) *
Директивы DB, DW, DD выдают ошибку(похоже на то, что Keil их вообще не знает), BYTE, WORD, DWORD - то же самое.

DCB, DCW, DCWU, DCD, DCDU....
Go to the top of the page
 
+Quote Post
allsettingsdone
сообщение Feb 3 2014, 07:54
Сообщение #3


Участник
*

Группа: Участник
Сообщений: 32
Регистрация: 22-01-13
Пользователь №: 75 284



Цитата(Палыч @ Feb 3 2014, 09:27) *
DCB, DCW, DCWU, DCD, DCDU....


Вот допустим я делаю счетчик, пишу test0 DCWU 0xFFFF
Затем уменьшаю на 1 ( MOV32 R0, #test0
SUB R0, #1)
Её сохранять обратно в память таким образом? - STR R0, [#test0] ? Компилятор выделит память под 4 байта?
Go to the top of the page
 
+Quote Post
romas2010
сообщение Feb 12 2014, 20:06
Сообщение #4


Участник
*

Группа: Участник
Сообщений: 63
Регистрация: 25-11-11
Пользователь №: 68 515



Цитата(allsettingsdone @ Feb 3 2014, 11:54) *
Вот допустим я делаю счетчик, пишу test0 DCWU 0xFFFF
Затем уменьшаю на 1 ( MOV32 R0, #test0
SUB R0, #1)
Её сохранять обратно в память таким образом? - STR R0, [#test0] ? Компилятор выделит память под 4 байта?


Компилятор выделит 2 байта...более того,если вы этой командой перезапишете значение переменной test0,то потом 3 дня будете рвать на себе волосы,пытаясь понять,почему вдруг соседние 2 байта тоже вдруг перезаписываются...

Давайте исходить из следующих аксиом
1) не надо из ассемблера делать фетиш и тотем...программа на ассемблере размером более 100 строк непонятна уже даже ее автору
2) без ассемблера никуда-потому что самый лучший оптимизатор-это твоя собственная голова.Ни одному компилятору не понять прелестей некоторых команд и режимов адресации.
Отсюда выявляется золотая середина- оформленные в оболочку С-функций короткие подпрограммы,выполняющиеся быстрее эквивалентного С-кода хотя бы в 3 раза.
Учим матчасть Keil->help->mVision help-> embeded assembler,instruction set,assembler user guide,compiler guide и пр.
Пишем короткие программы,циклы,условия,компилируем,входим в симулятор,и наблюдаем в окне Disassemble,что,собственно говоря,получилось,
разбираемся,как компилятор получает доступ к переменным,к полям структур,работу с указателями,как передать в функцию параметры и пр..
Go to the top of the page
 
+Quote Post

Сообщений в этой теме
- allsettingsdone   Создание и работа с переменными в ассемблере   Feb 3 2014, 07:11
||- - demiurg_spb   Цитата(allsettingsdone @ Feb 3 2014, 10:5...   Feb 3 2014, 08:12
||- - Golikov A.   Цитата(allsettingsdone @ Feb 3 2014, 11:5...   Feb 3 2014, 08:37
||- - KnightIgor   Цитата(allsettingsdone @ Feb 3 2014, 08:5...   Feb 3 2014, 08:39
|||- - scifi   Цитата(KnightIgor @ Feb 3 2014, 12:39) Вы...   Feb 3 2014, 09:22
|||- - Сергей Борщ   Цитата(KnightIgor @ Feb 3 2014, 10:39) Вы...   Feb 3 2014, 09:26
|||- - KRS   Цитата(Сергей Борщ @ Feb 3 2014, 13:26) С...   Feb 4 2014, 00:44
||- - scifi   Цитата(romas2010 @ Feb 13 2014, 00:06) 2)...   Feb 12 2014, 20:12
||- - ohmjke   Цитата(scifi @ Feb 13 2014, 00:12) С огов...   Feb 14 2014, 05:46
||- - scifi   Цитата(ohmjke @ Feb 14 2014, 09:46) Имеет...   Feb 14 2014, 06:14
|- - allsettingsdone   Цитата(Палыч @ Feb 3 2014, 09:27) DCB, DC...   Feb 3 2014, 10:46
- - SII   Цитата(allsettingsdone @ Feb 3 2014, 11:1...   Feb 3 2014, 10:16
- - toweroff   Ну как сказать... с нулевой оптимизацией в Keil 5 ...   Feb 14 2014, 10:03
- - ViKo   Цитата(toweroff @ Feb 14 2014, 13:03) Опт...   Feb 14 2014, 10:30


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

 


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


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