У вас должен быть доступ на чтение ко всему сегменту кода. Вероятно, это связано с получением символов от компоновщика, которые ссылаются на первый и последний адреса кода. Вы можете преобразовать эти адреса в указатель данных подходящего размера и запустить любой обычный алгоритм CRC или контрольной суммы по сегменту кода.
Чтобы проверить CRC, вам необходимо знать его авторитетное значение. Это можно сделать после компоновки, вычислив CRC и вставив его в инициализатор для подходящей переменной.
Во встроенных системах, где я использовал аналогичную технику в качестве проверки целостности перед заменой прошивки при обновлении в полевых условиях, я обычно размещаю карту памяти образа прошивки так, чтобы она начиналась со структуры данных только для чтения. Легко написать утилиту для вычисления CRC изображения и исправить структуру. После этого загрузчик встроенной системы может проверить этот CRC во время загрузки, чтобы определить, имеется ли допустимая прошивка, и вернуться к утилите обновления, если нет. Конечно, утилита обновления использует тот же самый CRC для проверки нового образа перед его перепрошивкой.
Редактировать: Некоторые ссылки на CRC, в случае, если это полезно: