@hirthwork

hirthwork

Меня зовут Пить
hirthwork

Всего лишь бабочка, которой снится, что она программист

Славный отзывчивый парень © https://t.me/point_im/161357

32 я читаю 94 меня читают
5704 постов
47424 комментариев
hirthwork
21 May 18:15

Сегодня я узнал, что у исполняемых файлов в x86_64 максимальный размер исполняемого файла — 2ГБ. И ещё я узнал, что в нашей системе сборки мы регулярно в этот лимит упираемся.

Рекомендовано: cycl0ne
21 May 18:17

это у эльфов или у экзешников?

21 May 18:19

кстати, не так давно нарывался. подлинуксом бинарь примерно 1мб, а под виндой примерно 1гб. потому что опции оптимизации другие и куча нулей легла не в .bss а в какую-то дату.

21 May 18:27

В Windows 4 гигабайта, специально сейчас проверил.

21 May 18:32

это для стрипнутого, или для с дебагом?

#zmphq/4 в ответ на /3
21 May 18:38

Это я сделал SFX-архив. Если точнее, то 4 гигабайта -1 байт, т.е. 4294967295 байт.

Комментарий был отредактирован в 18:38:30 21.05.2020
#zmphq/5 в ответ на /4
21 May 18:40

сфх - другая история.
смотри. в память грузится не весь экзешник, а только избранные секции. возможно, их размеры-смещения 32 бит. а дальше с хвоста может быть любая куча говен, которые неинтересны загрузчику

#zmphq/6 в ответ на /5
21 May 18:41

Один фиг, 4294967296 никуда не грузится, а 4294967295 — грузится.

#zmphq/7 в ответ на /6
21 May 19:22

http://www.godevtool.com/GoasmHelp/64bits.htm

The executable "image" (the code/data as loaded in memory) of a Win64 file is limited in size to 2GB. This is because the AMD64/EM64T processors use relative addressing for most instructions, and the relative address is kept in a dword. A dword is only capable of holding a relative value of ±2GB.

Если sfx пишет данные не в data-секцию, а просто дописывает в конец файла, то это не то. Я про настоящие экзешники говорю

#zmphq/8 в ответ на /3
21 May 19:31

кстати, у иа16 релятив вообще примерно +-128 байт, а экзешники аж до почти 640кб. так что отмазка - говноватая. вин16 - те же 127, а экзешники уже мегабайтами меряются.

#zmphq/9 в ответ на /8
21 May 19:34

The x86-64 ABI used by Linux defines a "large model" specifically to avoid such size limitations, which includes 64-bit relocation types for the GOT and PLT. (See the table in section 4.4.2, and the instruction sequences in 3.5.5 which show how they are used.)

тоже интересно.

#zmphq/10 в ответ на /8
21 May 20:07

можно трамполинизировать через релокации, как традиционно делали в хуе86, по идее

#zmphq/11 в ответ на /8
21 May 20:08

вон в /10 об этом говорится вроде

#zmphq/12 в ответ на /11
21 May 20:57

Изверг, тебе куда столько? И так всё тормозит.

21 May 20:59

хардкодед константы, ресурсы, итп.

#zmphq/14 в ответ на /13
22 May 02:21

Два гигабайта констант?

#zmphq/15 в ответ на /14
22 May 02:24

да элементарно. наколхозить массив массивов объектов. оптимизатырь это не всегда съедает. на работе однажды столкнулся, когда упыри отказались работать подлинукс и начали криво портировать проект под винду.

и именно на опухании массива констант обломились. а еще у них линковка объектника чуть ли не час шла вместо десятка секунд.

#zmphq/16 в ответ на /15

Добавить пост

Вы можете выбрать до 10 файлов общим размером не более 10 МБ.
Для форматирования текста используется Markdown.