#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), соответственно. Название «Переносимый исполняемый файл» указывает на тот факт, что формат не зависит от архитектуры.
(выделено мной)