Я прочитал документацию Fasm, но я не могу это понять. В NASM я первым объявить структуры в «.bss», а затем определить его в «.data»:Об объявлении и инициализации структуры в сборке Fasm
section ".bss"
struc my_struct
.a resw 1
.b resw 1
.c resb 1
.d resb 1
endstruc
section ".data"
my_struct_var1 istruc my_struct
at my_struct.a, dw 123
at my_struct.b dw, 0x123
at my_struct.c db, "fdsfds"
at my_struct.d db 2222
endstruc
Как я могу сделать это в FASM именно?
; declaring
struct my_struct
.a rw 1
.b rw 1
.c rb 1
.d rb 1
ends
; or maybe this way?
; what's the difference between these 2?
struct my_struct
.a dw ?
.b dw ?
.c db ?
.d db ?
ends
1) Во-первых, это правильно? Или я должен использовать макросы "sturc {...}" Если да, то как именно?
2) Во-вторых, как я могу инициализировать его в «.data»?
3) также есть вопрос в моем коде
Примечание это приложение для Linux 64
Я бы рекомендовал борт протокол HTTPS FASM электронного письмо: //board.flatassembler .net для возможного лучшего ответа – Slai
Я не знаю nasm, но обычно «rb/rw/rd» просто «резервирует» байтовое/слово/двойное слово, не касаясь его вообще (неинициализированный). То же самое делает «db?/dw?/dd?». Чтобы инициализировать его, вы должны использовать «db/dw/dd value», например. 'dw 2000' (слово с VALUE 2000) или' db 20' (байт 20). 'rw 2000' зарезервировал бы блок из 2000 слов – Tommylee2k
@Torito Я не familliar со всеми assmblers, поэтому я не обобщаю. Я могу только предположить, что это одно и то же для всех (большинство?) Из них – Tommylee2k