Size: a a a

Ассемблер

2021 September 15

E

Entusiast in Ассемблер
А, и ещё у тебя p_offset на 0 указывает
источник

s

s54816 in Ассемблер
Никакой. В сегментах виртуальный адрес повыше указывай, и всё.
источник

p

piter in Ассемблер
повыше чем было или повыше чем что
источник

s

s54816 in Ассемблер
Повыше, чем ноль 0x2000.
источник

E

Entusiast in Ассемблер
Он и так "повыше"
источник

p

piter in Ассемблер
а, лол, 0x8000000+?
источник

s

s54816 in Ассемблер
Ну например да.
источник

E

Entusiast in Ассемблер
Не надо так делать
источник

s

s54816 in Ассемблер
Почему вдруг?
источник

p

piter in Ассемблер
источник

E

Entusiast in Ассемблер
Потому что p_vaddr указывает на адрес виртуальной памяти, по которому будет загружен первый байт сегмента.
Зачем ему его загружать на "повыше"?
источник

p

piter in Ассемблер
а можно вообще без адреса физической памяти, если это в моей системе роли не играет?
источник

E

Entusiast in Ассемблер
Нельзя. Нужно указать загрузчику, куда ему грузить сегменты

Вообще - тут уточняй: https://www.man7.org/linux/man-pages/man5/elf.5.html
источник

E

Entusiast in Ассемблер
Ой, не так прочитал.
Да, на BSD можно указывать p_paddr = 0
(Ну или если для твоей системы она не важна)
источник

p

piter in Ассемблер
кажется мне что зря из линукса удалили поддержку a.out. было бы всё гораздо проще
источник

E

Entusiast in Ассемблер
Что? Какая поддержка a.out
источник

s

s54816 in Ассемблер
Старые, более простые исполняемые файлы. Как IMAGE_FILE_HEADER в PE, и всё.
источник

p

piter in Ассемблер
с самого начала времён до девяностых
источник

P

Prudya in Ассемблер
Ну, это такая глупая тавтология. Например, как часто вижу, что пишут ттл-логика.
источник

s

s54816 in Ассемблер
В общем, я ремапнул повыше файл, соответственно пофиксил энтрипоинт (и ещё пофиксил, чтобы оно в заголовки не указывало), и размеры пофиксил виртуальный и физический у секции (просто на размер файла), и оно грузится теперь нормально.
источник