Важная информация

User Tag List

Страница 3 из 3 ПерваяПервая 123
Показано с 21 по 28 из 28

Тема: Кросплатформенный Си компилятор (Cross Platform C Compiler)

  1. #21
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от MegaMyth Посмотреть сообщение
    А вот что-то на вроде

    Код:
    unsigned char string[255]={"Hello World\r"};

    генерит что-то вообще страшное... на инициализацию каждого байта уходит примерно 15-17 байт кода на асме...
    А что выдаст на
    Код:
    static char string[255] = "Hello World\n";
    ?

  2. #22
    Veteran Аватар для sergey2b
    Регистрация
    18.04.2009
    Адрес
    Москва
    Сообщений
    1,613
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    можно еще попробовать
    char string[] = "Hello World\n";
    char *string = "Hello World\n";
    и static если string неглобальная переменная

  3. #23
    Guru Аватар для jerri
    Регистрация
    01.03.2005
    Адрес
    Samara
    Сообщений
    4,752
    Спасибо Благодарностей отдано 
    265
    Спасибо Благодарностей получено 
    279
    Поблагодарили
    207 сообщений
    Mentioned
    12 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    а в чем mojon twins компилят?
    С уважением,
    Jerri / Red Triangle.

  4. #24
    Member Аватар для MegaMyth
    Регистрация
    04.12.2006
    Адрес
    Ижевск
    Сообщений
    153
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от Vitamin Посмотреть сообщение
    А что выдаст на
    Код:
    static char string[255] = "Hello World\n";
    ?
    сокращение кода примерно на 300 байт. но строка так целиком в бинарнике и не появилась. в этом плане IAR получше будет...

    ---------- Post added at 22:14 ---------- Previous post was at 21:22 ----------

    и ещё об оптимизации... строка
    unsigned char string[]="Hello World\n";
    SDCC превращает вот в это УГ!!!
    Код:
    ;main.c:7: unsigned char  string[]="Hello World\n";
        ld    hl,#0x0003
        add    hl,sp
        ld    c,l
        ld    b,h
        ld    a,#0x48
        ld    (bc),a
        ld    e,c
        ld    d,b
        inc    de
        ld    a,#0x65
        ld    (de),a
        ld    e,c
        ld    d,b
        inc    de
        inc    de
        ld    a,#0x6C
        ld    (de),a
        ld    hl,#0x0003
        add    hl,bc
        ex    de,hl
        ld    a,#0x6C
        ld    (de),a
        ld    hl,#0x0004
        add    hl,bc
        ex    de,hl
        ld    a,#0x6F
        ld    (de),a
        ld    hl,#0x0005
        add    hl,bc
        ex    de,hl
        ld    a,#0x20
        ld    (de),a
        ld    hl,#0x0006
        add    hl,bc
        ex    de,hl
        ld    a,#0x57
        ld    (de),a
        ld    hl,#0x0007
        add    hl,bc
        ex    de,hl
        ld    a,#0x6F
        ld    (de),a
        ld    hl,#0x0008
        add    hl,bc
        ex    de,hl
        ld    a,#0x72
        ld    (de),a
        ld    hl,#0x0009
        add    hl,bc
        ex    de,hl
        ld    a,#0x6C
        ld    (de),a
        ld    hl,#0x000A
        add    hl,bc
        ex    de,hl
        ld    a,#0x64
        ld    (de),a
        ld    hl,#0x000B
        add    hl,bc
        ex    de,hl
        ld    a,#0x0A
        ld    (de),a
    а к слову сказать
    unsigned char * string ="Hello World"; делает как раз то что надо :-), только такая запись бывает не всегда уместна. сяс посмотрю что компилит IAR...

    ---------- Post added at 22:20 ---------- Previous post was at 22:14 ----------

    IAR фиолетово как писать
    usnigned char string[]="Hello World"; или
    usnigned char * string="Hello World";
    Строка красиво и главное целостно ложится в бинарник... и это радует!

  5. #25
    Veteran Аватар для sergey2b
    Регистрация
    18.04.2009
    Адрес
    Москва
    Сообщений
    1,613
    Спасибо Благодарностей отдано 
    167
    Спасибо Благодарностей получено 
    13
    Поблагодарили
    12 сообщений
    Mentioned
    1 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    и ещё об оптимизации... строка
    unsigned char string[]="Hello World\n";

    если string не глобальная а объявленна в функции, то значит она auto и должна быть в стеке

  6. #26
    Vitamin C++ Аватар для Vitamin
    Регистрация
    14.01.2005
    Адрес
    Таганрог, Россия
    Сообщений
    4,258
    Спасибо Благодарностей отдано 
    9
    Спасибо Благодарностей получено 
    84
    Поблагодарили
    36 сообщений
    Mentioned
    7 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    Цитата Сообщение от sergey2b Посмотреть сообщение
    если string не глобальная а объявленна в функции, то значит она auto и должна быть в стеке
    ...и должна создаваться во время исполнения.

    Цитата Сообщение от MegaMyth Посмотреть сообщение
    IAR фиолетово как писать
    usnigned char string[]="Hello World"; или
    usnigned char * string="Hello World";
    Попробуй после добавить
    Код:
    string[0] = 'Z';
    Если по прежнему будет грузить указатель на строку из ресурсов- можешь IAR выкинуть.

  7. #27
    Member Аватар для MegaMyth
    Регистрация
    04.12.2006
    Адрес
    Ижевск
    Сообщений
    153
    Спасибо Благодарностей отдано 
    1
    Спасибо Благодарностей получено 
    2
    Поблагодарили
    2 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    IAR я люблю и не выкину, а вот SDCC пожалуй утоплю... итак...
    C:
    Код:
      unsigned char string[]="Hello World\n";
      string[0]='X';
    ASM:
    Код:
    806e 39        ADD     HL,SP
    806f 5D        LD      E,L
    8070 54        LD      D,H
    8071 21F480    LD      HL,80F4H
    8074 010D00    LD      BC,000DH
    8077 EDB0      LDIR    
    8079 DD36F258  LD      (IX-0EH),58H
    IARка молодец?

    ---------- Post added at 00:58 ---------- Previous post was at 00:51 ----------

    Цитата Сообщение от Vitamin Посмотреть сообщение
    ...и должна создаваться во время исполнения.
    но есть 2 варианта создаваться:
    1. скопировать строку откуда-то из памяти целиком
    2. инициализировать её побайтово.

    так вот по первому варианту работает IAR, а SDCC по второму.

  8. #28
    Junior
    Регистрация
    10.07.2010
    Адрес
    Турку
    Сообщений
    21
    Спасибо Благодарностей отдано 
    0
    Спасибо Благодарностей получено 
    0
    Поблагодарили
    0 сообщений
    Mentioned
    0 Post(s)
    Tagged
    0 Thread(s)

    По умолчанию

    MegaMyth, более того, SDCC для кода
    static const char * const str = "Hello word!";

    генерица в памяти указатель и код его инициализации :S
    Последний раз редактировалось KPOTOB; 12.11.2010 в 23:17.

Страница 3 из 3 ПерваяПервая 123

Информация о теме

Пользователи, просматривающие эту тему

Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)

Похожие темы

  1. ZX-Poly™ platform
    от Raydac в разделе ZX Концепции
    Ответов: 152
    Последнее: 30.05.2011, 08:28
  2. Saboteur 1, 2 - Remake (PC platform)
    от Sab2 в разделе PC Remakes
    Ответов: 14
    Последнее: 05.08.2009, 16:22
  3. кросс компилятор С для Z80
    от vitasam в разделе Программирование
    Ответов: 24
    Последнее: 04.03.2007, 18:03
  4. C compiler
    от vitasam в разделе Программирование
    Ответов: 17
    Последнее: 25.08.2005, 16:42
  5. An 8080/Z80 C Compiler
    от breeze в разделе Программирование
    Ответов: 1
    Последнее: 18.08.2005, 06:54

Ваши права

  • Вы не можете создавать новые темы
  • Вы не можете отвечать в темах
  • Вы не можете прикреплять вложения
  • Вы не можете редактировать свои сообщения
  •