Как создать сегмент памяти с фиксированным размером, поместить данные в фиксированное положение внутри сегмента, используя MinGW - PullRequest
0 голосов
/ 30 января 2020

Я использую MinGW для создания win32 exe. Я хотел бы создать сегмент памяти с фиксированным размером, и после этого поместить переменную внутри этого сегмента по фиксированному адресу относительно начала сегмента. Кто-нибудь знает, как это сделать?

Я смог объявить свой собственный сегмент с:

  .codeflash BLOCK(__section_alignment__) :
  {
    __codeflash_start__ = . ;
    *(.codeflash)
    __codeflash_end__ = . ;    
  }

И поместить переменные в этот сегмент, используя:

__attribute__((section(".codeflash"))) 

Я использую скрипт компоновщика по умолчанию.

Спасибо.

Ответы [ 2 ]

0 голосов
/ 20 февраля 2020

Я воспользовался предложенным выше предложением для решения проблемы: добавил все в структуру и поместил эту структуру в раздел.

0 голосов
/ 30 января 2020

Допустим, 0x100 байт от начала сегмента

  .codeflash BLOCK(__section_alignment__) :
  {
    . += 0x100;
    __codeflash_start__ = . ;
    KEEP(*(.codeflash))
    KEEP(*(.codeflash*))
    __codeflash_end__ = . ;    
  }
...