mirror of
https://git.FreeBSD.org/doc.git
synced 2026-06-02 19:35:07 +00:00
update translation of books/developers-handbook to Russian
Reviewed by: andy Differential Revision: https://reviews.freebsd.org/В56932
This commit is contained in:
@@ -1,12 +1,12 @@
|
||||
# SOME DESCRIPTIVE TITLE
|
||||
# Copyright (C) YEAR The FreeBSD Project
|
||||
# This file is distributed under the same license as the FreeBSD Documentation package.
|
||||
# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
|
||||
# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreeBSD Documentation VERSION\n"
|
||||
"POT-Creation-Date: 2025-11-08 16:17+0000\n"
|
||||
"PO-Revision-Date: 2025-11-09 04:45+0000\n"
|
||||
"PO-Revision-Date: 2026-03-23 04:45+0000\n"
|
||||
"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
|
||||
"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
|
||||
"documentation/booksdevelopers-handbook_index/ru/>\n"
|
||||
|
||||
@@ -1,12 +1,12 @@
|
||||
# SOME DESCRIPTIVE TITLE
|
||||
# Copyright (C) YEAR The FreeBSD Project
|
||||
# This file is distributed under the same license as the FreeBSD Documentation package.
|
||||
# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025.
|
||||
# Vladlen Popolitov <vladlenpopolitov@list.ru>, 2025, 2026.
|
||||
msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreeBSD Documentation VERSION\n"
|
||||
"POT-Creation-Date: 2026-03-15 14:15+0300\n"
|
||||
"PO-Revision-Date: 2025-07-05 04:45+0000\n"
|
||||
"POT-Creation-Date: 2026-05-11 13:23+0300\n"
|
||||
"PO-Revision-Date: 2026-03-23 04:45+0000\n"
|
||||
"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
|
||||
"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
|
||||
"documentation/booksdevelopers-handbookbook/ru/>\n"
|
||||
|
||||
@@ -73,12 +73,12 @@ endif::[]
|
||||
Содержат полное содержимое физической памяти.
|
||||
|
||||
Минидампы::
|
||||
Содержат только страницы памяти, используемые ядром (FreeBSD 6.2 и выше).
|
||||
Содержат только страницы памяти, используемые ядром.
|
||||
|
||||
Текстовые дампы::
|
||||
Содержать захваченные, записанные или интерактивные выходные данные отладчика (FreeBSD 7.1 и выше).
|
||||
Содержать захваченные, записанные или интерактивные выходные данные отладчика.
|
||||
|
||||
Минидампы являются типом дампа по умолчанию, начиная с FreeBSD 7.0, и в большинстве случаев они сохраняют всю необходимую информацию, присутствующую в полном дампе памяти, так как большинство проблем можно изолировать, используя только состояние ядра.
|
||||
Минидампы являются типом дампа по умолчанию и в большинстве случаев они сохраняют всю необходимую информацию, присутствующую в полном дампе памяти, так как большинство проблем можно изолировать, используя только состояние ядра.
|
||||
|
||||
[[config-dumpdev]]
|
||||
=== Настройка устройства дампа
|
||||
@@ -108,7 +108,7 @@ endif::[]
|
||||
|
||||
После записи дампа на устройство дампа, дамп должен быть извлечен до монтирования устройства подкачки. Для извлечения дампа с устройства дампа используйте программу man:savecore[8]. Если в man:rc.conf[5] установлен параметр `dumpdev`, man:savecore[8] будет автоматически вызван при первой загрузке в многопользовательском режиме после сбоя и до монтирования устройства подкачки. Расположение извлеченного ядра указывается в параметре `dumpdir` файла man:rc.conf[5], по умолчанию это [.filename]#/var/crash#, а имя файла будет [.filename]#vmcore.0#.
|
||||
|
||||
В случае, если файл с именем [.filename]#vmcore.0# уже существует в [.filename]#/var/crash# (или в каталоге, указанном в параметре `dumpdir`), ядро будет увеличивать завершающее число при каждом сбое, чтобы избежать перезаписи существующего файла [.filename]#vmcore# (например, [.filename]#vmcore.1#). man:savecore[8] всегда создает символическую ссылку с именем [.filename]#vmcore.last# в [.filename]#/var/crash# после сохранения дампа. Эта символическая ссылка может быть использована для определения имени последнего дампа.
|
||||
В случае, если файл с именем [.filename]#vmcore.0# уже существует в [.filename]#/var/crash# (или в каталоге, указанном в параметре `dumpdir`), ядро будет увеличивать завершающее число при каждом сбое, чтобы избежать перезаписи существующего файла [.filename]#vmcore# (например, [.filename]#vmcore.1#). man:savecore[8] всегда создаёт символическую ссылку с именем [.filename]#vmcore.last# в [.filename]#/var/crash# после сохранения дампа. Эта символическая ссылка может быть использована для определения имени последнего дампа.
|
||||
|
||||
Утилита man:crashinfo[8] создаёт текстовый файл, содержащий сводную информацию из полного дампа памяти или минидампа. Если параметр `dumpdev` установлен в man:rc.conf[5], man:crashinfo[8] будет автоматически вызван после man:savecore[8]. Результат сохраняется в файл с именем [.filename]#core.txt.N# в каталоге `dumpdir`.
|
||||
|
||||
@@ -149,7 +149,7 @@ debug.kdb.panic:panic: kdb_sysctl_panic
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
Этот раздел посвящен man:kgdb[1]. Последняя версия включена в пакет package:devel/gdb[]. Более старая версия также присутствует в FreeBSD 11 и более ранних версиях.
|
||||
Этот раздел посвящен man:kgdb[1]. Последняя версия включена в пакет package:devel/gdb[].
|
||||
====
|
||||
|
||||
Чтобы войти в отладчик и начать получение информации из дампа, запустите kgdb:
|
||||
@@ -175,7 +175,7 @@ debug.kdb.panic:panic: kdb_sysctl_panic
|
||||
|
||||
Вы можете отлаживать дамп аварийного завершения, используя исходные коды ядра, так же, как и для любой другой программы.
|
||||
|
||||
Этот дамп получен из ядра версии 5.2-BETA, а крах произошел глубоко внутри ядра. Приведенный ниже вывод был изменен для добавления номеров строк слева. Первый трассировочный вывод проверяет указатель инструкции и получает обратную трассировку. Адрес, используемый в строке 41 для команды `list`, является указателем инструкции и может быть найден в строке 17. Большинство разработчиков запросят как минимум эту информацию, если вы не сможете отладить проблему самостоятельно. Однако, если вы решите проблему, убедитесь, что ваш патч попадет в дерево исходников через отчёт о проблеме, списки рассылки, или, может быть, у вас есть возможность его закоммитить!
|
||||
Этот дамп получен из ядра версии 5.2-BETA, а крах произошел глубоко внутри ядра. Приведенный ниже вывод был изменён для добавления номеров строк слева. Первый трассировочный вывод проверяет указатель инструкции и получает обратную трассировку. Адрес, используемый в строке 41 для команды `list`, является указателем инструкции и может быть найден в строке 17. Большинство разработчиков запросят как минимум эту информацию, если вы не сможете отладить проблему самостоятельно. Однако, если вы решите проблему, убедитесь, что ваш патч попадет в дерево исходников через отчёт о проблеме, списки рассылки, или, может быть, у вас есть возможность его закоммитить!
|
||||
|
||||
[source, bash]
|
||||
....
|
||||
@@ -494,9 +494,9 @@ options KDB_UNATTENDED
|
||||
Настоятельно рекомендуется иметь распечатанную копию страницы руководства man:ddb[4] для сеанса отладки. Помните, что читать онлайн-руководство во время пошагового выполнения ядра сложно.
|
||||
|
||||
[[kerneldebug-online-gdb]]
|
||||
== Онлайн-отладка ядра с использованием удаленного GDB
|
||||
== Онлайн-отладка ядра с использованием удалённого GDB
|
||||
|
||||
Ядро FreeBSD предоставляет второй бэкенд KDB для отладки в реальном времени: man:gdb[4]. Эта возможность поддерживается с FreeBSD 2.2 и является действительно очень удобной.
|
||||
Ядро FreeBSD предоставляет второй бэкенд KDB для отладки в реальном времени: man:gdb[4].
|
||||
|
||||
GDB давно поддерживает _удалённую отладку_. Это осуществляется с помощью очень простого протокола через последовательное соединение. В отличие от других методов отладки, описанных выше, для этого потребуются две машины. Одна — это хост, предоставляющий среду отладки, включая все исходные тексты и копию бинарного файла ядра со всеми символами. Другая — целевая машина, на которой запущена копия того же самого ядра (возможно, без отладочной информации).
|
||||
|
||||
@@ -545,7 +545,7 @@ Reading symbols from /usr/obj/usr/src/amd64.amd64/sys/GENERIC/kernel.debug...
|
||||
(kgdb)
|
||||
....
|
||||
|
||||
Инициализируйте сеанс удаленной отладки (предполагая, что используется первый последовательный порт) с помощью:
|
||||
Инициализируйте сеанс удалённой отладки (предполагая, что используется первый последовательный порт) с помощью:
|
||||
|
||||
[source, bash]
|
||||
....
|
||||
@@ -690,7 +690,7 @@ hw.firewire.dcons_crom.force_console=1
|
||||
|Приостановить dconschat
|
||||
|===
|
||||
|
||||
Присоедините удаленный GDB, запустив man:kgdb[1] с сеансом удаленной отладки:
|
||||
Присоедините удалённый GDB, запустив man:kgdb[1] с сеансом удалённой отладки:
|
||||
|
||||
[source, bash]
|
||||
....
|
||||
@@ -762,7 +762,7 @@ M-x gdba
|
||||
* `options BREAK_TO_DEBUGGER`, `options ALT_BREAK_TO_DEBUGGER`: позволяют сигналу прерывания или альтернативному сигналу на консоли войти в отладчик. Если система зависает без паники, это полезный способ попасть в отладчик. Из-за текущей блокировки ядра сигнал прерывания, сгенерированный на последовательной консоли, значительно надёжнее для входа в отладчик и обычно рекомендуется. Данная опция оказывает незначительное или нулевое влияние на производительность.
|
||||
* `options INVARIANTS`: включает в ядро большое количество проверок и тестов во время выполнения, которые постоянно проверяют целостность структур данных ядра и инварианты алгоритмов ядра. Эти тесты могут быть затратными, поэтому по умолчанию не включены, но они помогают обеспечить полезное поведение "fail stop", при котором определённые классы нежелательного поведения попадают в отладчик до возникновения повреждения данных ядра, что упрощает их отладку. Тесты включают в себя очистку памяти и проверку использования после освобождения, что является одним из наиболее значимых источников накладных расходов. Эта опция зависит от `options INVARIANT_SUPPORT`.
|
||||
* `options INVARIANT_SUPPORT`: многие тесты, присутствующие в `options INVARIANTS`, требуют модифицированных структур данных или определения дополнительных символов ядра.
|
||||
* `options WITNESS`: эта опция включает отслеживание и проверку порядка блокировок во время выполнения, что является неоценимым инструментом для диагностики взаимоблокировок. WITNESS поддерживает граф полученных порядков блокировок по типам блокировок и проверяет граф на каждом получении на наличие циклов (явных или неявных). Если цикл обнаружен, на консоль выводится предупреждение и трассировка стека, указывающие на возможное возникновение взаимоблокировки. WITNESS необходим для использования команд DDB `show locks`, `show witness` и `show alllocks`. Эта отладочная опция создает значительную нагрузку на производительность, которую можно несколько уменьшить с помощью `options WITNESS_SKIPSPIN`. Подробная документация доступна в man:witness[4].
|
||||
* `options WITNESS`: эта опция включает отслеживание и проверку порядка блокировок во время выполнения, что является неоценимым инструментом для диагностики взаимоблокировок. WITNESS поддерживает граф полученных порядков блокировок по типам блокировок и проверяет граф на каждом получении на наличие циклов (явных или неявных). Если цикл обнаружен, на консоль выводится предупреждение и трассировка стека, указывающие на возможное возникновение взаимоблокировки. WITNESS необходим для использования команд DDB `show locks`, `show witness` и `show alllocks`. Эта отладочная опция создаёт значительную нагрузку на производительность, которую можно несколько уменьшить с помощью `options WITNESS_SKIPSPIN`. Подробная документация доступна в man:witness[4].
|
||||
* `options WITNESS_SKIPSPIN`: отключает проверку порядка блокировки spinlock во время выполнения с WITNESS. Поскольку spin-блокировки чаще всего захватываются в планировщике, а события планировщика происходят часто, эта опция может значительно ускорить системы, работающие с WITNESS. Эта опция зависит от `options WITNESS`.
|
||||
* `options WITNESS_KDB`: изменяет значение по умолчанию системной настройки `debug.witness.kdb` на 1, что приводит к входу в отладчик при обнаружении нарушения порядка блокировок вместо простого вывода предупреждения. Эта опция зависит от `options WITNESS`.
|
||||
* `options SOCKBUF_DEBUG`: выполнять расширенную проверку согласованности сокетных буферов во время выполнения, что может быть полезно для отладки как ошибок в сокетах, так и состояний гонки в протоколах и драйверах устройств, взаимодействующих с сокетами. Данная опция значительно влияет на производительность сети и может изменить временные параметры в состояниях гонки драйверов устройств.
|
||||
|
||||
File diff suppressed because it is too large
Load Diff
@@ -108,7 +108,7 @@ endif::[]
|
||||
|
||||
Скрипт [.filename]#index.cgi# генерирует HTML-сводку журналов tinderbox и tbmaster. Хотя изначально он предназначался для использования в качестве CGI-скрипта, как следует из его названия, этот скрипт также может быть запущен из командной строки или из задачи man:cron[8], в таком случае он будет искать логи в каталоге, где расположен сам скрипт. Он автоматически определяет контекст, генерируя HTTP-заголовки при запуске в качестве CGI-скрипта. Он соответствует стандартам XHTML и использует CSS для стилизации.
|
||||
|
||||
Скрипт начинает работу в блоке `main()`, пытаясь проверить, что он выполняется на официальном сайте Tinderbox. Если это не так, создается страница с указанием, что это не официальный сайт, и предоставляется URL официального сайта.
|
||||
Скрипт начинает работу в блоке `main()`, пытаясь проверить, что он выполняется на официальном сайте Tinderbox. Если это не так, создаётся страница с указанием, что это не официальный сайт, и предоставляется URL официального сайта.
|
||||
|
||||
Далее выполняется сканирование каталога журналов для получения перечня конфигураций, веток и архитектур, для которых существуют файлы журналов, чтобы избежать жёсткого задания списка в скрипте и потенциального появления пустых строк или столбцов. Эта информация извлекается из имён файлов журналов, соответствующих следующему шаблону:
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreeBSD Documentation VERSION\n"
|
||||
"POT-Creation-Date: 2025-05-01 19:56-0300\n"
|
||||
"PO-Revision-Date: 2026-03-04 20:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-05 04:45+0000\n"
|
||||
"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
|
||||
"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
|
||||
"documentation/booksdevelopers-handbooktesting_index/ru/>\n"
|
||||
@@ -492,7 +492,7 @@ msgid ""
|
||||
"provided."
|
||||
msgstr ""
|
||||
"Скрипт начинает работу в блоке `main()`, пытаясь проверить, что он "
|
||||
"выполняется на официальном сайте Tinderbox. Если это не так, создается "
|
||||
"выполняется на официальном сайте Tinderbox. Если это не так, создаётся "
|
||||
"страница с указанием, что это не официальный сайт, и предоставляется URL "
|
||||
"официального сайта."
|
||||
|
||||
|
||||
@@ -204,7 +204,7 @@ Tcl — это встраиваемый интерпретируемый язы
|
||||
Это создаст отладочную версию программы. footnote:[Примечание: мы не использовали флаг -o для указания имени исполняемого файла, поэтому получим исполняемый файл с именем a.out. Создание отладочной версии с именем foobar остаётся упражнением для читателя!]
|
||||
|
||||
`-O`::
|
||||
Создает оптимизированную версию исполняемого файла. Компилятор применяет различные хитрые приёмы, чтобы попытаться создать исполняемый файл, который работает быстрее обычного. Вы можете добавить число после `-O`, чтобы указать более высокий уровень оптимизации, но это часто выявляет ошибки в оптимизаторе компилятора.
|
||||
Создаёт оптимизированную версию исполняемого файла. Компилятор применяет различные хитрые приёмы, чтобы попытаться создать исполняемый файл, который работает быстрее обычного. Вы можете добавить число после `-O`, чтобы указать более высокий уровень оптимизации, но это часто выявляет ошибки в оптимизаторе компилятора.
|
||||
+
|
||||
[source, bash]
|
||||
....
|
||||
@@ -773,7 +773,7 @@ else if (pid == 0) { /* child */
|
||||
|
||||
Вот все, что нужно сделать: подключиться к дочернему процессу, установить `PauseMode` в `0` с помощью `expr PauseMode = 0` и дождаться возврата из вызова `sleep()`.
|
||||
|
||||
=== Удаленная отладка с использованием LLDB
|
||||
=== Удалённая отладка с использованием LLDB
|
||||
|
||||
[NOTE]
|
||||
====
|
||||
@@ -973,7 +973,7 @@ Cannot access memory at address 0x7020796d.
|
||||
|
||||
==== Подключение к работающей программе с помощью gdb
|
||||
|
||||
Одной из самых удобных функций `gdb` является возможность подключения к уже запущенной программе. Конечно, для этого требуются соответствующие разрешения. Частой проблемой является пошаговое выполнение программы, которая создает дочерний процесс, когда нужно отслеживать дочерний процесс, но отладчик продолжает отслеживать только родительский.
|
||||
Одной из самых удобных функций `gdb` является возможность подключения к уже запущенной программе. Конечно, для этого требуются соответствующие разрешения. Частой проблемой является пошаговое выполнение программы, которая создаёт дочерний процесс, когда нужно отслеживать дочерний процесс, но отладчик продолжает отслеживать только родительский.
|
||||
|
||||
Для этого запустите другой `gdb`, используйте `ps` для поиска идентификатора процесса дочернего элемента и выполните
|
||||
|
||||
@@ -1399,7 +1399,7 @@ Emacs делает много замечательных вещей; некот
|
||||
|
||||
Это означает, что Emacs автоматически перейдёт в режим `whizbang-mode` при редактировании файла с расширением [.filename]#.wiz#.
|
||||
|
||||
Непосредственно ниже вы найдете запись font-lock-auto-mode-list. Добавьте `whizbang-mode` в нее следующим образом:
|
||||
Непосредственно ниже вы найдете запись font-lock-auto-mode-list. Добавьте `whizbang-mode` в неё следующим образом:
|
||||
|
||||
[.programlisting]
|
||||
....
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreeBSD Documentation VERSION\n"
|
||||
"POT-Creation-Date: 2025-11-08 16:17+0000\n"
|
||||
"PO-Revision-Date: 2026-03-08 09:11+0000\n"
|
||||
"PO-Revision-Date: 2026-04-05 04:45+0000\n"
|
||||
"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
|
||||
"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
|
||||
"documentation/booksdevelopers-handbooktools_index/ru/>\n"
|
||||
@@ -823,7 +823,7 @@ msgid ""
|
||||
"normal. You can add a number after the `-O` to specify a higher level of "
|
||||
"optimization, but this often exposes bugs in the compiler's optimizer."
|
||||
msgstr ""
|
||||
"Создает оптимизированную версию исполняемого файла. Компилятор применяет "
|
||||
"Создаёт оптимизированную версию исполняемого файла. Компилятор применяет "
|
||||
"различные хитрые приёмы, чтобы попытаться создать исполняемый файл, который "
|
||||
"работает быстрее обычного. Вы можете добавить число после `-O`, чтобы "
|
||||
"указать более высокий уровень оптимизации, но это часто выявляет ошибки в "
|
||||
@@ -2694,7 +2694,7 @@ msgstr ""
|
||||
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:937
|
||||
#, no-wrap
|
||||
msgid "Remote Debugging Using LLDB"
|
||||
msgstr "Удаленная отладка с использованием LLDB"
|
||||
msgstr "Удалённая отладка с использованием LLDB"
|
||||
|
||||
#. type: delimited block = 4
|
||||
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:943
|
||||
@@ -3126,7 +3126,7 @@ msgstr ""
|
||||
"Одной из самых удобных функций `gdb` является возможность подключения к уже "
|
||||
"запущенной программе. Конечно, для этого требуются соответствующие "
|
||||
"разрешения. Частой проблемой является пошаговое выполнение программы, "
|
||||
"которая создает дочерний процесс, когда нужно отслеживать дочерний процесс, "
|
||||
"которая создаёт дочерний процесс, когда нужно отслеживать дочерний процесс, "
|
||||
"но отладчик продолжает отслеживать только родительский."
|
||||
|
||||
#. type: Plain text
|
||||
@@ -4358,7 +4358,7 @@ msgid ""
|
||||
"`whizbang-mode` to it like so:"
|
||||
msgstr ""
|
||||
"Непосредственно ниже вы найдете запись font-lock-auto-mode-list. Добавьте "
|
||||
"`whizbang-mode` в нее следующим образом:"
|
||||
"`whizbang-mode` в неё следующим образом:"
|
||||
|
||||
#. type: delimited block . 4
|
||||
#: documentation/content/en/books/developers-handbook/tools/_index.adoc:1619
|
||||
|
||||
@@ -496,7 +496,7 @@ _start:
|
||||
|
||||
Вот что он делает: Строка 1 включает определения, макросы и код из файла [.filename]#system.inc#.
|
||||
|
||||
Строки 3-5 содержат данные: строка 3 начинает раздел/сегмент данных. Строка 4 содержит строку "Hello, World!", за которой следует новая строка (`0Ah`). Строка 5 создает константу, содержащую длину строки из строки 4 в байтах.
|
||||
Строки 3-5 содержат данные: строка 3 начинает раздел/сегмент данных. Строка 4 содержит строку "Hello, World!", за которой следует новая строка (`0Ah`). Строка 5 создаёт константу, содержащую длину строки из строки 4 в байтах.
|
||||
|
||||
Строки 7-16 содержат код. Обратите внимание, что FreeBSD использует формат файлов _elf_ для исполняемых файлов, который требует, чтобы каждая программа запускается с адреса, помеченного как `_start` (или, точнее, компоновщик ожидает этого). Эта метка должна быть глобальной.
|
||||
|
||||
@@ -1470,7 +1470,7 @@ repne scasb
|
||||
sys.exit
|
||||
....
|
||||
|
||||
Этот код создает исполняемый файл размером 1 396 байт. Большая его часть — это данные, а именно HTML-разметка, которую нам нужно отправить.
|
||||
Этот код создаёт исполняемый файл размером 1 396 байт. Большая его часть — это данные, а именно HTML-разметка, которую нам нужно отправить.
|
||||
|
||||
Запустите ассемблер и слинкуйте как обычно:
|
||||
|
||||
@@ -1528,7 +1528,7 @@ repne scasb
|
||||
[[x86-finite-state-machine]]
|
||||
=== Конечный автомат
|
||||
|
||||
Проблема легко решается с использованием техники, называемой _конечный автомат_, изначально разработанной создателями цифровых электронных схем. _Конечный автомат_ — это цифровая схема, выход которой зависит не только от входа, но и от предыдущего входа, то есть от её состояния. Микропроцессор является примером _конечного автомата_: наш код на языке ассемблера транслируется в машинный язык, где одни инструкции ассемблера превращаются в один байт машинного кода, а другие — в несколько байтов. Когда микропроцессор извлекает байты из памяти один за другим, некоторые из них просто изменяют его состояние, а не производят какой-либо выходной сигнал. После извлечения всех байтов кода операции микропроцессор выдает выходной сигнал, изменяет значение регистра и т. д.
|
||||
Проблема легко решается с использованием техники, называемой _конечный автомат_, изначально разработанной создателями цифровых электронных схем. _Конечный автомат_ — это цифровая схема, выход которой зависит не только от входа, но и от предыдущего входа, то есть от её состояния. Микропроцессор является примером _конечного автомата_: наш код на языке ассемблера транслируется в машинный язык, где одни инструкции ассемблера превращаются в один байт машинного кода, а другие — в несколько байтов. Когда микропроцессор извлекает байты из памяти один за другим, некоторые из них просто изменяют его состояние, а не производят какой-либо выходной сигнал. После извлечения всех байтов кода операции микропроцессор выдаёт выходной сигнал, изменяет значение регистра и т. д.
|
||||
|
||||
Из-за этого всё программное обеспечение по сути представляет собой последовательность инструкций состояния для микропроцессора. Тем не менее, концепция _конечного автомата_ также полезна при проектировании программного обеспечения.
|
||||
|
||||
@@ -2045,7 +2045,7 @@ align 4
|
||||
|
||||
* Она анализирует свою командную строку на наличие опций;
|
||||
* Она отображает подсказку, если обнаруживает неверные аргументы;
|
||||
* Она выдает понятные сообщения об ошибках.
|
||||
* Она выдаёт понятные сообщения об ошибках.
|
||||
|
||||
Вот какое сообщение она выводит о том, как её использовать:
|
||||
|
||||
|
||||
@@ -6,7 +6,7 @@ msgid ""
|
||||
msgstr ""
|
||||
"Project-Id-Version: FreeBSD Documentation VERSION\n"
|
||||
"POT-Creation-Date: 2025-11-08 16:17+0000\n"
|
||||
"PO-Revision-Date: 2026-03-04 20:01+0000\n"
|
||||
"PO-Revision-Date: 2026-04-05 04:45+0000\n"
|
||||
"Last-Translator: Vladlen Popolitov <vladlenpopolitov@list.ru>\n"
|
||||
"Language-Team: Russian <https://translate-dev.freebsd.org/projects/"
|
||||
"documentation/booksdevelopers-handbookx86_index/ru/>\n"
|
||||
@@ -1404,9 +1404,8 @@ msgid ""
|
||||
"bytes."
|
||||
msgstr ""
|
||||
"Строки 3-5 содержат данные: строка 3 начинает раздел/сегмент данных. Строка "
|
||||
"4 содержит строку \"Hello, World!\", за которой следует новая строка "
|
||||
"(`0Ah`). Строка 5 создает константу, содержащую длину строки из строки 4 в "
|
||||
"байтах."
|
||||
"4 содержит строку \"Hello, World!\", за которой следует новая строка (`0Ah`)"
|
||||
". Строка 5 создаёт константу, содержащую длину строки из строки 4 в байтах."
|
||||
|
||||
#. type: Plain text
|
||||
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:572
|
||||
@@ -3871,7 +3870,7 @@ msgid ""
|
||||
"This code produces a 1,396-byte executable. Most of it is data, i.e., the "
|
||||
"HTML mark-up we need to send out."
|
||||
msgstr ""
|
||||
"Этот код создает исполняемый файл размером 1 396 байт. Большая его часть — "
|
||||
"Этот код создаёт исполняемый файл размером 1 396 байт. Большая его часть — "
|
||||
"это данные, а именно HTML-разметка, которую нам нужно отправить."
|
||||
|
||||
#. type: Plain text
|
||||
@@ -4113,7 +4112,7 @@ msgstr ""
|
||||
"один байт машинного кода, а другие — в несколько байтов. Когда "
|
||||
"микропроцессор извлекает байты из памяти один за другим, некоторые из них "
|
||||
"просто изменяют его состояние, а не производят какой-либо выходной сигнал. "
|
||||
"После извлечения всех байтов кода операции микропроцессор выдает выходной "
|
||||
"После извлечения всех байтов кода операции микропроцессор выдаёт выходной "
|
||||
"сигнал, изменяет значение регистра и т. д."
|
||||
|
||||
#. type: Plain text
|
||||
@@ -5732,7 +5731,7 @@ msgstr "Она отображает подсказку, если обнаруж
|
||||
#. type: Plain text
|
||||
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2284
|
||||
msgid "It produces meaningful error messages."
|
||||
msgstr "Она выдает понятные сообщения об ошибках."
|
||||
msgstr "Она выдаёт понятные сообщения об ошибках."
|
||||
|
||||
#. type: Plain text
|
||||
#: documentation/content/en/books/developers-handbook/x86/_index.adoc:2286
|
||||
|
||||
Reference in New Issue
Block a user