Поскольку ваша АКТУАЛЬНАЯ проблема заключается в том, что вам нужен огромный исполняемый файл, решение является чем-то совершенно отличным от того, что вы пробовали, и именно поэтому вы всегда должны указывать, в чем заключается ваша настоящая проблема, а не предполагать, что ваша попытка является правильной или подходящей , Как упоминалось в комментариях, это XY-проблема
Вот довольно простое решение. Сначала создайте шаблон для программы сборки. На моем компьютере с использованием Linux и Nasm это выглядит так:
section .text
global _start
_start:
Я назвал этот файл nop.asm
Теперь я использовал простой цикл bash, чтобы добавить 10 миллионов nop: s:
$ for i in $(seq 10000000); do echo nop >> nop.asm ; done
Добавить остальную часть шаблона:
$ echo "mov eax,1" >> nop.asm
$ echo "int 0x80" >> nop.asm
Примечание: шаблон может отличаться в вашей системе
Теперь у вас будет файл с именем nop.asm, который выглядит следующим образом:
section .text
global _start
_start:
nop
nop
...
nop
nop
mov eax,1
int 0x80
Скомпилируйте и свяжите это:
$ nasm -f elf64 nop.asm
$ ld -s -o nop nop.o
А теперь у вас довольно большой двоичный файл:
$ ls -lh
total 94M
-rwxr-xr-x 1 klutt klutt 16M Oct 30 21:35 nop
-rw-r--r-- 1 klutt klutt 63M Oct 30 21:33 nop.asm
-rw-r--r-- 1 klutt klutt 16M Oct 30 21:34 nop.o
Если бы у меня возникла та же проблема с nasm, что и с gcc, я бы подумал написать программу, которая пишет исполняемый файл напрямую.