Каков формат win64?

#object-files

#объектные файлы

Вопрос:

Каков win64 формат, созданный nasm -f win64 ? Эта программа:

     extern GetStdHandle, WriteConsoleA, ExitProcess
section .bss
    dummy resd 1
section .data
    msg db "abc"
    msglen equ $ - msg
section .text
_start:
    mov rcx, STD_OUTPUT_HANDLE
    call GetStdHandle

    mov rcx, rax
    mov rdx, msg
    mov r8, msglen
    mov r9, dummy
    push NULL
    call WriteConsoleA

    mov rcx, 0
    call ExitProcess

NULL equ 0
STD_OUTPUT_HANDLE equ -11
  

создает объектный файл с некоторыми элементами, такими как включенные внешние функции ( GetStdHandle , WriteConsoleA и ExitProcess ), abc строка и имена переменных ( msg ).

Каков точный формат этого? Я не смог найти никакой спецификации для Win64 в Интернете.

Ответ №1:

Когда я впервые увидел эту ссылку, я совершенно не осознавал, что в ней говорится как о формате файла изображения (PE), так и о формате объектного файла (COFF). Формат объектного файла — это то, что я ищу. Цитата:

Этот документ определяет структуру исполняемых файлов (изображений) и объектных файлов в операционных системах семейства Microsoft Windows. Эти файлы называются файлами Portable Executable (PE) и Common Object File Format (COFF), соответственно. Название «Переносимый исполняемый файл» указывает на тот факт, что формат не зависит от архитектуры.

(выделено мной)