Faike
resb — это стандартная FASM-директива для резервирования определённого числа байт (bytes) в BSS-секции. В 64-битном режиме она точно так же поддерживается, как и в 32-битном.
Зачем вообще нужен resb?
BSS (Block Started by Symbol) — это секция, в которой не хранятся инициализированные данные, а просто резервируется место в памяти при загрузке программы.
Директивы вида resb, resw, resd, resq и т.п. в FASM (и MASM/YASM/NASM с похожим синтаксисом) — это способ сказать «в этой секции нужно зарезервировать N байт (или слов, или двойных слов и т.д.)».
При этом в самом исполняемом файле никакие байты не занимают места (или занимают минимальный overhead), т.к. они не инициализированы заранее.
Альтернативы
resw, resd, resq
Отличаются размером единицы резервирования: resw (word, 2 байта), resd (dword, 4 байта), resq (qword, 8 байт).
Если, например, хочется зарезервировать 1000 64-битных чисел, можно написать resq 1000.
Определять данные прямо в .data
Например, times 50000 db 0. Но тогда все 50000 байт войдут в итоговый файл и при загрузке ОС скопирует их в память. Обычно для больших буферов это нежелательно.
Выделять память динамически
В 64-битном коде под Windows можно вызвать VirtualAlloc, под Linux — mmap, под любой POSIX — malloc (через вызовы стандартной библиотеки C), и т.д.
Это может быть удобнее, если размер памяти меняется во время выполнения или очень велик.
Когда лучше использовать resb?
Если нужно просто зарезервировать относительно небольшой буфер в статической памяти (несколько десятков килобайт, сотни килобайт и т.д.), resb отлично подходит.
Если размер может быть очень большим (мегабайты и больше) или меняется во время работы программы, лучше перейти на динамическое выделение (через VirtualAlloc, mmap или другую системную функцию).
Итого, resb вполне нормальная и стандартная директива как в 32-битном, так и в 64-битном ассемблерном коде на FASM. Если нет особых причин (например, нужен динамический размер или очень большие объёмы памяти), то нет необходимости «использовать что-то другое» — resb подойдёт
Alexey
Для обеспечения обратной совместимости winAPI 32 битный находится в папке sysWOW64 (из папки Windows).
64 бит - это стандартный winAPI, который находится в System32, он отличается SSE расширениями, однако выполняет тот же функционал другими методами
Возможности windows одинаковые и лежат в kernel32.dll, которая содержит в себе основной функционал windows и является частью winAPI
Faike
Игры могут быть более прикладной областью, чем написание своего загрузчика, который, скорее всего, никто не будет использовать. Я могу сделать что-то, что реально увидят другие люди и поиграют. При этом я буду так же иметь же опыт в том как работает компьютер на низком уровне