;
; Реализация среды исполнения языка программирования
; Объектно-ориентированный продвинутый векторный транслятор
;
; Copyright © 2021, 2024, 2026 Малик Разработчик
;
; Это свободная программа: вы можете перераспространять ее и/или изменять
; ее на условиях Меньшей Стандартной общественной лицензии GNU в том виде,
; в каком она была опубликована Фондом свободного программного обеспечения;
; либо версии 3 лицензии, либо (по вашему выбору) любой более поздней версии.
;
; Эта программа распространяется в надежде, что она будет полезной,
; но БЕЗО ВСЯКИХ ГАРАНТИЙ; даже без неявной гарантии ТОВАРНОГО ВИДА
; или ПРИГОДНОСТИ ДЛЯ ОПРЕДЕЛЕННЫХ ЦЕЛЕЙ. Подробнее см. в Меньшей Стандартной
; общественной лицензии GNU.
;
; Вы должны были получить копию Меньшей Стандартной общественной лицензии GNU
; вместе с этой программой. Если это не так, см.
; <https://www.gnu.org/licenses/>.
;
; <fold чтение полей инстанций>
; <fold объектная ссылка в локальной переменной>
macro frdifr_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
mov qsc0, [r01+fieldFullName]
tstincrcoth qsc0
}
macro frdifw_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
mov qsc0, [r01+fieldFullName]
}
macro frdifc_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
movzx dsc0, word [r01+fieldFullName]
}
macro frdife_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
fld tbyte [r01+fieldFullName]
}
macro frdifd_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovq xmm0, [r01+fieldFullName]
}
macro frdifd2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqa xmm0, [r01+fieldFullName]
}
macro frdifd4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu ymm0, [r01+fieldFullName]
}
macro frdifd8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu64 zmm0, [r01+fieldFullName]
}
macro frdiff_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovd xmm0, [r01+fieldFullName]
}
macro frdiff2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovq xmm0, [r01+fieldFullName]
}
macro frdiff4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqa xmm0, [r01+fieldFullName]
}
macro frdiff8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu ymm0, [r01+fieldFullName]
}
macro frdifb_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
movsx dsc0, byte [r01+fieldFullName]
}
macro frdifb2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
movzx dsc0, word [r01+fieldFullName]
vmovd xmm0, dsc0
}
macro frdifb4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovd xmm0, [r01+fieldFullName]
}
macro frdifb8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovq xmm0, [r01+fieldFullName]
}
macro frdifs_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
movsx dsc0, word [r01+fieldFullName]
}
macro frdifs2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovd xmm0, [r01+fieldFullName]
}
macro frdifs4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovq xmm0, [r01+fieldFullName]
}
macro frdifs8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqa xmm0, [r01+fieldFullName]
}
macro frdifi_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
mov dsc0, [r01+fieldFullName]
}
macro frdifi2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovq xmm0, [r01+fieldFullName]
}
macro frdifi4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqa xmm0, [r01+fieldFullName]
}
macro frdifi8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu ymm0, [r01+fieldFullName]
}
macro frdifl_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
mov qsc0, [r01+fieldFullName]
}
macro frdifl2_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqa xmm0, [r01+fieldFullName]
}
macro frdifl4_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu ymm0, [r01+fieldFullName]
}
macro frdifl8_l fieldFullName*, localvarName* {
_floadw_l r01q, localvarName
vmovdqu64 zmm0, [r01+fieldFullName]
}
; </fold>
; <fold объектная ссылка в глобальном члене>
macro frdifr_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
mov qsc0, [globalmember+fieldFullName]
tstincrcoth qsc0
else
_floadw_g r01q, globalmember
mov qsc0, [r01+fieldFullName]
tstincrcoth qsc0
end if
}
macro frdifw_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
mov qsc0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
mov qsc0, [r01+fieldFullName]
end if
}
macro frdifc_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
movzx dsc0, word [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
movzx dsc0, word [r01+fieldFullName]
end if
}
macro frdife_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
fld tbyte [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
fld tbyte [r01+fieldFullName]
end if
}
macro frdifd_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovq xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovq xmm0, [r01+fieldFullName]
end if
}
macro frdifd2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqa xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqa xmm0, [r01+fieldFullName]
end if
}
macro frdifd4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu ymm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu ymm0, [r01+fieldFullName]
end if
}
macro frdifd8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu64 zmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu64 zmm0, [r01+fieldFullName]
end if
}
macro frdiff_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovd xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovd xmm0, [r01+fieldFullName]
end if
}
macro frdiff2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovq xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovq xmm0, [r01+fieldFullName]
end if
}
macro frdiff4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqa xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqa xmm0, [r01+fieldFullName]
end if
}
macro frdiff8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu ymm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu ymm0, [r01+fieldFullName]
end if
}
macro frdifb_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
movsx dsc0, byte [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
movsx dsc0, byte [r01+fieldFullName]
end if
}
macro frdifb2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
movzx dsc0, word [globalmember+fieldFullName]
vmovd xmm0, dsc0
else
_floadw_g r01q, globalmember
movzx dsc0, word [r01+fieldFullName]
vmovd xmm0, dsc0
end if
}
macro frdifb4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovd xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovd xmm0, [r01+fieldFullName]
end if
}
macro frdifb8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovq xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovq xmm0, [r01+fieldFullName]
end if
}
macro frdifs_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
movsx dsc0, word [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
movsx dsc0, word [r01+fieldFullName]
end if
}
macro frdifs2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovd xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovd xmm0, [r01+fieldFullName]
end if
}
macro frdifs4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovq xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovq xmm0, [r01+fieldFullName]
end if
}
macro frdifs8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqa xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqa xmm0, [r01+fieldFullName]
end if
}
macro frdifi_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
mov dsc0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
mov dsc0, [r01+fieldFullName]
end if
}
macro frdifi2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovq xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovq xmm0, [r01+fieldFullName]
end if
}
macro frdifi4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqa xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqa xmm0, [r01+fieldFullName]
end if
}
macro frdifi8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu ymm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu ymm0, [r01+fieldFullName]
end if
}
macro frdifl_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
mov qsc0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
mov qsc0, [r01+fieldFullName]
end if
}
macro frdifl2_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqa xmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqa xmm0, [r01+fieldFullName]
end if
}
macro frdifl4_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu ymm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu ymm0, [r01+fieldFullName]
end if
}
macro frdifl8_g fieldFullName*, globalmember* {
if(globalmember eq null)
fthrow NullPointerException
else if(globalmember eqtype avt.lang.Object)
vmovdqu64 zmm0, [globalmember+fieldFullName]
else
_floadw_g r01q, globalmember
vmovdqu64 zmm0, [r01+fieldFullName]
end if
}
; </fold>
; </fold>