ха, говнокод заметил str + 0x1000
str & 0x1000 компилится как set 4,d существенно короче
TS-Labs wrote:Про memset в этам чяти не слышали? =)
TS-Labs wrote:Тебе еще в чятике 200 раз говорилось - НЕ ЮЗАТЬ библиотечные функции.
deathsoft wrote:Видимо не & а |
unsigned char test(unsigned char *a, unsigned char size)
{
unsigned char crc = 0xFF;
unsigned char i;
while (size--)
{
crc ^= *a++;
for (i = 0; i < 8; i++)
crc = crc & 0x80 ? (crc<<1) ^ 0x31 : crc<<1;
}
return crc;
}
PUSH DE
POP IY
LD IXL,C
; 93. {
EXX
LD E,255
EXX
?0022:
; 94. unsigned char crc = 0xFF;
; 95. unsigned char i;
; 96.
LD B,IXL
DEC IXL
INC B
DEC B
JR Z,?0021
?0023:
; 97. while (size--)
; 98. {
LD A,(IY+0)
EXX
XOR E
LD E,A
EXX
; 99. crc ^= *a++;
LD IXH,0
INC IY
?0025:
LD A,IXH
CP 8
JR NC,?0022
?0026:
; 100. for (i = 0; i < 8; i++)
EXX
LD A,E
EXX
LD B,A
BIT 7,B
JR Z,?0029
SLA B
LD A,B
XOR 49
JR ?0030
?0029:
ADD A,A
?0030:
EXX
LD E,A
EXX
INC IXH
; 101. crc = crc & 0x80 ? (crc<<1) ^ 0x31 : crc<<1;
JR ?0025
?0024:
; 102. }
?0021:
EXX
LD A,E
TS-Labs wrote:#pragma data_alignment = N
#pragma memory=constseg(MY_DATA)
const unsigned char data[]={l,2,3,4,5};
#pragma memory=default
#pragma memory=dataseg(mydseg)
/* you must define mydseg in the linker file */
int loopc;
#pragma memory=default
TS-Labs wrote:класть вары/консты по алайнутым адресам?
Видимо, тайлоспрайтам не хватает ЛЕ и выравнивание даты по 128кБ даёт профит аж в 38 ЛЕ. А ручками выравнивание делать -- не для барей :-DDimkaM wrote:А зачем? мож мне тоже надо
Return to Пентева - софт и железо
Users browsing this forum: No registered users and 3 guests