можно еще попробовать
char string[] = "Hello World\n";
char *string = "Hello World\n";
и static если string неглобальная переменная
а в чем mojon twins компилят?
С уважением,
Jerri / Red Triangle.
сокращение кода примерно на 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";
Строка красиво и главное целостно ложится в бинарник... и это радует!
и ещё об оптимизации... строка
unsigned char string[]="Hello World\n";
если string не глобальная а объявленна в функции, то значит она auto и должна быть в стеке
IAR я люблю и не выкину, а вот SDCC пожалуй утоплю... итак...
C:
ASM:Код:unsigned char string[]="Hello World\n"; string[0]='X';
IARка молодец?Код: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
---------- Post added at 00:58 ---------- Previous post was at 00:51 ----------
но есть 2 варианта создаваться:
1. скопировать строку откуда-то из памяти целиком
2. инициализировать её побайтово.
так вот по первому варианту работает IAR, а SDCC по второму.
MegaMyth, более того, SDCC для кода
static const char * const str = "Hello word!";
генерица в памяти указатель и код его инициализации :S
Последний раз редактировалось KPOTOB; 12.11.2010 в 23:17.
Эту тему просматривают: 1 (пользователей: 0 , гостей: 1)