Translation components API.

See the Weblate's Web API documentation for detailed description of the API.

GET /api/translations/documentation/booksarch-handbookboot_index/zh_CN/units/?format=api&page=5
HTTP 200 OK
Allow: GET, POST, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 293,
    "next": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/units/?format=api&page=6",
    "previous": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/units/?format=api&page=4",
    "results": [
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "A `Task-State Segment (TSS)` is created.  This is necessary because the processor works in the _least_ privileged level when executing the client ([.filename]#boot2#), but in the _most_ privileged level when executing the BTX server."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 713019170290830367,
            "content_hash": 713019170290830367,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:888",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 163,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436581/?format=api",
            "priority": 100,
            "id": 1438673,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=89e527285b3a8c1f",
            "url": "https://translate-dev.freebsd.org/api/units/1438673/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.271549Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "The GDT (Global Descriptor Table) is set up.  Entries (descriptors) are provided for supervisor code and data, user code and data, and real-mode code and data.  footnote:[Real-mode code and data are necessary when switching back to real mode from protected mode, as suggested by the Intel manuals.]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 7714283688006376561,
            "content_hash": 7714283688006376561,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:891",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 164,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 47,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436583/?format=api",
            "priority": 100,
            "id": 1438674,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=eb0ea4246835dc71",
            "url": "https://translate-dev.freebsd.org/api/units/1438674/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.275473Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Let us now start studying the actual implementation.  Recall that [.filename]#boot1# made a jump to address `0x9010`, the BTX server's entry point.  Before studying program execution there, note that the BTX server has a special header at address range `0x9000-0x900f`, right before its entry point.  This header is defined as follows:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2484842257955112798,
            "content_hash": 2484842257955112798,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:896",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 165,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 51,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436585/?format=api",
            "priority": 100,
            "id": 1438675,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=a27beede4c4b475e",
            "url": "https://translate-dev.freebsd.org/api/units/1438675/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.279665Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-header]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4715238116266201311,
            "content_hash": 4715238116266201311,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:914",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 167,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436587/?format=api",
            "priority": 100,
            "id": 1438676,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=c16fe415976dd0df",
            "url": "https://translate-dev.freebsd.org/api/units/1438676/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.287917Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Note the first two bytes are `0xeb` and `0xe`.  In the IA-32 architecture, these two bytes are interpreted as a relative jump past the header into the entry point, so in theory, [.filename]#boot1# could jump here (address `0x9000`) instead of address `0x9010`.  Note that the last field in the BTX header is a pointer to the client's ([.filename]#boot2#) entry pointb2.  This field is patched at link time."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -1903558726486881404,
            "content_hash": -1903558726486881404,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:919",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 168,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 67,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436589/?format=api",
            "priority": 100,
            "id": 1438677,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=6595336c7aa78b84",
            "url": "https://translate-dev.freebsd.org/api/units/1438677/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.361791Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/*\n * Initialization routine.\n */\ninit:\t\tcli\t\t\t\t# Disable interrupts\n\t\txor %ax,%ax\t\t\t# Zero/segment\n\t\tmov %ax,%ss\t\t\t# Set up\n\t\tmov $MEM_ESP0,%sp\t\t#  stack\n\t\tmov %ax,%es\t\t\t# Address\n\t\tmov %ax,%ds\t\t\t#  data\n\t\tpushl $0x2\t\t\t# Clear\n\t\tpopfl\t\t\t\t#  flags\n"
            ],
            "previous_source": "",
            "target": [
                "/*\n * Initialization routine.\n */\ninit:\t\tcli\t\t\t\t# Disable interrupts\n\t\txor %ax,%ax\t\t\t# Zero/segment\n\t\tmov %ax,%ss\t\t\t# Set up\n\t\tmov $0x1800,%sp\t\t#  stack\n\t\tmov %ax,%es\t\t\t# Address\n\t\tmov %ax,%ds\t\t\t#  data\n\t\tpushl $0x2\t\t\t# Clear\n\t\tpopfl\t\t\t\t#  flags\n"
            ],
            "id_hash": 4009622884313927171,
            "content_hash": 4009622884313927171,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:935",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 170,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 38,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436591/?format=api",
            "priority": 100,
            "id": 1438678,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=b7a50ac4f6cf0e03",
            "url": "https://translate-dev.freebsd.org/api/units/1438678/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.372308Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-init]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -845051223314216961,
            "content_hash": -845051223314216961,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:937",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 171,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436593/?format=api",
            "priority": 100,
            "id": 1438679,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=7445c663c158c7ff",
            "url": "https://translate-dev.freebsd.org/api/units/1438679/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.377647Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "This code disables interrupts, sets up a working stack (starting at address `0x1800`) and clears the flags in the EFLAGS register.  Note that the `popfl` instruction pops out a doubleword (4 bytes) from the stack and places it in the EFLAGS register.  As the value actually popped is `2`, the EFLAGS register is effectively cleared (IA-32 requires that bit 2 of the EFLAGS register always be 1)."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8615059423826275749,
            "content_hash": 8615059423826275749,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:941",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 172,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 67,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436595/?format=api",
            "priority": 100,
            "id": 1438680,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=f78ed6e6c40beda5",
            "url": "https://translate-dev.freebsd.org/api/units/1438680/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.381887Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Our next code block clears (sets to `0`) the memory range `0x5e00-0x8fff`.  This range is where the various data structures will be created:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -7323480016215307486,
            "content_hash": -7323480016215307486,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:944",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 173,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436597/?format=api",
            "priority": 100,
            "id": 1438681,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=1a5dc5ba09d08b22",
            "url": "https://translate-dev.freebsd.org/api/units/1438681/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.386077Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/*\n * Initialize memory.\n */\n\t\tmov $MEM_IDT,%di\t\t# Memory to initialize\n\t\tmov $(MEM_ORG-MEM_IDT)/2,%cx\t# Words to zero\n\t\trep\t\t\t\t# Zero-fill\n\t\tstosw\t\t\t\t#  memory\n"
            ],
            "previous_source": "",
            "target": [
                "/*\n * Initialize memory.\n */\n\t\tmov $0x5e00,%di\t\t# Memory to initialize\n\t\tmov $(0x9000-0x5e00)/2,%cx\t# Words to zero\n\t\trep\t\t\t\t# Zero-fill\n\t\tstosw\t\t\t\t#  memory\n"
            ],
            "id_hash": -7912490346943382555,
            "content_hash": -7912490346943382555,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:954",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 174,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436599/?format=api",
            "priority": 100,
            "id": 1438682,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=12312ff39dbb7be5",
            "url": "https://translate-dev.freebsd.org/api/units/1438682/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.390983Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-clear-mem]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6178617644590937169,
            "content_hash": 6178617644590937169,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:956",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 175,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436601/?format=api",
            "priority": 100,
            "id": 1438683,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=d5bedc0314cdb451",
            "url": "https://translate-dev.freebsd.org/api/units/1438683/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.454334Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Recall that [.filename]#boot1# was originally loaded to address `0x7c00`, so, with this memory initialization, that copy effectively disappeared.  However, also recall that [.filename]#boot1# was relocated to `0x700`, so _that_ copy is still in memory, and the BTX server will make use of it."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2197081322727841956,
            "content_hash": -2197081322727841956,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:959",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 176,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 43,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436603/?format=api",
            "priority": 100,
            "id": 1438684,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=6182662d78295f5c",
            "url": "https://translate-dev.freebsd.org/api/units/1438684/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.458168Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Next, the real-mode IVT (Interrupt Vector Table is updated.  The IVT is an array of segment/offset pairs for exception and interrupt handlers.  The BIOS normally maps hardware interrupts to interrupt vectors `0x8` to `0xf` and `0x70` to `0x77` but, as will be seen, the 8259A Programmable Interrupt Controller, the chip controlling the actual mapping of hardware interrupts to interrupt vectors, is programmed to remap these interrupt vectors from `0x8-0xf` to `0x20-0x27` and from `0x70-0x77` to `0x28-0x2f`.  Thus, interrupt handlers are provided for interrupt vectors `0x20-0x2f`.  The reason the BIOS-provided handlers are not used directly is because they work in 16-bit real mode, but not 32-bit protected mode.  Processor mode will be switched to 32-bit protected mode shortly.  However, the BTX server sets up a mechanism to effectively use the handlers provided by the BIOS:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2941132973058430840,
            "content_hash": -2941132973058430840,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:967",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 177,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 134,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436605/?format=api",
            "priority": 100,
            "id": 1438685,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=572eff24cfa9e888",
            "url": "https://translate-dev.freebsd.org/api/units/1438685/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.462104Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-ivt]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5811669437052233427,
            "content_hash": -5811669437052233427,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:984",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 179,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436607/?format=api",
            "priority": 100,
            "id": 1438686,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=2f58cd704481d92d",
            "url": "https://translate-dev.freebsd.org/api/units/1438686/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.473757Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "The next block creates the IDT (Interrupt Descriptor Table).  The IDT is analogous, in protected mode, to the IVT in real mode.  That is, the IDT describes the various exception and interrupt handlers used when the processor is executing in protected mode.  In essence, it also consists of an array of segment/offset pairs, although the structure is somewhat more complex, because segments in protected mode are different than in real mode, and various protection mechanisms apply:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 2062662935155350859,
            "content_hash": 2062662935155350859,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:989",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 180,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 76,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436609/?format=api",
            "priority": 100,
            "id": 1438687,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=9ca00d02d54c9d4b",
            "url": "https://translate-dev.freebsd.org/api/units/1438687/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.479113Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/*\n * Create IDT.\n */\n\t\tmov $MEM_IDT,%di\t\t# IDT's address\n\t\tmov $idtctl,%si\t\t\t# Control string\ninit.1:\t\tlodsb\t\t\t\t# Get entry\n\t\tcbw\t\t\t\t#  count\n\t\txchg %ax,%cx\t\t\t#  as word\n\t\tjcxz init.4\t\t\t# If done\n\t\tlodsb\t\t\t\t# Get segment\n\t\txchg %ax,%dx\t\t\t#  P:DPL:type\n\t\tlodsw\t\t\t\t# Get control\n\t\txchg %ax,%bx\t\t\t#  set\n\t\tlodsw\t\t\t\t# Get handler offset\n\t\tmov $SEL_SCODE,%dh\t\t# Segment selector\ninit.2:\t\tshr %bx\t\t\t\t# Handle this int?\n\t\tjnc init.3\t\t\t# No\n\t\tmov %ax,(%di)\t\t\t# Set handler offset\n\t\tmov %dh,0x2(%di)\t\t#  and selector\n\t\tmov %dl,0x5(%di)\t\t# Set P:DPL:type\n\t\tadd $0x4,%ax\t\t\t# Next handler\ninit.3:\t\tlea 0x8(%di),%di\t\t# Next entry\n\t\tloop init.2\t\t\t# Till set done\n\t\tjmp init.1\t\t\t# Continue\n"
            ],
            "previous_source": "",
            "target": [
                "/*\n * Create IDT.\n */\n\t\tmov $0x5e00,%di\t\t\t# IDT's address\n\t\tmov $idtctl,%si\t\t\t# Control string\ninit.1:\t\tlodsb\t\t\t\t# Get entry\n\t\tcbw\t\t\t\t#  count\n\t\txchg %ax,%cx\t\t\t#  as word\n\t\tjcxz init.4\t\t\t# If done\n\t\tlodsb\t\t\t\t# Get segment\n\t\txchg %ax,%dx\t\t\t#  P:DPL:type\n\t\tlodsw\t\t\t\t# Get control\n\t\txchg %ax,%bx\t\t\t#  set\n\t\tlodsw\t\t\t\t# Get handler offset\n\t\tmov $SEL_SCODE,%dh\t\t# Segment selector\ninit.2:\t\tshr %bx\t\t\t\t# Handle this int?\n\t\tjnc init.3\t\t\t# No\n\t\tmov %ax,(%di)\t\t\t# Set handler offset\n\t\tmov %dh,0x2(%di)\t\t#  and selector\n\t\tmov %dl,0x5(%di)\t\t# Set P:DPL:type\n\t\tadd $0x4,%ax\t\t\t# Next handler\ninit.3:\t\tlea 0x8(%di),%di\t\t# Next entry\n\t\tloop init.2\t\t\t# Till set done\n\t\tjmp init.1\t\t\t# Continue\n"
            ],
            "id_hash": 2102150803069793179,
            "content_hash": 2102150803069793179,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1016",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 181,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 107,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436611/?format=api",
            "priority": 100,
            "id": 1438688,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=9d2c57048946f39b",
            "url": "https://translate-dev.freebsd.org/api/units/1438688/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.485546Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-idt]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6200636464354194657,
            "content_hash": 6200636464354194657,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1018",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 182,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436613/?format=api",
            "priority": 100,
            "id": 1438689,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=d60d16030f2a74e1",
            "url": "https://translate-dev.freebsd.org/api/units/1438689/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.551366Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Each entry in the `IDT` is 8 bytes long.  Besides the segment/offset information, they also describe the segment type, privilege level, and whether the segment is present in memory or not.  The construction is such that interrupt vectors from `0` to `0xf` (exceptions) are handled by function `intx00`; vector `0x10` (also an exception) is handled by `intx10`; hardware interrupts, which are later configured to start at interrupt vector `0x20` all the way to interrupt vector `0x2f`, are handled by function `intx20`.  Lastly, interrupt vector `0x30`, which is used for system calls, is handled by `intx30`, and vectors `0x31` and `0x32` are handled by `intx31`.  It must be noted that only descriptors for interrupt vectors `0x30`, `0x31` and `0x32` are given privilege level 3, the same privilege level as the [.filename]#boot2# client, which means the client can execute a software-generated interrupt to this vectors through the `int` instruction without failing (this is the way [.filename]#boot2# use the services provided by the BTX server).  Also, note that _only_ software-generated interrupts are protected from code executing in lesser privilege levels.  Hardware-generated interrupts and processor-generated exceptions are _always_ handled adequately, regardless of the actual privileges involved."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1987533812313852570,
            "content_hash": 1987533812313852570,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1026",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 183,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 192,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436615/?format=api",
            "priority": 100,
            "id": 1438690,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=9b952378ce0b8a9a",
            "url": "https://translate-dev.freebsd.org/api/units/1438690/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.555521Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "The next step is to initialize the TSS (Task-State Segment).  The TSS is a hardware feature that helps the operating system or executive software implement multitasking functionality through process abstraction.  The IA-32 architecture demands the creation and use of _at least_ one TSS if multitasking facilities are used or different privilege levels are defined.  Since the [.filename]#boot2# client is executed in privilege level 3, but the BTX server runs in privilege level 0, a TSS must be defined:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 263740875526728261,
            "content_hash": 263740875526728261,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1031",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 184,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 78,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436617/?format=api",
            "priority": 100,
            "id": 1438691,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=83a8feedce856a45",
            "url": "https://translate-dev.freebsd.org/api/units/1438691/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.560380Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-tss]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -1774189083797871128,
            "content_hash": -1774189083797871128,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1042",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 186,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436619/?format=api",
            "priority": 100,
            "id": 1438692,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=6760d06da7da25e8",
            "url": "https://translate-dev.freebsd.org/api/units/1438692/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.569454Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Note that a value is given for the Privilege Level 0 stack pointer and stack segment in the TSS.  This is needed because, if an interrupt or exception is received while executing [.filename]#boot2# in Privilege Level 3, a change to Privilege Level 0 is automatically performed by the processor, so a new working stack is needed.  Finally, the I/O Map Base Address field of the TSS is given a value, which is a 16-bit offset from the beginning of the TSS to the I/O Permission Bitmap and the Interrupt Redirection Bitmap."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1374034531120360570,
            "content_hash": 1374034531120360570,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1046",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 187,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 91,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436621/?format=api",
            "priority": 100,
            "id": 1438693,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=93118d20488cac7a",
            "url": "https://translate-dev.freebsd.org/api/units/1438693/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.573320Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "After the IDT and TSS are created, the processor is ready to switch to protected mode.  This is done in the next block:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -4908171658769530752,
            "content_hash": -4908171658769530752,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1049",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 188,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436623/?format=api",
            "priority": 100,
            "id": 1438694,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=3be2abe186670080",
            "url": "https://translate-dev.freebsd.org/api/units/1438694/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.577094Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-prot]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -77355964023659756,
            "content_hash": -77355964023659756,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1069",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 190,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436625/?format=api",
            "priority": 100,
            "id": 1438695,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=7eed2d291b1ca314",
            "url": "https://translate-dev.freebsd.org/api/units/1438695/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.594442Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "First, a call is made to `setpic` to program the 8259A PIC (Programmable Interrupt Controller).  This chip is connected to multiple hardware interrupt sources.  Upon receiving an interrupt from a device, it signals the processor with the appropriate interrupt vector.  This can be customized so that specific interrupts are associated with specific interrupt vectors, as explained before.  Next, the IDTR (Interrupt Descriptor Table Register) and GDTR (Global Descriptor Table Register) are loaded with the instructions `lidt` and `lgdt`, respectively.  These registers are loaded with the base address and limit address for the IDT and GDT.  The following three instructions set the Protection Enable (PE) bit of the `%cr0` register.  This effectively switches the processor to 32-bit protected mode.  Next, a long jump is made to `init.8` using segment selector SEL_SCODE, which selects the Supervisor Code Segment.  The processor is effectively executing in CPL 0, the most privileged level, after this jump.  Finally, the Supervisor Data Segment is selected for the stack by assigning the segment selector SEL_SDATA to the `%ss` register.  This data segment also has a privilege level of `0`."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2992351916285555756,
            "content_hash": -2992351916285555756,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1082",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 191,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 181,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436627/?format=api",
            "priority": 100,
            "id": 1438696,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=567907c94ad70bd4",
            "url": "https://translate-dev.freebsd.org/api/units/1438696/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.598648Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/*\n * Launch user task.\n */\n\t\tmovb $SEL_TSS,%cl\t\t# Set task\n\t\tltr %cx\t\t\t\t#  register\n\t\tmovl $MEM_USR,%edx\t\t# User base address\n\t\tmovzwl %ss:BDA_MEM,%eax\t\t# Get free memory\n\t\tshll $0xa,%eax\t\t\t# To bytes\n\t\tsubl $ARGSPACE,%eax\t\t# Less arg space\n\t\tsubl %edx,%eax\t\t\t# Less base\n\t\tmovb $SEL_UDATA,%cl\t\t# User data selector\n\t\tpushl %ecx\t\t\t# Set SS\n\t\tpushl %eax\t\t\t# Set ESP\n\t\tpush $0x202\t\t\t# Set flags (IF set)\n\t\tpush $SEL_UCODE\t\t\t# Set CS\n\t\tpushl btx_hdr+0xc\t\t# Set EIP\n\t\tpushl %ecx\t\t\t# Set GS\n\t\tpushl %ecx\t\t\t# Set FS\n\t\tpushl %ecx\t\t\t# Set DS\n\t\tpushl %ecx\t\t\t# Set ES\n\t\tpushl %edx\t\t\t# Set EAX\n\t\tmovb $0x7,%cl\t\t\t# Set remaining\ninit.9:\t\tpush $0x0\t\t\t#  general\n\t\tloop init.9\t\t\t#  registers\n#ifdef BTX_SERIAL\n\t\tcall sio_init\t\t\t# setup the serial console\n#endif\n\t\tpopa\t\t\t\t#  and initialize\n\t\tpopl %es\t\t\t# Initialize\n\t\tpopl %ds\t\t\t#  user\n\t\tpopl %fs\t\t\t#  segment\n\t\tpopl %gs\t\t\t#  registers\n\t\tiret\t\t\t\t# To user mode\n"
            ],
            "previous_source": "",
            "target": [
                "/*\n * Launch user task.\n */\n\t\tmovb $SEL_TSS,%cl\t\t# Set task\n\t\tltr %cx\t\t\t\t#  register\n\t\tmovl $0xa000,%edx\t\t# User base address\n\t\tmovzwl %ss:BDA_MEM,%eax\t\t# Get free memory\n\t\tshll $0xa,%eax\t\t\t# To bytes\n\t\tsubl $ARGSPACE,%eax\t\t# Less arg space\n\t\tsubl %edx,%eax\t\t\t# Less base\n\t\tmovb $SEL_UDATA,%cl\t\t# User data selector\n\t\tpushl %ecx\t\t\t# Set SS\n\t\tpushl %eax\t\t\t# Set ESP\n\t\tpush $0x202\t\t\t# Set flags (IF set)\n\t\tpush $SEL_UCODE\t\t\t# Set CS\n\t\tpushl btx_hdr+0xc\t\t# Set EIP\n\t\tpushl %ecx\t\t\t# Set GS\n\t\tpushl %ecx\t\t\t# Set FS\n\t\tpushl %ecx\t\t\t# Set DS\n\t\tpushl %ecx\t\t\t# Set ES\n\t\tpushl %edx\t\t\t# Set EAX\n\t\tmovb $0x7,%cl\t\t\t# Set remaining\ninit.9:\t\tpush $0x0\t\t\t#  general\n\t\tloop init.9\t\t\t#  registers\n\t\tpopa\t\t\t\t#  and initialize\n\t\tpopl %es\t\t\t# Initialize\n\t\tpopl %ds\t\t\t#  user\n\t\tpopl %fs\t\t\t#  segment\n\t\tpopl %gs\t\t\t#  registers\n\t\tiret\t\t\t\t# To user mode\n"
            ],
            "id_hash": 5593170204071011698,
            "content_hash": 5593170204071011698,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1120",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 193,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 150,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436629/?format=api",
            "priority": 100,
            "id": 1438697,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=cd9eeeaaadf3a572",
            "url": "https://translate-dev.freebsd.org/api/units/1438697/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.657849Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "[.filename]#stand/i386/btx/btx/btx.S# [[btx-end]]"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8226378526713168460,
            "content_hash": -8226378526713168460,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1122",
            "context": "",
            "note": "type: Block title",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 194,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 2,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436631/?format=api",
            "priority": 100,
            "id": 1438698,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=0dd60850af5c3db4",
            "url": "https://translate-dev.freebsd.org/api/units/1438698/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.667139Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Note that the client's environment include a stack segment selector and stack pointer (registers `%ss` and `%esp`).  Indeed, once the TR is loaded with the appropriate stack segment selector (instruction `ltr`), the stack pointer is calculated and pushed onto the stack along with the stack's segment selector.  Next, the value `0x202` is pushed onto the stack; it is the value that the EFLAGS will get when control is passed to the client.  Also, the User Mode code segment selector and the client's entry point are pushed.  Recall that this entry point is patched in the BTX header at link time.  Finally, segment selectors (stored in register `%ecx`) for the segment registers `%gs, %fs, %ds and %es` are pushed onto the stack, along with the value at `%edx` (`0xa000`).  Keep in mind the various values that have been pushed onto the stack (they will be popped out shortly).  Next, values for the remaining general purpose registers are also pushed onto the stack (note the `loop` that pushes the value `0` seven times).  Now, values will be started to be popped out of the stack.  First, the `popa` instruction pops out of the stack the latest seven values pushed.  They are stored in the general purpose registers in order `%edi, %esi, %ebp, %ebx, %edx, %ecx, %eax`.  Then, the various segment selectors pushed are popped into the various segment registers.  Five values still remain on the stack.  They are popped when the `iret` instruction is executed.  This instruction first pops the value that was pushed from the BTX header.  This value is a pointer to [.filename]#boot2#'s entry point.  It is placed in the register `%eip`, the instruction pointer register.  Next, the segment selector for the User Code Segment is popped and copied to register `%cs`.  Remember that this segment's privilege level is 3, the least privileged level.  This means that we must provide values for the stack of this privilege level.  This is why the processor, besides further popping the value for the EFLAGS register, does two more pops out of the stack.  These values go to the stack pointer (`%esp`) and the stack segment (`%ss`).  Now, execution continues at ``boot0``'s entry point."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 959775574751909898,
            "content_hash": 959775574751909898,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1146",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 195,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 360,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436633/?format=api",
            "priority": 100,
            "id": 1438699,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=8d51ceccd52f180a",
            "url": "https://translate-dev.freebsd.org/api/units/1438699/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.672405Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "It is important to note how the User Code Segment is defined.  This segment's _base address_ is set to `0xa000`.  This means that code memory addresses are _relative_ to address 0xa000; if code being executed is fetched from address `0x2000`, the _actual_ memory addressed is `0xa000+0x2000=0xc000`."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8602585956441729498,
            "content_hash": -8602585956441729498,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1150",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 196,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 46,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436635/?format=api",
            "priority": 100,
            "id": 1438700,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=089d79a6ac86d626",
            "url": "https://translate-dev.freebsd.org/api/units/1438700/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.677225Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "`boot2` defines an important structure, `struct bootinfo`.  This structure is initialized by `boot2` and passed to the loader, and then further to the kernel.  Some nodes of this structures are set by `boot2`, the rest by the loader.  This structure, among other information, contains the kernel filename, BIOS harddisk geometry, BIOS drive number for boot device, physical memory available, `envp` pointer etc.  The definition for it is:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 6493341310408820575,
            "content_hash": 6493341310408820575,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1159",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 198,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 67,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436637/?format=api",
            "priority": 100,
            "id": 1438701,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=da1cfb84c449875f",
            "url": "https://translate-dev.freebsd.org/api/units/1438701/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.684982Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "`boot2` enters into an infinite loop waiting for user input, then calls `load()`.  If the user does not press anything, the loop breaks by a timeout, so `load()` will load the default file ([.filename]#/boot/loader#).  Functions `ino_t lookup(char *filename)` and `int xfsread(ino_t inode, void *buf, size_t nbyte)` are used to read the content of a file into memory.  [.filename]#/boot/loader# is an ELF binary, but where the ELF header is prepended with [.filename]#a.out#'s `struct exec` structure.  `load()` scans the loader's ELF header, loading the content of [.filename]#/boot/loader# into memory, and passing the execution to the loader's entry:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5080383871093235622,
            "content_hash": -5080383871093235622,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1191",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 200,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 95,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436639/?format=api",
            "priority": 100,
            "id": 1438702,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=397ed9c948dd205a",
            "url": "https://translate-dev.freebsd.org/api/units/1438702/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.752366Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "stand/i386/boot2/boot2.c:\n    __exec((caddr_t)addr, RB_BOOTINFO | (opts & RBX_MASK),\n\t   MAKEBOOTDEV(dev_maj[dsk.type], dsk.slice, dsk.unit, dsk.part),\n\t   0, 0, 0, VTOP(&bootinfo));\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8991716493474534716,
            "content_hash": -8991716493474534716,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1198",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 201,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 15,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436641/?format=api",
            "priority": 100,
            "id": 1438703,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=0337017d456deac4",
            "url": "https://translate-dev.freebsd.org/api/units/1438703/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.758545Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "loader is a BTX client as well.  I will not describe it here in detail, there is a comprehensive man page written by Mike Smith, man:loader[8].  The underlying mechanisms and BTX were discussed above."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 8168764292188005769,
            "content_hash": 8168764292188005769,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1206",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 203,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 34,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436643/?format=api",
            "priority": 100,
            "id": 1438704,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=f15d47d801c2e589",
            "url": "https://translate-dev.freebsd.org/api/units/1438704/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.767898Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "The main task for the loader is to boot the kernel.  When the kernel is loaded into memory, it is being called by the loader:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 1361752339450843361,
            "content_hash": 1361752339450843361,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1209",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 204,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 25,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436645/?format=api",
            "priority": 100,
            "id": 1438705,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=92e5ea89b10650e1",
            "url": "https://translate-dev.freebsd.org/api/units/1438705/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.775917Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "stand/common/boot.c:\n    /* Call the exec handler from the loader matching the kernel */\n    file_formats[fp->f_loader]->l_exec(fp);\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 592432761214301662,
            "content_hash": 592432761214301662,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1215",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 205,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 14,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436647/?format=api",
            "priority": 100,
            "id": 1438706,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=8838be751d7b75de",
            "url": "https://translate-dev.freebsd.org/api/units/1438706/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.784649Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Let us take a look at the command that links the kernel.  This will help identify the exact location where the loader passes execution to the kernel.  This location is the kernel's actual entry point.  This command is now excluded from [.filename]#sys/conf/Makefile.i386#.  The content that interests us can be found in [.filename]#/usr/obj/usr/src/i386.i386/sys/GENERIC/#."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 498460647728415104,
            "content_hash": 498460647728415104,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1225",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 207,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 52,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436649/?format=api",
            "priority": 100,
            "id": 1438707,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=86eae351725d0180",
            "url": "https://translate-dev.freebsd.org/api/units/1438707/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.817165Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/usr/obj/usr/src/i386.i386/sys/GENERIC/kernel.meta:\nld -m elf_i386_fbsd -Bdynamic -T /usr/src/sys/conf/ldscript.i386 --build-id=sha1 --no-warn-mismatch \\\n--warn-common --export-dynamic  --dynamic-linker /red/herring -X -o kernel locore.o\n<lots of kernel .o files>\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3795981866441073020,
            "content_hash": 3795981866441073020,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1232",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 208,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 23,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436651/?format=api",
            "priority": 100,
            "id": 1438708,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=b4ae0965430b617c",
            "url": "https://translate-dev.freebsd.org/api/units/1438708/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.853163Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "A few interesting things can be seen here.  First, the kernel is an ELF dynamically linked binary, but the dynamic linker for kernel is [.filename]#/red/herring#, which is definitely a bogus file.  Second, taking a look at the file [.filename]#sys/conf/ldscript.i386# gives an idea about what ld options are used when compiling a kernel.  Reading through the first few lines, the string"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3965535630150848726,
            "content_hash": -3965535630150848726,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1238",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 209,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 60,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436653/?format=api",
            "priority": 100,
            "id": 1438709,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=48f7965accb42f2a",
            "url": "https://translate-dev.freebsd.org/api/units/1438709/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.857803Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "says that a kernel's entry point is the symbol `btext`.  This symbol is defined in [.filename]#locore.s#:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -8640302545423053025,
            "content_hash": -8640302545423053025,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1247",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 211,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 16,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436655/?format=api",
            "priority": 100,
            "id": 1438710,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=08177a9cfc27cf1f",
            "url": "https://translate-dev.freebsd.org/api/units/1438710/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.881559Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "First, the register EFLAGS is set to a predefined value of 0x00000002.  Then all the segment registers are initialized:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 4695363525195467022,
            "content_hash": 4695363525195467022,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1262",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 213,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 19,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436657/?format=api",
            "priority": 100,
            "id": 1438711,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=c129483fc29a090e",
            "url": "https://translate-dev.freebsd.org/api/units/1438711/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.891883Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "btext calls the routines `recover_bootinfo()`, `identify_cpu()`, which are also defined in [.filename]#locore.s#.  Here is a description of what they do:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3584395515303661745,
            "content_hash": 3584395515303661745,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1281",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 216,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436659/?format=api",
            "priority": 100,
            "id": 1438712,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=b1be54baf02d90b1",
            "url": "https://translate-dev.freebsd.org/api/units/1438712/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.969895Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "This routine parses the parameters to the kernel passed from the bootstrap.\nThe kernel may have been booted in 3 ways: by the loader, described above, by the old disk boot blocks, or by the old diskless boot procedure.\nThis function determines the booting method, and stores the `struct bootinfo` structure into the kernel memory."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -5739305461841263012,
            "content_hash": -5739305461841263012,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1291",
            "context": "",
            "note": "type: Table",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 218,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 55,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436661/?format=api",
            "priority": 100,
            "id": 1438713,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=3059e417317e065c",
            "url": "https://translate-dev.freebsd.org/api/units/1438713/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.982599Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "This function tries to find out what CPU it is running on, storing the value found in a variable `_cpu`."
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3966896510099643946,
            "content_hash": -3966896510099643946,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1293",
            "context": "",
            "note": "type: Table",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 220,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 20,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436663/?format=api",
            "priority": 100,
            "id": 1438714,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=48f2c0a43ec621d6",
            "url": "https://translate-dev.freebsd.org/api/units/1438714/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.991534Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "sys/i386/i386/mpboot.s:\n\ttestl\t$CPUID_VME,%edx\n\tjz\t3f\n\torl\t$CR4_VME,%eax\n3:\tmovl\t%eax,%cr4\n"
            ],
            "previous_source": "",
            "target": [
                "\ttestl\t$CPUID_VME, R(_cpu_feature)\n\tjz\t1f\n\tmovl\t%cr4, %eax\n\torl\t$CR4_VME, %eax\n\tmovl\t%eax, %cr4\n"
            ],
            "id_hash": -8296947463390117843,
            "content_hash": -8296947463390117843,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1304",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 222,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 10,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436665/?format=api",
            "priority": 100,
            "id": 1438715,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=0cdb523dbc8dc02d",
            "url": "https://translate-dev.freebsd.org/api/units/1438715/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:17.998194Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "sys/i386/i386/mpboot.s:\n/* Now enable paging */\n\tmovl\tIdlePTD_nopae, %eax\n\tmovl\t%eax,%cr3\t\t\t/* load ptd addr into mmu */\n\tmovl\t%cr0,%eax\t\t\t/* get control word */\n\torl\t$CR0_PE|CR0_PG,%eax\t\t/* enable paging */\n\tmovl\t%eax,%cr0\t\t\t/* and let's page NOW! */\n"
            ],
            "previous_source": "",
            "target": [
                "/* Now enable paging */\n\tmovl\tR(_IdlePTD), %eax\n\tmovl\t%eax,%cr3\t\t\t/* load ptd addr into mmu */\n\tmovl\t%cr0,%eax\t\t\t/* get control word */\n\torl\t$CR0_PE|CR0_PG,%eax\t\t/* enable paging */\n\tmovl\t%eax,%cr0\t\t\t/* and let's page NOW! */\n"
            ],
            "id_hash": -1922710570866274864,
            "content_hash": -1922710570866274864,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1317",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 224,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 39,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436667/?format=api",
            "priority": 100,
            "id": 1438716,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=655128ec39a08dd0",
            "url": "https://translate-dev.freebsd.org/api/units/1438716/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.070624Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "sys/i386/i386/mpboot.s:\n\tpushl\t$mp_begin\t\t\t\t/* jump to high mem */\n\tret\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -2441982590011346257,
            "content_hash": -2441982590011346257,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1326",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 226,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 10,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436669/?format=api",
            "priority": 100,
            "id": 1438717,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=5e1c55c5c6af72af",
            "url": "https://translate-dev.freebsd.org/api/units/1438717/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.083091Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "/* now running relocated at KERNBASE where the system is linked to run */\nmp_begin:\t/* now running relocated at KERNBASE */\n"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 78101979324088725,
            "content_hash": 78101979324088725,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1329",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 227,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 22,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436671/?format=api",
            "priority": 100,
            "id": 1438718,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=811579561dde0195",
            "url": "https://translate-dev.freebsd.org/api/units/1438718/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.089135Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "The function `init386()` is called with a pointer to the first free physical page, after that `mi_startup()`.  `init386` is an architecture dependent initialization function, and `mi_startup()` is an architecture independent one (the 'mi_' prefix stands for Machine Independent).  The kernel never returns from `mi_startup()`, and by calling it, the kernel finishes booting:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": 3875492701494615419,
            "content_hash": 3875492701494615419,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1334",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 228,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 52,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436673/?format=api",
            "priority": 100,
            "id": 1438719,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=b5c884142a349d7b",
            "url": "https://translate-dev.freebsd.org/api/units/1438719/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.094347Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "sys/i386/i386/locore.s:\n\tpushl\tphysfree\t\t\t/* value of first for init386(first) */\n\tcall\tinit386\t\t\t\t/* wire 386 chip for unix operation */\n\taddl\t$4,%esp\n\tmovl\t%eax,%esp\t\t\t/* Switch to true top of stack. */\n\tcall\tmi_startup\t\t\t/* autoconfiguration, mountroot etc */\n\t/* NOTREACHED */\n"
            ],
            "previous_source": "",
            "target": [
                "<filename>sys/i386/i386/locore.s:</filename>\n\tmovl\tphysfree, %esi\n\tpushl\t%esi\t\t\t\t/* value of first for init386(first) */\n\tcall\t_init386\t\t\t/* wire 386 chip for unix operation */\n\tcall\t_mi_startup\t\t\t/* autoconfiguration, mountroot etc */\n\thlt\t\t/* never returns to here */\n"
            ],
            "id_hash": 2500008019465070950,
            "content_hash": 2500008019465070950,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1344",
            "context": "",
            "note": "type: delimited block . 4",
            "flags": "no-wrap",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 229,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": true,
            "num_words": 42,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436675/?format=api",
            "priority": 100,
            "id": 1438720,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=a2b1d00c4fd7e966",
            "url": "https://translate-dev.freebsd.org/api/units/1438720/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.100428Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "Set up thread0's pcb."
            ],
            "previous_source": "Set up proc0's pcb.",
            "target": [
                "建立proc0(0号进程,即内核的进程)的pcb(进程控制块)。"
            ],
            "id_hash": -2458459466951419131,
            "content_hash": -2458459466951419131,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1360",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 10,
            "fuzzy": true,
            "translated": false,
            "approved": false,
            "position": 239,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 4,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436679/?format=api",
            "priority": 100,
            "id": 1438722,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=5de1cc23e9aa1b05",
            "url": "https://translate-dev.freebsd.org/api/units/1438722/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.190827Z"
        },
        {
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/zh_CN/?format=api",
            "source": [
                "`init386()` initializes the tunable parameters passed from bootstrap by setting the environment pointer (envp) and calling `init_param1()`.  The envp pointer has been passed from loader in the `bootinfo` structure:"
            ],
            "previous_source": "",
            "target": [
                ""
            ],
            "id_hash": -3300174229056574904,
            "content_hash": -3300174229056574904,
            "location": "documentation/content/en/books/arch-handbook/boot/_index.adoc:1363",
            "context": "",
            "note": "type: Plain text",
            "flags": "",
            "labels": [],
            "state": 0,
            "fuzzy": false,
            "translated": false,
            "approved": false,
            "position": 240,
            "has_suggestion": false,
            "has_comment": false,
            "has_failing_check": false,
            "num_words": 29,
            "source_unit": "https://translate-dev.freebsd.org/api/units/1436681/?format=api",
            "priority": 100,
            "id": 1438723,
            "web_url": "https://translate-dev.freebsd.org/translate/documentation/booksarch-handbookboot_index/zh_CN/?checksum=52336d06142f2a48",
            "url": "https://translate-dev.freebsd.org/api/units/1438723/?format=api",
            "explanation": "",
            "extra_flags": "",
            "pending": false,
            "timestamp": "2022-07-08T03:00:18.290733Z"
        }
    ]
}