Дока по иар Ц z80

Programs, sources, embedded, demomaking, whatsoever related to subj :)

Postby deathsoft » 02 Mar 2011, 20:53

OCR с ошибками.
Attachments
IAR ewz80 - C Compiler (OCR).pdf
(2.1 MB) Downloaded 1188 times
User avatar
deathsoft
 
Posts: 4664
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby DimkaM » 25 Dec 2011, 14:18

фенкс.
Плохо что раньше сабжа тут не заметил.
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 08 Jan 2012, 10:54

del Как в ИАРе сделать хитрый макрос?
незнаю как объяснить.
допустим есть в проге вот такой вызов:
Code: Select all
if (disk_read(fs->drv, fs->win, sector,1) != RES_OK)
   return FR_DISK_ERR;
Мне его ручками приходится изменять на такое:
Code: Select all
SET_DIO_PAR(fs->drv, fs->win, sector,1);
if (disk_read() != RES_OK)
   return FR_DISK_ERR;
так как в ассемблерной вставке тяжело такую кучу параметров юзать, приходится юзать статичную структуру. SET_DIO_PAR это макрос который заполняет структуру:
Code: Select all
//Parameters for disk_read and disk_write
typedef struct {
   BYTE  drv;
   const BYTE* buf;
   DWORD* sec;
   BYTE  num;
} DIO_PAR;
extern DIO_PAR dio_par;
#define SET_DIO_PAR(dr_drv,dr_buf,dr_sec,dr_num) {\
  dio_par.drv=dr_drv; \
  dio_par.buf=dr_buf; \
  dio_par.sec=&dr_sec; \
  dio_par.num=dr_num;}

И у меня не получается сделать макрос который бы заполнял структуру, вызавал дискодрайвер и возвращал от него результат.
В Сях я непонимаю, ткните носом в мануал по макросам плиз, а то фатфс периодически обновляется и руками неохота патчить.
Изначально была промежуточная функция, но в странице не хватало места под драйвер NeoGS-SD
Last edited by DimkaM on 08 Jan 2012, 12:25, edited 3 times in total.
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby fk0 » 08 Jan 2012, 11:20

Дурость, дурость и ещё раз дурость. Нет проблем с ассемблером и параметрами, по крайней мере в hitech C. А статические переменные кончаются аццким гоновкодом и бесконечными глюками.
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby DimkaM » 08 Jan 2012, 11:56

del
fk0 wrote:Дурость, дурость и ещё раз дурость. Нет проблем с ассемблером и параметрами,

Проблем нету, но тогда вообще ни один драйвер в страницу с фатфс не лезет, экономия ощутимая. Тама таких вызовов штук тридцать, через регистры максимум два ворда передаётся, всё остальное через стек.
fk0 wrote:А статические переменные кончаются аццким гоновкодом и бесконечными глюками.
И опять же аццкой экономией.
Про макросы лучше расскажи чёнить.
Last edited by DimkaM on 08 Jan 2012, 12:25, edited 1 time in total.
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby deathsoft » 08 Jan 2012, 12:09

DimkaM wrote:Как в ИАРе сделать хитрый макрос?

Заведи отдельную тему, а эта тема с докой по иару а не с обсуждением программирования на нем.
Юзать надо естественно структуру на стеке с адресацией через IX, IY. В программу на асме передавать адрес этой структуры.
User avatar
deathsoft
 
Posts: 4664
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby jdigreze » 08 Jan 2012, 12:31

fk0 wrote:Нет проблем с ассемблером и параметрами, по крайней мере в hitech C
В SDCC тоже не замечал.
DimkaM wrote:но тогда вообще ни один драйвер в страницу с фатфс не лезет, экономия ощутимая
Мож код фатфс неоптимален? Голый асм для фат16 не более 4Кб, для Си думаю будет не больше 8Кб. Фат32 по сути только оперирует в двое большими операндами, не думаю что код будет сильно раздутее фат16. Буфера нормально в 2Кб уложить.
Сколько меня не корми, волк всё равно в лес смотреть будет
jdigreze
 
Posts: 1478
Joined: 01 Aug 2008, 06:49
Location: Агбан
Group: Registered users

Postby fk0 » 08 Jan 2012, 13:51

DimkaM wrote:Проблем нету, но тогда вообще ни один драйвер в страницу с фатфс не лезет, экономия ощутимая. Тама таких вызовов штук тридцать, через регистры максимум два ворда передаётся, всё остальное через стек.


А почему именно через стек -- ты никогда не задумывался? Ну конечно, Керниган и Дейкстра -- круглые идиоты, оссемблира не знают.

А статические переменные кончаются аццким гоновкодом и бесконечными глюками.

И опять же аццкой экономией.


Аж цельных 200 байт. Обосраться! Тему можно закрывать.

Про макросы лучше расскажи чёнить.


Я из твоей писанины ничего не понял. Научись на русском языке выражать мысли. Ассемблер не актуален.
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby fk0 » 08 Jan 2012, 13:53

deathsoft wrote:Юзать надо естественно структуру на стеке с адресацией через IX, IY. В программу на асме передавать адрес этой структуры.


У него после выполнения пролога функции то ли в IX, то ли в IY так называемый frame pointer хранится, относительно которого прекрасно адресуются все переданные в функцию аргументы...
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby нолька » 08 Jan 2012, 13:57

требую удалить профессионалов из топика :1tooth:
<alone> предлагаю тслабсу дать транк, но с условием чтобы он впилил туда спрайтотайлы, но не трогал атм
<LordVader> alone: яготов всосать срайты от тслабса )
<LordVader> атм режимы это пиздец
User avatar
нолька
рОвный
 
Posts: 1200
Joined: 08 Apr 2007, 20:12
Group: Registered users

Next

Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

cron