C _ jak rozepsat řádek

Milan B. milan na bastl.sk
Sobota Duben 27 22:54:41 CEST 2013


On 27. 4. 2013 21:52, Jaroslav Buchta wrote:
> No to je asi zakladni vlastnost ARMu, nelze provadet operaci na adrese 
> nesoudelne s delkou promenne...

Lze. Aspon niektorymi instrukciami. Zavisi od ARMu

Cortex-M3:
The Cortex-M3 processor supports unaligned access only for the following 
instructions:
• LDR, LDRT
• LDRH, LDRHT
• LDRSH, LDRSHT
• STR, STRT
• STRH, STRHT.

detto M4. Ale M0 nie.

-m-

>
> Dne 27. 4. 2013 21:49, Miroslav Mraz napsal(a):
>> Když už jsme u toho C příklad:
>>
>> int main (void) {
>>    const uint8_t  pole[] = {1,2,3,4,5,6,7,8,9,10};
>>    uint8_t const* ptr = pole;
>>    ptr += 1;   // dáme si tam lichou adresu
>>    // takže tohle na Cortex-M0 spadne do HardFault_Handleru
>>    uint32_t i = *(uint32_t*) ptr;
>>    // nicméně na i386, x86_64 se to chová dle očekávání
>>    printf ("i=%X\n", i);
>>    // stejně jako tohle (a to chodí i na tom CM0) i=5040302
>>    memcpy (&i, ptr, sizeof (uint32_t));
>>    printf ("i=%X\n", i);
>>    return 0;
>> }
>>
>> Jako by instrukce ldr nesnesla lichou adresu. Ale nějak se mi nechce to
>> blíž zkoumat. Tak to berte jako malý kvíz na neděli.
>>
>> Mrazík
>>
>>
>> _______________________________________________
>> HW-list mailing list  -  sponsored by www.HW.cz
>> Hw-list na list.hw.cz
>> http://list.hw.cz/mailman/listinfo/hw-list
>
> _______________________________________________
> HW-list mailing list  -  sponsored by www.HW.cz
> Hw-list na list.hw.cz
> http://list.hw.cz/mailman/listinfo/hw-list



Další informace o konferenci Hw-list