Типизирование от указателей до uint32 - PullRequest
0 голосов
/ 29 мая 2018

Я просматриваю файл дескриптора компоновщика и обнаружил следующие строки кода, и я не могу понять используемую здесь концепцию типов:

extern std::uintptr_t   __sROData_LMA[]; /* start of LOAD region for DATA */
uint32_t * p_src, * p_dest;
#ifdef XMC_BOOT
    // Copy the rodata segment initializers from ROM to RAM.
    // Note that all data segments are aligned by 4.
    p_src  = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA));
    p_dest = static_cast<uint32_t *>(static_cast<void*>(__sROData));
    while (p_dest < static_cast<uint32_t*>(static_cast<void*>(__eROData)))
    {
        *p_dest++ = *p_src++;
    }
#endif

Что означает строка p_src = static_cast<uint32_t *>(static_cast<void*>(__sROData_LMA)); в программе?Как здесь происходит доработка?Заранее спасибо.

1 Ответ

0 голосов
/ 29 мая 2018

Дело в том, что вы не можете разыменовать пустой указатель, но указатель uint32_t.Сам код используется для Copy the rodata segment initializers from ROM to RAM., что необходимо для двоичных файлов ELF.На самом деле это mempcy.

...