C _ jak rozepsat řádek

Miroslav Mraz mraz na seznam.cz
Sobota Duben 27 21:49:35 CEST 2013


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




Další informace o konferenci Hw-list