Я пытаюсь реализовать структуру данных переменного тока на языке ассемблера для сетевого приложения.ПРИМЕЧАНИЕ: это для проекта класса Assembly, поэтому он должен быть в ассемблере !!!
Вот структура c из MS docs:
typedef struct in_addr {
union {
struct {
UCHAR s_b1;
UCHAR s_b2;
UCHAR s_b3;
UCHAR s_b4;
} S_un_b;
struct {
USHORT s_w1;
USHORT s_w2;
} S_un_w;
ULONG S_addr;
} S_un;
} IN_ADDR, *PIN_ADDR, *LPIN_ADDR;
Вот код на языке ассемблера:
in_addr STRUCT
UNION S_un
S_un_b STRUCT ; an error here!
s_b1 BYTE ?
s_b2 BYTE ?
s_b3 BYTE ?
s_b4 BYTE ?
S_un_b ENDS ; an error here!
S_un_w STRUCT ; an error here!
s_w1 WORD ?
s_w2 WORD ?
S_un_w ENDS ; an error here!
S_addr DWORD ? ; the complete address
ENDS
in_addr ENDS
Когда я пытаюсь собрать, я получаюсообщение об ошибке (см. комментарии выше), являющееся либо синтаксической ошибкой (в первых 3 случаях), либо «непревзойденным вложением блоков» в качестве последнего.Я пытался просмотреть документацию Intel о том, может ли структура быть определена в объединении, но я не смог найти никакой определенной информации.
Я буду признателен за документацию Intel / MS, а также за решение, если не больше.Я новичок в языке ассемблера, хотя это становится странным хобби, странно.