;
; Реализация среды исполнения языка программирования
; Объектно-ориентированный продвинутый векторный транслятор
;
; Copyright © 2021, 2024 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять ее и/или изменять
; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она будет полезной,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <https://www.gnu.org/licenses/>.
;
; <fold запись полей структур>
; <fold приватные макросы — должны использоваться только этим текстом исходного кода>
macro _fwrsf_l localvarName* {
_floadw_l r01q, localvarName
__structp r02q, r01q
}
macro _fwrsfe_l localvarName* {
_floadwe_l r01q, localvarName
__structp r02q, r01q
}
macro _fwrsf_g globalmember* {
_floadw_g r01q, globalmember
__structp r02q, r01q
}
macro _fwrsfe_g globalmember* {
_floadwe_g r01q, globalmember
__structp r02q, r01q
}
; </fold>
; <fold объектная ссылка в локальной переменной>
macro fwrsfc_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
mov word [r02+fieldFullName#.struct], wsc0
frelease_o localvarName
}
macro fwrsfe_l fieldFullName*, localvarName* {
_fwrsfe_l localvarName
fstp tbyte [r02+fieldFullName#.struct]
frelease_o localvarName
}
macro fwrsfd_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovq qword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfd2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu xword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfd4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu yword [r02+fieldFullName#.struct], ymm0
frelease_o localvarName
}
macro fwrsfd8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu64 zword [r02+fieldFullName#.struct], zmm0
frelease_o localvarName
}
macro fwrsff_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovd dword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsff2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovq qword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsff4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu xword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsff8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu yword [r02+fieldFullName#.struct], ymm0
frelease_o localvarName
}
macro fwrsfb_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
mov byte [r02+fieldFullName#.struct], bsc0
frelease_o localvarName
}
macro fwrsfb2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovd dsc0, xmm0
mov word [r02+fieldFullName#.struct], wsc0
frelease_o localvarName
}
macro fwrsfb4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovd dword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfb8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovq qword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfs_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
mov word [r02+fieldFullName#.struct], wsc0
frelease_o localvarName
}
macro fwrsfs2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovd dword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfs4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovq qword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfs8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu xword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfi_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
mov dword [r02+fieldFullName#.struct], dsc0
frelease_o localvarName
}
macro fwrsfi2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovq qword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfi4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu xword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfi8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu yword [r02+fieldFullName#.struct], ymm0
frelease_o localvarName
}
macro fwrsfl_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
mov qword [r02+fieldFullName#.struct], qsc0
frelease_o localvarName
}
macro fwrsfl2_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu xword [r02+fieldFullName#.struct], xmm0
frelease_o localvarName
}
macro fwrsfl4_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu yword [r02+fieldFullName#.struct], ymm0
frelease_o localvarName
}
macro fwrsfl8_l fieldFullName*, localvarName* {
_fwrsf_l localvarName
vmovdqu64 zword [r02+fieldFullName#.struct], zmm0
frelease_o localvarName
}
; </fold>
; <fold объектная ссылка в глобальном члене>
macro fwrsfc_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
mov word [r02+fieldFullName#.struct], wsc0
end if
}
macro fwrsfe_g fieldFullName*, globalmember* {
if(globalmember eq null)
releasee
fthrow NullPointerException
else
_fwrsfe_g globalmember
fstp tbyte [r02+fieldFullName#.struct]
end if
}
macro fwrsfd_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovq qword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfd2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu xword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfd4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu yword [r02+fieldFullName#.struct], ymm0
end if
}
macro fwrsfd8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu64 zword [r02+fieldFullName#.struct], zmm0
end if
}
macro fwrsff_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovd dword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsff2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovq qword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsff4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu xword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsff8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu yword [r02+fieldFullName#.struct], ymm0
end if
}
macro fwrsfb_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
mov byte [r02+fieldFullName#.struct], bsc0
end if
}
macro fwrsfb2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovd dsc0, xmm0
mov word [r02+fieldFullName#.struct], wsc0
end if
}
macro fwrsfb4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovd dword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfb8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovq qword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfs_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
mov word [r02+fieldFullName#.struct], wsc0
end if
}
macro fwrsfs2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovd dword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfs4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovq qword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfs8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu xword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfi_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
mov dword [r02+fieldFullName#.struct], dsc0
end if
}
macro fwrsfi2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovq qword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfi4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu xword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfi8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu yword [r02+fieldFullName#.struct], ymm0
end if
}
macro fwrsfl_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
mov qword [r02+fieldFullName#.struct], qsc0
end if
}
macro fwrsfl2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu xword [r02+fieldFullName#.struct], xmm0
end if
}
macro fwrsfl4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu yword [r02+fieldFullName#.struct], ymm0
end if
}
macro fwrsfl8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else
_fwrsf_g globalmember
vmovdqu64 zword [r02+fieldFullName#.struct], zmm0
end if
}
; </fold>
; </fold>