From fab3b3a41188cb99a5cf67e601f14d74df60d364 Mon Sep 17 00:00:00 2001 From: Ivan Baravy Date: Thu, 16 May 2019 00:49:45 +0000 Subject: [PATCH] Unify fdo.inc and debug-fdo.inc files. git-svn-id: svn://kolibrios.org@7657 a494cfbc-eb01-0410-851d-a64ba20cac60 --- kernel/trunk/fdo.inc | 25 ++++-- programs/debug-fdo.inc | 179 ++++++++++++++++++++++------------------- 2 files changed, 117 insertions(+), 87 deletions(-) diff --git a/kernel/trunk/fdo.inc b/kernel/trunk/fdo.inc index ccc0fbb66c..79068df888 100644 --- a/kernel/trunk/fdo.inc +++ b/kernel/trunk/fdo.inc @@ -1,13 +1,11 @@ ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ;; ;; -;; Copyright (C) KolibriOS team 2004-2015. All rights reserved. ;; +;; Copyright (C) KolibriOS team 2004-2019. All rights reserved. ;; ;; Distributed under terms of the GNU General Public License ;; ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; $Revision$ -_esp equ esp - ; ; Formatted Debug Output (FDO) ; Copyright (c) 2005-2006, mike.dld @@ -22,6 +20,12 @@ _esp equ esp ; __DEBUG__ equ 1 ; __DEBUG_LEVEL__ equ 5 +_esp equ esp + +macro put_board { + call sys_msg_board +} + macro debug_func name { if used name name@of@func equ name @@ -243,7 +247,7 @@ debug_beginf pushad movzx ecx, al mov ebx, 1 - call sys_msg_board + put_board popad ret debug_endf @@ -257,7 +261,7 @@ debug_beginf movzx ecx, byte[edx] or cl, cl jz .l2 - call sys_msg_board + put_board inc edx jmp .l1 .l2: @@ -391,6 +395,17 @@ macro DEBUGF _level,_format,[_arg] { end if } +macro DEBUGFG _level, _group, _format, [_arg] { + common + if _group eqtype + DEBUGF _level, _format,_arg + else + if _level >= _group + DEBUGF 999, _format,_arg + end if + end if +} + macro __include_debug_strings dummy,[_id,_fmt,_len] { common local c1,a1,a2 diff --git a/programs/debug-fdo.inc b/programs/debug-fdo.inc index a4ec21b31c..3b54a3384e 100644 --- a/programs/debug-fdo.inc +++ b/programs/debug-fdo.inc @@ -12,6 +12,12 @@ ; __DEBUG__ equ 1 ; __DEBUG_LEVEL__ equ 5 +_esp equ esp + +macro put_board { + mcall 63 +} + macro debug_func name { if used name name@of@func equ name @@ -39,8 +45,8 @@ macro DEBUGS _sign,[_str] { macro DEBUGS_N _sign,_num,[_str] { common - pushf - pushad + pushf + pushad local ..str,..label,is_str is_str = 0 forward @@ -49,41 +55,41 @@ macro DEBUGS_N _sign,_num,[_str] { end if common if is_str = 1 - jmp ..label + jmp ..label ..str db _str,0 ..label: - add esp,4*8+4 - mov edx,..str - sub esp,4*8+4 + mov edx, ..str else - mov edx,_str +esp equ esp+4*8+4 + mov edx, _str +esp equ _esp end if if ~_num eq if _num eqtype eax if _num in - mov esi,_num + mov esi, _num else if ~_num eq esi - movzx esi,_num + movzx esi, _num end if else if _num eqtype 0 - mov esi,_num + mov esi, _num else local tp tp equ 0 match [_arg],_num \{ - mov esi,dword[_arg] + mov esi, dword[_arg] tp equ 1 \} match =0 =dword[_arg],tp _num \{ - mov esi,dword[_arg] + mov esi, dword[_arg] tp equ 1 \} match =0 =word[_arg],tp _num \{ - movzx esi,word[_arg] + movzx esi, word[_arg] tp equ 1 \} match =0 =byte[_arg],tp _num \{ - movzx esi,byte[_arg] + movzx esi, byte[_arg] tp equ 1 \} match =0,tp \{ @@ -91,11 +97,11 @@ macro DEBUGS_N _sign,_num,[_str] { \} end if else - mov esi,0x7FFFFFFF + mov esi, 0x7FFFFFFF end if - call fdo_debug_outstr - popad - popf + call fdo_debug_outstr + popad + popf } macro DEBUGD _sign,_dec { @@ -111,8 +117,8 @@ macro DEBUGD _sign,_dec { } macro DEBUGD_N _sign,_num,_dec { - pushf - pushad + pushf + pushad if (~_num eq) if (_dec eqtype eax | _dec eqtype 0) 'Error: precision allowed only for in-memory variables' @@ -127,41 +133,43 @@ macro DEBUGD_N _sign,_num,_dec { end if if _dec eqtype eax if _dec in - mov eax,_dec + mov eax, _dec else if ~_dec eq eax if _sign = 1 - movsx eax,_dec + movsx eax, _dec else - movzx eax,_dec + movzx eax, _dec end if end if else if _dec eqtype 0 - mov eax,_dec + mov eax, _dec else - add esp,4*8+4 +; add esp,4*8+4 +esp equ esp+4*8+4 if _num eq - mov eax,dword _dec + mov eax, dword _dec else if _num = 1 if _sign = 1 - movsx eax,byte _dec + movsx eax, byte _dec else - movzx eax,byte _dec + movzx eax, byte _dec end if else if _num = 2 if _sign = 1 - movsx eax,word _dec + movsx eax, word _dec else - movzx eax,word _dec + movzx eax, word _dec end if else - mov eax,dword _dec + mov eax, dword _dec end if - sub esp,4*8+4 +esp equ _esp +; sub esp,4*8+4 end if - mov cl,_sign - call fdo_debug_outdec - popad - popf + mov cl, _sign + call fdo_debug_outdec + popad + popf } macro DEBUGH _sign,_hex { @@ -177,48 +185,51 @@ macro DEBUGH _sign,_hex { } macro DEBUGH_N _sign,_num,_hex { - pushf - pushad + pushf + pushad if (~_num eq) & (~_num in <1,2,3,4,5,6,7,8>) 'Error: 1..8 are only allowed for precision in %x' end if if _hex eqtype eax if _hex in if ~_hex eq eax - mov eax,_hex + mov eax, _hex end if + mov edx, 8 else if _hex in if ~_hex eq ax - movzx eax,_hex + movzx eax, _hex end if - shl eax,16 if (_num eq) - mov edx,4 + mov edx, 4 end if else if _hex in if ~_hex eq al - movzx eax,_hex + movzx eax, _hex end if - shl eax,24 if (_num eq) - mov edx,2 + mov edx, 2 end if end if else if _hex eqtype 0 - mov eax,_hex + mov eax, _hex else - add esp,4*8+4 - mov eax,dword _hex - sub esp,4*8+4 +; add esp,4*8+4 +esp equ esp+4*8+4 + mov eax, dword _hex +esp equ _esp +; sub esp,4*8+4 end if if ~_num eq - mov edx,_num + mov edx, _num else - mov edx,8 + if ~_hex eqtype eax + mov edx, 8 + end if end if - call fdo_debug_outhex - popad - popf + call fdo_debug_outhex + popad + popf } ;----------------------------------------------------------------------------- @@ -226,68 +237,72 @@ macro DEBUGH_N _sign,_num,_hex { debug_func fdo_debug_outchar debug_beginf pushad - mov cl,al - mov ebx,1 - mov eax,63 - mcall + movzx ecx, al + mov ebx, 1 + put_board popad ret debug_endf debug_func fdo_debug_outstr debug_beginf - mov eax,63 - mov ebx,1 - .l1: dec esi + mov ebx, 1 + .l1: + dec esi js .l2 - mov cl,[edx] - or cl,cl + movzx ecx, byte[edx] + or cl, cl jz .l2 - mcall + put_board inc edx jmp .l1 - .l2: ret + .l2: + ret debug_endf debug_func fdo_debug_outdec debug_beginf - or cl,cl + or cl, cl jz @f - or eax,eax + or eax, eax jns @f neg eax push eax - mov al,'-' + mov al, '-' call fdo_debug_outchar pop eax - @@: push 10 - pop ecx + @@: + movi ecx, 10 push -'0' - .l1: xor edx,edx + .l1: + xor edx, edx div ecx push edx - test eax,eax + test eax, eax jnz .l1 - .l2: pop eax - add al,'0' + .l2: + pop eax + add al, '0' jz .l3 call fdo_debug_outchar jmp .l2 - .l3: ret + .l3: + ret debug_endf debug_func fdo_debug_outhex __fdo_hexdigits db '0123456789ABCDEF' debug_beginf - mov cl,dl + mov cl, dl neg cl - add cl,8 - shl cl,2 - rol eax,cl - .l1: rol eax,4 + add cl, 8 + shl cl, 2 + rol eax, cl + .l1: + rol eax, 4 push eax - and eax,0x0000000F - mov al,[__fdo_hexdigits+eax] + and eax, 0x0000000F + mov al, [__fdo_hexdigits+eax] call fdo_debug_outchar pop eax dec edx