ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Суббота
6 июля
162439
AlexBi (29.07.2009 10:42, просмотров: 903)
Заметил странность в поведении линкера от С30, точнее странное вычисление выражений в .gld Вот фрагмент скрипта: MEMORY { ... program (xr) : ORIGIN = 0xe00, LENGTH = (0x1fffe-0xe00) ... } SECTIONS { .text : { ... blkStart1 = .; blkStart2 = ALIGN(0x8000); blkStart3 = (. + 0x8000 - 1) & ~(0x8000 - 1); ... } >program А вот что получается в результате: 0x001a0a blkStart1 0x008000 blkStart2 0x008e00 blkStart3 Т.е. команда ALIGN работает правильно, а выражение с . вычисляется с каким-то смещением, видимо связанным с начальным адресом program. Интересно, это так и должно быть у всех gcc или это микрочиповцы что-то от сенбя добавили?