Почему GNU `ld` имеет разные выходные данные из файлов NASM и GAS `.o`, использующих эквивалентные источники?Linux

Ответить Пред. темаСлед. тема
Anonymous
 Почему GNU `ld` имеет разные выходные данные из файлов NASM и GAS `.o`, использующих эквивалентные источники?

Сообщение Anonymous »

Проводя несколько экспериментов, вдохновленных многими интересными статьями о крошечных исполняемых файлах ELF, я заметил, что GNU ld генерирует другой исполняемый файл при передаче сгенерированного nasm объектного файла .o или с (GNU)-сгенерирован, оба используют (как я предполагаю¹) эквивалентный исходный код сборки.
¹: Их объектные файлы различаются только в разделах, не связанных с кодом, и побитовое идентично, если я удалю --strip-section-headers *.o, так что я считаю, что это справедливое предположение.
NASM (v2.16.1):

Код: Выделить всё

; tiny-nasm.asm
SECTION .text
GLOBAL _start
_start:
mov      eax, 60  ; Select the _exit syscall (60 in Linux ABI)
mov      edi, 42  ; Set the exit code argument for _exit
syscall           ; Perform the selected syscall
GAS[/b] (v2.42):

Код: Выделить всё

# tiny-gas.S
.SECTION .text
.GLOBL _start
_start:
mov      $60, %eax  # Select the _exit syscall (60 in Linux ABI)
mov      $42, %edi  # Set the exit code argument for _exit
syscall             # Perform the selected syscall

Код: Выделить всё

nasm -f elf64 tiny-nasm.asm && ld -no-pie -z noseparate-code tiny-nasm.o -o tiny-nasm.bin
as tiny-gas.S -o tiny-gas.o && ld -no-pie -z noseparate-code tiny-gas.o  -o tiny-gas.bin
strip --strip-section-headers *.bin
wc -c *.bin
diff -u 

Подробнее здесь: [url]https://stackoverflow.com/questions/79225538/why-gnu-ld-has-different-output-from-nasm-vs-gas-o-files-using-equivalent-s[/url]
Реклама
Ответить Пред. темаСлед. тема

Быстрый ответ

Изменение регистра текста: 
Смайлики
:) :( :oops: :roll: :wink: :muza: :clever: :sorry: :angel: :read: *x)
Ещё смайлики…
   
К этому ответу прикреплено по крайней мере одно вложение.

Если вы не хотите добавлять вложения, оставьте поля пустыми.

Максимально разрешённый размер вложения: 15 МБ.

  • Похожие темы
    Ответы
    Просмотры
    Последнее сообщение
  • Можно ли сделать GUI в сборке GAS?
    Anonymous » » в форуме Linux
    0 Ответы
    8 Просмотры
    Последнее сообщение Anonymous
  • Как разделить одно изображение на отдельные кликабельные части, каждая из которых имеет разные выходные данные?
    Anonymous » » в форуме Python
    0 Ответы
    10 Просмотры
    Последнее сообщение Anonymous
  • Эквивалентные морфологические операции Matlab «мост» «сжатие» и «дыры» в openCV
    Anonymous » » в форуме Python
    0 Ответы
    21 Просмотры
    Последнее сообщение Anonymous
  • Регулярные выражения Java, эквивалентные PCRE/etc. сокращение `\K`?
    Anonymous » » в форуме JAVA
    0 Ответы
    31 Просмотры
    Последнее сообщение Anonymous
  • Как найти эквивалентные флаги в Linux и Windows? [закрыто]
    Anonymous » » в форуме Linux
    0 Ответы
    12 Просмотры
    Последнее сообщение Anonymous

Вернуться в «Linux»