IAR вопросик

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

Postby lvd » 21 Nov 2012, 13:17

const char * banner="траляля";
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby DimkaM » 21 Nov 2012, 14:37

lvd wrote:const char * banner="траляля";

варнингов нету, но мне так не нравится. Дополнительно создаётся константа с указателем на строку.
вариант с просто массивом
Code: Select all
   LD   HL,?0030
   PUSH   HL
   LD   HL,?0029
   PUSH   HL
   LD   HL,banner
   PUSH   HL
   LD   A,(ftp)
   LD   C,A
   PUSH   BC
   CALL   fsprintf
   POP   AF
   POP   AF
   POP   AF
   POP   AF
; 137.                       fsprintf(ftp.control, banner, HOSTNAME, VERSION);
с указателем
Code: Select all
   LD   HL,?0030
   PUSH   HL
   LD   HL,?0029
   PUSH   HL
   LD   HL,(banner)
   PUSH   HL
   LD   A,(ftp)
   LD   C,A
   PUSH   BC
   CALL   fsprintf
   POP   AF
   POP   AF
   POP   AF
   POP   AF
; 137.                       fsprintf(ftp.control, banner, HOSTNAME, VERSION);   
Last edited by DimkaM on 21 Nov 2012, 15:09, edited 1 time in total.
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby lvd » 21 Nov 2012, 14:47

1. забить
2. примириццо с варнунгом
3. примирить компайлер с варнунгом насильно, если можно (чтоб не пиздел)
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby DimkaM » 21 Nov 2012, 15:28

вощем победил, может и через жопу, но победил.
Code: Select all
ftpd.h
#define BANNER "220 %s FTP version %s ready.\r\n"

Code: Select all
ftpd.c
const char banner[] = BANNER;

Code: Select all
main.c
extern const char banner[sizeof(BANNER)];
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
Joined: 24 Mar 2010, 12:42
Location: г.Щёлково М.О.
Group: Registered users

Postby DimkaM » 21 Nov 2012, 15:33

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

Postby TS-Labs » 21 Nov 2012, 15:59

DimkaM wrote:немогу сообразить как объявить правильно, оно не критично, но глаз режет при компиляции

Продолжайте, продолжайте Шура юзать говнокомиляторы.
Вот иар:
main.c
Code: Select all
const char banner[] = "220 %s FTP version %s ready.\r\n";
void test();
int main(void)
{
   while(1)
   {
      test();
   }
}

test.c
Code: Select all
extern const char banner[]; 
void test()
{
   int i, j;
   for (i=0; banner[i]; i++)
      j += banner[i];
}

Лог иара:
Code: Select all

    IAR Z80/64180 C-Compiler V4.06A/W32
    Copyright 2001 IAR Systems. All rights reserved.

Errors: none
Warnings: none
Code size: 5
Constant size: 31
Static variable size: Data(0) Iram(0)


    IAR Z80/64180 C-Compiler V4.06A/W32
    Copyright 2001 IAR Systems. All rights reserved.

Errors: none
Warnings: none
Code size: 32
Constant size: 0
Static variable size: Data(0) Iram(0)


     IAR Universal Linker V5.4.1.30
     Copyright 1987-2012 IAR Systems AB.

134 bytes of CODE memory (+ 3 absolute )
128 bytes of DATA memory

Errors: none
Warnings: none

test.lst
Code: Select all
\   0000                    NAME    test(16)
   \   0000                    RSEG    CODE(0)
   \   0000                    EXTERN  banner
   \   0000                    PUBLIC  test
   \   0000                    EXTERN  ?CLZ80L_4_06_L00
   \   0000                    RSEG    CODE
      1          extern const char banner[]; 
      2         
      3          void test()
   \   0000            test:
   \   0000  C5                PUSH    BC
   \   0001  D5                PUSH    DE
   \   0002  DDE5              PUSH    IX
      4          {
      5                  int i, j;
   \   0004  110000            LD      DE,0
   \   0007            ?0001:
   \   0007  210000            LD      HL,banner
   \   000A  19                ADD     HL,DE
   \   000B  7E                LD      A,(HL)
   \   000C  B7                OR      A
   \   000D  280C              JR      Z,?0000
   \   000F            ?0002:
      6                  for (i=0; banner[i]; i++)
   \   000F  210000            LD      HL,banner
   \   0012  19                ADD     HL,DE
   \   0013  4E                LD      C,(HL)
   \   0014  0600              LD      B,0
   \   0016  DD09              ADD     IX,BC
   \   0018  13                INC     DE
      7                          j += banner[i];
   \   0019  18EC              JR      ?0001
   \   001B            ?0000:
   \   001B  DDE1              POP     IX
   \   001D  D1                POP     DE
   \   001E  C1                POP     BC
   \   001F  C9                RET
      8          }
   \   0020                    END

TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby lvd » 21 Nov 2012, 16:37

А теперь сделай sizeof(banner[])
F̞͖̭̿̔ͯu̐̅cͬ̑ͩk̨̤̳͇̮̭̪̠̽̿̓̆ͭͩ ̷̩̰͎̩͓̘̾̀ͬ̊ͭ͛ͅda̝̺͙̬͎̝̾͟ ̰̜̝̯͉̯̖̓̎́ͨ̽ͫ͟f̟͇̭̀ͬͨͭ̐̚u̹̼̹̗̞͑̔͂͐̚cͭ̅̊̆̒̆ǩ̝̩̯́ͥ̔̍̑ḭ͓͍̳̬ͦ̽͂n͍͎͈̈̅ͩͬ ̊ͫ̂̾̑̈́f̲͚͉͓͗̋́ͧͦ̅ȗ͇̲̻͈̲̅̎͗͒ͭ͡c̬̟̠̹̯̈́ͩ͘ͅk̫̠̻̋͜a̲͒̾̇!͙͕̺͉̗̩̲̂̏̄̀
User avatar
lvd
 
Posts: 7262
Joined: 07 Apr 2007, 21:28
Group: Registered users

Postby DimkaM » 21 Nov 2012, 16:48

TS-Labs wrote:Продолжайте, продолжайте Шура юзать говнокомиляторы.
Вот иар:

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

Postby TS-Labs » 21 Nov 2012, 17:13

lvd wrote:А теперь сделай sizeof(banner[])

Сделал:
Code: Select all
        j = sizeof(banner[]);
--------------------------^
"test.c",6  Error[98]: Primary expression expected
Errors: 1

Мсье не дружит с синтаксом цэ?

Code: Select all
      6                  j = sizeof(banner[0]);
   \   0004  DD210100          LD      IX,1


DimkaM wrote:у тя походу варнинги вырублены

Похоже на то.
TS-Labs
 
Posts: 1150
Joined: 19 Apr 2010, 10:10
Location: Wildest West
Group: Registered users

Postby DimkaM » 21 Nov 2012, 17:17

TS-Labs wrote:j = sizeof(banner[0]);

j = sizeof(banner)
?!
у меня еггог (ежли без шаманства с девайном)
N>"Идите нахуй" со своей политикой...
DimkaM
 
Posts: 1011
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 17 guests

cron