Цитата(d__ @ Nov 27 2009, 16:31)

Ну дык назад они как раз проще вываливают, правда я не разбирался как они обрабатывают пакеты с нечетным количеством байтов...
Ну а что можно требовать от смуглолицых програмеров, начитались книжек по 150$ за штуку и хренячат не разбираясь что как и почем...
с нечетными они лишний байт копируют - никому зло от этого не причиняется.
не книжек не читали . неможет быть чтоб так в книжках писали. хотя батя мне в первом классе стоя с ремнем говорил обо мне - смортишь в книгу, видишь фигу.
переписал таки... вот
код было
Код
void UserToPMABufferCopySTM(uint8_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
{
uint32_t n = (wNBytes + 1) >> 1; /* n = (wNBytes + 1) / 2 */
uint32_t i, temp1, temp2;
uint16_t *pdwVal;
pdwVal = (uint16_t *)(wPMABufAddr * 2 + PMAAddr);
for (i = n; i != 0; i--)
{
temp1 = (uint16_t) * pbUsrBuf;
pbUsrBuf++;
temp2 = temp1 | (uint16_t) * pbUsrBuf << 8;
*pdwVal++ = temp2;
pdwVal++;
pbUsrBuf++;
}
}
стало
Код
void UserToPMABufferCopy(uint16_t *pbUsrBuf, uint16_t wPMABufAddr, uint16_t wNBytes)
{
uint32_t n = (wNBytes + 1) >> 1;
uint32_t *pma = (uint32_t *)((uint32_t)wPMABufAddr * 2 + PMAAddr);
while(n--)
*pma++ = *pbUsrBuf++;
}
листинг асм
Код
UserToPMABufferCopy:
add r3, r1, #536870912
add r1, r3, #12288
adds r2, r2, #1
lsls r1, r1, #1
asrs r2, r2, #1
movs r3, #0
b .L2
.L3: ldrh ip, [r0], #2
adds r3, r3, #1
str ip, [r1], #4
.L2: cmp r3, r2
bcc .L3
bx lr
Код
UserToPMABufferCopySTM:
add r3, r1, #536870912
add r1, r3, #12288
adds r2, r2, #1
push {r4, lr}
lsls r1, r1, #1
asrs r2, r2, #1
movs r3, #0
b .L9
.L10: ldrb r4, [r0, #-1] @ zero_extendqisi2
ldrb ip, [r0, #-2] @ zero_extendqisi2
orr ip, ip, r4, lsl #8
strh ip, [r1, r3, lsl #2] @ movhi
adds r3, r3, #1
.L9: adds r0, r0, #2
cmp r3, r2
bcc .L10
pop {r4, pc}
на выходе компиллера не сильно то и большая разница ( 5 иструкций из 17 по размеру, а по скорости подъем и лив двух регистров в стек, то при большом числе байтов теряются на общем фоне ), но зато пусть в меня кинет камнем тот кто скажет что исходник не читается с первого раза!
вот так
гдето когдато я слышал что индусам платят за количество строк ! во как. если так то разработчики железа(еще большей памяти и еще более быстрого процессора) никогда без работы не останутся