forked from KolibriOS/kolibrios
119 lines
3.1 KiB
PHP
119 lines
3.1 KiB
PHP
|
|
||
|
macro forward_list_builder name {
|
||
|
local c
|
||
|
macro .#name a& \{
|
||
|
\local m
|
||
|
c equ m
|
||
|
macro m a
|
||
|
\}
|
||
|
macro name#List \{
|
||
|
irpv v,c \\{
|
||
|
;\\forward
|
||
|
v
|
||
|
\\}
|
||
|
\}
|
||
|
}
|
||
|
|
||
|
macro reverse_list_builder name {
|
||
|
local c
|
||
|
macro .#name a& \{
|
||
|
\local m
|
||
|
c equ m
|
||
|
macro m a
|
||
|
\}
|
||
|
macro name#List \{
|
||
|
irpv v,c \\{
|
||
|
\\reverse
|
||
|
v
|
||
|
\\}
|
||
|
\}
|
||
|
}
|
||
|
|
||
|
forward_list_builder IGlobalBlock
|
||
|
forward_list_builder SGlobalBlock
|
||
|
forward_list_builder TGlobalBlock
|
||
|
forward_list_builder UGlobalBlock
|
||
|
forward_list_builder VGlobalBlock
|
||
|
forward_list_builder XGlobalBlock
|
||
|
|
||
|
;------------------------------------------------------------------
|
||
|
; use "tglobal" for inserting TLS definitions.
|
||
|
;------------------------------------------------------------------
|
||
|
macro tglobal {
|
||
|
.TGlobalBlock { }
|
||
|
|
||
|
macro tglobal_nested {
|
||
|
.TGlobalBlock \{ }
|
||
|
|
||
|
;------------------------------------------------------------------
|
||
|
; use "vglobal" for inserting virtual definitions.
|
||
|
;------------------------------------------------------------------
|
||
|
macro vglobal {
|
||
|
.VGlobalBlock { }
|
||
|
|
||
|
macro vglobal_nested {
|
||
|
.VGlobalBlock \{ }
|
||
|
|
||
|
;------------------------------------------------------------------
|
||
|
; use "iglobal" for inserting initialized global data definitions.
|
||
|
;------------------------------------------------------------------
|
||
|
macro iglobal {
|
||
|
.IGlobalBlock { }
|
||
|
|
||
|
macro iglobal_nested {
|
||
|
.IGlobalBlock \{ }
|
||
|
|
||
|
;------------------------------------------------------------------
|
||
|
; use "sglobal" for inserting strings definitions.
|
||
|
;------------------------------------------------------------------
|
||
|
macro sglobal {
|
||
|
.SGlobalBlock { }
|
||
|
|
||
|
macro sglobal_nested {
|
||
|
.SGlobalBlock \{ }
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; use 'uglobal' for inserting uninitialized global definitions.
|
||
|
; even when you define some data values, these variables
|
||
|
; will be stored as uninitialized data.
|
||
|
;-------------------------------------------------------------
|
||
|
macro uglobal {
|
||
|
.UGlobalBlock { }
|
||
|
|
||
|
macro uglobal_nested {
|
||
|
.UGlobalBlock \{ }
|
||
|
|
||
|
;-------------------------------------------------------------
|
||
|
; use 'xglobal' for inserting uninitialized global definitions.
|
||
|
; even when you define some data values, these variables
|
||
|
; will be stored as uninitialized data.
|
||
|
;-------------------------------------------------------------
|
||
|
macro xglobal {
|
||
|
.XGlobalBlock { }
|
||
|
|
||
|
macro xglobal_nested {
|
||
|
.XGlobalBlock \{ }
|
||
|
|
||
|
endg fix } ; Use endg for ending iglobal and uglobal blocks.
|
||
|
endg_nested fix \}
|
||
|
|
||
|
macro IncludeGlobals MacroName
|
||
|
{
|
||
|
local Begin,Size
|
||
|
virtual at $
|
||
|
Begin = $
|
||
|
MacroName
|
||
|
Size = $-Begin
|
||
|
end virtual
|
||
|
rb Size
|
||
|
}
|
||
|
|
||
|
macro IncludeAllGlobals {
|
||
|
IGlobalBlockList
|
||
|
SGlobalBlockList
|
||
|
UDataStr:
|
||
|
IncludeGlobals UGlobalBlockList ;will be zeroed
|
||
|
UDataEnd:
|
||
|
IncludeGlobals XGlobalBlockList ;will be undefined
|
||
|
}
|