ХЛЛльный компилятор - компилятор языка высокого уровня (ХЛЛ -High Level Language)
про выделение структур...
например, по адресу метки L0049C96C начинается таблица, каждый элемент которой имеет вид:
Code:
struct someelement
pString dd ?
index dd ?;с шагом 2? нет не индекс конечно, непонятная внутренняя ересь компилятора
elementClass db ?;подозреваю что это внутренний класс элемента (лучше использовать единую нотацию или decimal или hexadec...)
elementsubClass db ?;подозреваю что это внутренний подкласс элемента, используется не везде (значение по умолчанию (-1) или $FF)
elementID db ?; подозреваю что это ID, по крайней мере для регистров
db 0;не используется, выравнивает структуру на 4хбайтовую границу
end struct
Code:
L0049C96C:
._1 someelement SSZ0049CB58__EAX, 2*0,10,10,17,
._2 someelement SSZ0049CB5D__EDX, 2*1,10,13,19,
._3 someelement SSZ0049CB62__EBX, 2*2,10,11,20,
._4 someelement SSZ0049CB67__ECX, 2*3,10,12,18,
._5 someelement SSZ0049CB6C__ESI, 2*4,10,14,23,
._6 someelement SSZ0049CB71__EDI, 2*5-1,10,15,24,
._7 someelement SSZ0049CB76__EBP, 2*6-2,10,-1,22,
._8 someelement SSZ0049CB7B__ESP, 2*7-3,10,-1,21,
и т.д.
почти вся секция данных, это либо текстовые строки, либо таблицы, конечно элементы других таблиц имеют struct отличный от описанного в примере выше.
еще можно прооверрайдить директиву dt в fasm`е одноименным макросом
Code:
struc dt [arg] {
if arg eqtype 1.0
dt arg
else
match sign value,arg {
match =INF,value { dq $8000000000000000 \\}
match =NaN,value { dq $C000000000000001 \\}
dw $7FFF - (sign $4000 - $4000) \}
end if }
macro dt по аналогии.
там есть таблица dtшек - чтоб она не разрывалась вкраплениями констант бесконечности и NaN как раз вышеописанный оверррайд.
Но можно и без макросов (идея пришла 25.01.2019, дописал сюда):
Code:
Inf equ -$4000+$4000+$7FFF:$8000000000000000
NaN equ Inf or
синтаксис использования:
Code:
dt Inf,+Inf,-Inf,+NaN(Index),-NaN(Index); где Index - любое число от 1 до $7FFFFFFFFFFFFFFF