Каков формат win64? - PullRequest
       27

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

0 голосов
/ 14 марта 2019

В каком формате 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 Ответ

0 голосов
/ 17 марта 2019

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

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

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

...