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