Мне было интересно, можно ли (в разумные сроки) изменить существующую или определить новую цель сборки для g cc. Цель состоит в том, чтобы внести незначительные изменения, такие как изменение регистра, в котором возвращается результат функции, или передача аргументов с использованием регистров, отличных от стандартного ABI SystemV для x86-64.
Например, если я хотите изменить регистр для возвращаемого значения функции с RAX на R8 или вернуть 64-байтовую структуру, используя YMM0 и YMM1, не записывая ее самостоятельно, используя код x86.
(Background) I ' я работаю на небольшой самозаписывающейся ОС, поэтому мне было интересно, можно ли не придерживаться ABI System-V или той, что используется Microsoft для Windows. Совместимость с существующими библиотеками и прочим не является обязательной, поскольку каждая строка кода ОС написана мной. Я использую только g cc, ld и objdump. Нет gdb, et c ...
Если это возможно, где я должен делать такие изменения в исходных или конфигурационных файлах g cc? Я клонировал репозиторий g cc git, но не смог найти отправную точку для такой модификации.