📄 util.mac
字号:
%ifndef INCLUDED_UTIL_MAC
%define INCLUDED_UTIL_MAC
;--------------------------
;macro support for @F,@@,@B
;--------------------------
%assign UNNAMED_LOCAL_LABEL 0
%define @F ..@UNNAMED_LOCAL_LABEL0
%macro define@F 1
%define @F ..@UNNAMED_LOCAL_LABEL%{1}
%endmacro
%define @@ @@ UNNAMED_LOCAL_LABEL
%macro @@ 1
..@UNNAMED_LOCAL_LABEL%{1}:
%define @B ..@UNNAMED_LOCAL_LABEL%{1}
%assign UNNAMED_LOCAL_LABEL UNNAMED_LOCAL_LABEL+1
define@F UNNAMED_LOCAL_LABEL
%endmacro
;---------------------------------------------------------------
; macro support for NT kernel like debug flags, example:
;
; segment .data
; DebugFlags: times 2 dd 0 ; room for 64 bit flags, [0..63]
;
; segment .text
; debug_start DebugFlags, 43 ; test bit 43, DebugFlags[43]
; <code to emit some debug message>
; debug_end
;
; flags should be allocated in dword amounts
; because of the nature of the BT instruction
;
; !!! macros modify/corrupt EFLAGS !!!
;---------------------------------------------------------------
%macro debug_start 2
%push debug
bt dword [%{1}+4*(%{2}/32)], %{2}%32
jnc %$skip_debug
%endmacro
%macro debug_end 0
%ifctx debug
%$skip_debug:
%pop
%else
%error no matching debug_start for debug_end
%endif
%endmacro
%endif
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -