;
; Реализация среды исполнения языка программирования
; Объектно-ориентированный продвинутый векторный транслятор
;
; Copyright © 2021, 2024 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять ее и/или изменять
; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она будет полезной,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <https://www.gnu.org/licenses/>.
;
; <fold чтение полей структур>
; <fold приватные макросы — должны использоваться только этим текстом исходного кода>
macro _frdsf_l localvarName* {
_floadw_l r01q, localvarName
__structp r02q, r01q
}
macro _frdsf_g globalmember* {
_floadw_g r01q, globalmember
__structp r02q, r01q
}
; </fold>
; <fold объектная ссылка в локальной переменной>
macro frdsfc_l fieldFullName*, localvarName* {
_frdsf_l localvarName
movzx dsc0, word [r02+fieldFullName#.struct]
}
macro frdsfe_l fieldFullName*, localvarName* {
_frdsf_l localvarName
fld tbyte [r02+fieldFullName#.struct]
}
macro frdsfd_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovq xmm0, [r02+fieldFullName#.struct]
}
macro frdsfd2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu xmm0, [r02+fieldFullName#.struct]
}
macro frdsfd4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu ymm0, [r02+fieldFullName#.struct]
}
macro frdsfd8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu64 zmm0, [r02+fieldFullName#.struct]
}
macro frdsff_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovd xmm0, [r02+fieldFullName#.struct]
}
macro frdsff2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovq xmm0, [r02+fieldFullName#.struct]
}
macro frdsff4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu xmm0, [r02+fieldFullName#.struct]
}
macro frdsff8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu ymm0, [r02+fieldFullName#.struct]
}
macro frdsfb_l fieldFullName*, localvarName* {
_frdsf_l localvarName
movsx dsc0, byte [r02+fieldFullName#.struct]
}
macro frdsfb2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
movzx dsc0, word [r02+fieldFullName#.struct]
vmovd xmm0, dsc0
}
macro frdsfb4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovd xmm0, [r02+fieldFullName#.struct]
}
macro frdsfb8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovq xmm0, [r02+fieldFullName#.struct]
}
macro frdsfs_l fieldFullName*, localvarName* {
_frdsf_l localvarName
movsx dsc0, word [r02+fieldFullName#.struct]
}
macro frdsfs2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovd xmm0, [r02+fieldFullName#.struct]
}
macro frdsfs4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovq xmm0, [r02+fieldFullName#.struct]
}
macro frdsfs8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu xmm0, [r02+fieldFullName#.struct]
}
macro frdsfi_l fieldFullName*, localvarName* {
_frdsf_l localvarName
mov dsc0, [r02+fieldFullName#.struct]
}
macro frdsfi2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovq xmm0, [r02+fieldFullName#.struct]
}
macro frdsfi4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu xmm0, [r02+fieldFullName#.struct]
}
macro frdsfi8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu ymm0, [r02+fieldFullName#.struct]
}
macro frdsfl_l fieldFullName*, localvarName* {
_frdsf_l localvarName
mov qsc0, [r02+fieldFullName#.struct]
}
macro frdsfl2_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu xmm0, [r02+fieldFullName#.struct]
}
macro frdsfl4_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu ymm0, [r02+fieldFullName#.struct]
}
macro frdsfl8_l fieldFullName*, localvarName* {
_frdsf_l localvarName
vmovdqu64 zmm0, [r02+fieldFullName#.struct]
}
; </fold>
; <fold объектная ссылка в глобальном члене>
macro frdsfc_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
movzx dsc0, word [r02+fieldFullName#.struct]
end if
}
macro frdsfe_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
fld tbyte [r02+fieldFullName#.struct]
end if
}
macro frdsfd_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovq xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfd2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfd4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu ymm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfd8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu64 zmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsff_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovd xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsff2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovq xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsff4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsff8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu ymm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfb_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
movsx dsc0, byte [r02+fieldFullName#.struct]
end if
}
macro frdsfb2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
movzx dsc0, word [r02+fieldFullName#.struct]
vmovd xmm0, dsc0
end if
}
macro frdsfb4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovd xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfb8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovq xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfs_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
movsx dsc0, word [r02+fieldFullName#.struct]
end if
}
macro frdsfs2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovd xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfs4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovq xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfs8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfi_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
mov dsc0, [r02+fieldFullName#.struct]
end if
}
macro frdsfi2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovq xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfi4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfi8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu ymm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfl_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
mov qsc0, [r02+fieldFullName#.struct]
end if
}
macro frdsfl2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu xmm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfl4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu ymm0, [r02+fieldFullName#.struct]
end if
}
macro frdsfl8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_frdsf_g globalmember
vmovdqu64 zmm0, [r02+fieldFullName#.struct]
end if
}
; </fold>
; </fold>