IAR вопросик

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

Postby DimkaM » 21 May 2013, 17:37

Почему иар(з80) генерит такое:
Code: Select all
#define MTYPER ((volatile unsigned int*)(WIZ_BASE_ADDR+0x0030))
   LD   HL,16432
   LD   C,(HL)
   INC   HL
   LD   B,(HL)
   PUSH   BC
   LD   HL,?0042
   PUSH   HL
   CALL   printf
   POP   AF
   POP   AF
; 133.       printf("MTYPER %d\n", *MTYPER);
а не ld bc,(16432) ?

Что то я не так делаю, или иар тупой, или на то есть некие причины
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 21 May 2013, 17:45

....часть вторая:
Code: Select all
#define GAR ((volatile unsigned char*)(WIZ_BASE_ADDR+0x0010))
   LD   BC,(16402)
   LD   B,0
   PUSH   BC
   LD   BC,(16403)
   LD   B,0
   PUSH   BC
   LD   BC,(16400)
   LD   B,0
   PUSH   BC
   LD   BC,(16401)
   LD   B,0
   PUSH   BC
   LD   HL,strip
   PUSH   HL
   CALL   printf
   POP   AF
   POP   AF
   POP   AF
   POP   AF
   POP   AF
; 56.       printf(strip,GAR[1],GAR[0],GAR[3],GAR[2]); 
чё за херня
там он типа не умеет bc загрузить из памяти, а тут типа смог

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

Postby fk0 » 24 May 2013, 10:59

IAR таки тупой (отрабатывает операцию "звёздочка" в лоб). попробуй написать extern int MYTYPER и через линкер назначить ему адрес в 16432...
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby DimkaM » 24 May 2013, 14:53

я вот думаю выделить область памяти с адреса WIZ_BASE_ADDR, и туда накидать переменных MTYPER,GAR etc

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

Postby fk0 » 24 May 2013, 19:07

А чего ты в целом хочешь сделать? В WIZ_BASE_ADDR, похоже, проще структуру положить. Если, конечно, это не физические регистры wiznet'а. Тогда структуру не стоит, а нужно руками писать код передающий по байтику в нужной ендианности (т.е. те же инты нельзя так просто записывать, строго вручную и по байту).
* Origin: зип файл! (2:5030/1559)
User avatar
fk0
 
Posts: 1533
Joined: 07 Apr 2007, 01:08
Group: Registered users

Postby DimkaM » 24 May 2013, 19:21

Ага, физические реги визнета.
Тока они переделаны в литтлэндиан, инверсией А0. Я читаю/пишу их как обычные инты
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 07 Jun 2013, 17:22

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

Postby fk0 » 07 Jun 2013, 23:35

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

Postby deathsoft » 08 Jun 2013, 19:57

В линкер скрипте есть опция назначить символу с определенным именем определенное значение.
Code: Select all
-D?BANK_SWITCH_PORT_X_L08=7FFD
User avatar
deathsoft
 
Posts: 4658
Joined: 07 Apr 2007, 00:58
Group: Registered users

Postby DimkaM » 09 Jun 2013, 08:06

теперь всё красивенько(и через .xcl и через .asm)
Code: Select all
   LD   HL,(WIZ_REG_MTYPER)
   PUSH   HL
   LD   HL,?0053
   PUSH   HL
   CALL   printf
   POP   AF
   POP   AF
; 170.       printf("MTYPER %d\n", *MTYPER);
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1010
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

PreviousNext

Return to Coding

Who is online

Users browsing this forum: No registered users and 1 guest

cron