Итак, я бы сделал это с помощью экспериментов.Я бы скомпилировал двоичные файлы для обоих типов архитектур, а затем использовал инструменты gcc, чтобы увидеть, каковы объемы памяти.В следующих примерах я буду сравнивать архитектуры x86_64 и RISCV.Первый метод, который я бы использовал, - это инструмент размера, который разбивает различные части эльфа и сообщает размер.
# riscv64-unknown-elf-size Test.elf
, который выведет что-то вроде этого
text data bss dec hex filename
XXXXXX XXX XXXXXXX XXXXXXX XXXXXX Test.elf
Затем сравните этодо версии x86:
# size Test.exe
, которая будет выводить что-то вроде этого
text data bss dec hex filename
XXXXXX XXX XXXXXXX XXXXXXX XXXXXX Test.exe
Другой метод заключается в преобразовании вашего эльфа в прямой двоичный файл, который будет бит за битом, что ставитсяв вашу память (это может быть не так для более сложных архитектур памяти, но мы предположим простой случай, когда все это хранится и выполняется из ОЗУ).Инструментом для этого является objcopy.
# riscv64-unknown-elf-objcopy -O binary Test.elf Test.elf.bin
# objcopy -O binary Test.exe Test.exe.bin
Затем проверьте размеры двух полученных бинарных файлов.