SysFn63/ru: Difference between revisions

From KolibriOS wiki
Jump to navigation Jump to search
mNo edit summary
 
Line 1: Line 1:
'''Функция 63 - работа с доской отладки.'''
'''Функция 63''' - работа с доской отладки.


Доска отладки представляет собой системный буфер (на 4096 байт),
Доска отладки представляет собой системный буфер (на 4096 байт),
Line 23: Line 23:
''Параметры:''
''Параметры:''


* eax = 63 - номер функции
:* eax = 63 - номер функции
* ebx = 1 - номер подфункции
:* ebx = 1 - номер подфункции
* cl = байт данных
:* cl = байт данных


''Возвращаемое значение:''
''Возвращаемое значение:''


* функция не возвращает значения
:* функция не возвращает значения


''Замечания:''
''Замечания:''


* Байт записывается в буфер. Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
:* Байт записывается в буфер. Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
* Для вывода на доску отладки более сложных объектов (строк, чисел) достаточно этой функции, вызываемой в цикле. Можно не писать вручную соответствующий код, а воспользоваться файлом debug.inc, входящим в дистрибутив.
:* Для вывода на доску отладки более сложных объектов (строк, чисел) достаточно этой функции, вызываемой в цикле. Можно не писать вручную соответствующий код, а воспользоваться файлом [http://websvn.kolibrios.org/filedetails.php?repname=Kolibri+OS&path=%2Fprograms%2Fdebug.inc debug.inc], входящим в дистрибутив.
 
'''Константы для регистров:'''
::eax - SF_BOARD (63)
::ebx - SSF_DEBUG_WRITE (1)


===Подфункция 2 - чтение байта ===
===Подфункция 2 - чтение байта ===
Line 42: Line 46:
''Параметры:''
''Параметры:''


* eax = 63 - номер функции
:* eax = 63 - номер функции
* ebx = 2 - номер подфункции
:* ebx = 2 - номер подфункции
''
 
Возвращаемое значение:''
''Возвращаемое значение:''
 
:* eax = ebx = 0 - буфер пуст
:* eax = байт, ebx = 1 - байт успешно прочитан


* eax = ebx = 0 - буфер пуст
'''Константы для регистров:'''
* eax = байт, ebx = 1 - байт успешно прочитан
::eax - SF_BOARD (63)
::ebx - SSF_DEBUG_READ (2)


{{System_functions}}
{{System_functions}}
[[Category: SysCalls]]
[[Category: SysCalls]]

Latest revision as of 13:52, 18 January 2016

Функция 63 - работа с доской отладки.

Доска отладки представляет собой системный буфер (на 4096 байт), в который любая программа может записать (вообще говоря, произвольные) данные и из которого другая программа может эти данные прочитать. Есть соглашение, в соответствии с которым записываемые данные - текстовые строки, интерпретируемые как отладочные сообщения о ходе выполнения программы. Ядро в определённых ситуациях также записывает на доску отладки сведения о выполнении некоторых функций; по соглашению сообщения ядра начинаются с префикса "K : ". Для просмотра доски отладки создано приложение board, которое считывает данные из буфера и отображает их в своём окне. board понимает последовательность кодов 13,10 как переход на новую строку. Символ с нулевым кодом в конце строки не обязателен, но и не мешает. В связи с появлением отладчика ценность доски отладки несколько снизилась, поскольку отладчик позволяет полностью контролировать ход выполнения программы, причём для этого не требуется никаких усилий со стороны самой программы. Тем не менее во многих случаях доска отладки продолжает оставаться полезной.

Подфункция 1 - запись байта

Параметры:

  • eax = 63 - номер функции
  • ebx = 1 - номер подфункции
  • cl = байт данных

Возвращаемое значение:

  • функция не возвращает значения

Замечания:

  • Байт записывается в буфер. Длина буфера - 512 байт. При переполнении буфера все полученные данные теряются и заполнение начинается снова с нуля.
  • Для вывода на доску отладки более сложных объектов (строк, чисел) достаточно этой функции, вызываемой в цикле. Можно не писать вручную соответствующий код, а воспользоваться файлом debug.inc, входящим в дистрибутив.

Константы для регистров:

eax - SF_BOARD (63)
ebx - SSF_DEBUG_WRITE (1)

Подфункция 2 - чтение байта

Забирает байт из буфера.

Параметры:

  • eax = 63 - номер функции
  • ebx = 2 - номер подфункции

Возвращаемое значение:

  • eax = ebx = 0 - буфер пуст
  • eax = байт, ebx = 1 - байт успешно прочитан

Константы для регистров:

eax - SF_BOARD (63)
ebx - SSF_DEBUG_READ (2)