Translation components API.

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

GET /api/translations/documentation/booksarch-handbookboot_index/es/changes/?format=api&page=6
HTTP 200 OK
Allow: GET, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "count": 376,
    "next": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/changes/?format=api&page=7",
    "previous": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/changes/?format=api&page=5",
    "results": [
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436869/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T11:59:39.539706Z",
            "action": 5,
            "target": "Una vez que se tienen los ficheros que forman el programa [.filename]#boot#, el paso final es _juntarlos_. Esto se hace con un programa especial llamado [.filename]#btxld# (las fuentes se encuentran en [.filename]#/usr/src/usr.sbin/btxld#). Algunos argumentos que se pueden aplicar a este programa incluyen el nombre del fichero de salida ([.filename]#boot#), su punto de entrada (`0x2000`) y su formato binario (binario en crudo). Los diferentes ficheros se mezclan con esta utilidad en el fichero final [.filename]#boot# que consiste en  [.filename]#boot1#, [.filename]#boot2#, el `bsdlabel` y el servidor BTX. Este fichero, que ocupa exactamente 16 sectores, o 8192 bytes, es lo que se escribe en realidad el comienzo de la sección FreeBSD durante la instalación. Procedamos ahora a estudiar el programa servidor BTX.",
            "id": 445746,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445746/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436870/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:00:07.561385Z",
            "action": 2,
            "target": "El servidor BTX prepara un entorno simple y cambia del modo real de 16 bits al modo protegido de 32 bits, justo antes de pasar el control al cliente. Esto incluye inicializar y actualizar las siguientes estructuras de datos:",
            "id": 445747,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445747/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436871/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:01:40.197637Z",
            "action": 5,
            "target": "Modifica la `Tabla de Vectores de Interrupción (IVT)`. La IVT proporciona manejadores de interrupción y excepción para código en Modo Real.",
            "id": 445748,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445748/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436872/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:02:43.090102Z",
            "action": 2,
            "target": "Se crea la `Tabla de descriptores de interrupciones (IDT)`. Se proporcionan entradas para excepciones de procesador, interrupciones de hardware, dos llamadas al sistema e interfaz V86. El IDT proporciona manejadores de excepciones e interrupciones para el código en Modo Protegido.",
            "id": 445749,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445749/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436873/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:04:08.877394Z",
            "action": 5,
            "target": "Se crea un `Segmento de Estado de Tarea (TSS)`. Esto es necesario porque el procesador trabaja en el nivel de _menor_ privilegio cuando está ejecutando el cliente ([.filename]#boot2#), pero en el nivel de _mayor_ privilegio cuando ejecuta el servidor BTX.",
            "id": 445750,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445750/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436874/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:05:52.125976Z",
            "action": 5,
            "target": "Se configura la Tabla de Descriptor Global (GDT). Se proporcionan entradas (descriptores) para código y datos de supervisor, código y datos de usuario, y código y datos en modo real. footnote:[El código y los datos en modo real son necesarios cuando se cambia de modo protegido a modo real, como sugieren los manuales de Intel.]",
            "id": 445751,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445751/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436875/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:07:21.806008Z",
            "action": 5,
            "target": "Estudiemos ahora la implementación real. Recuerda que [.filename]#boot1# saltó a la dirección `0x9010`, el punto de entrada del servidor BTX. Antes de estudiar la ejecución del programa allí, fíjate en que el servidor BTX tiene un encabezado especial en el rango de direcciones `0x9000-0x900f`, justo antes de su punto de entrada. Este encabezado se define de la siguiente manera:",
            "id": 445752,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445752/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1130983/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:07:54.733689Z",
            "action": 5,
            "target": "start:\t\t\t\t\t\t# Start of code\n/*\n * BTX header.\n */\nbtx_hdr:\t.byte 0xeb\t\t\t# Machine ID\n\t\t.byte 0xe\t\t\t# Header size\n\t\t.ascii \"BTX\"\t\t\t# Magic\n\t\t.byte 0x1\t\t\t# Major version\n\t\t.byte 0x2\t\t\t# Minor version\n\t\t.byte BTX_FLAGS\t\t\t# Flags\n\t\t.word PAG_CNT-MEM_ORG>>0xc\t# Paging control\n\t\t.word break-start\t\t# Text size\n\t\t.long 0x0\t\t\t# Entry address\n",
            "id": 445753,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445753/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436876/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:08:34.189975Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-header]]",
            "id": 445754,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445754/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436877/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:12:19.580927Z",
            "action": 5,
            "target": "Date cuenta de que los dos primeros bytes son ``0xeb y `0xe`. En la arquitectura IA-32, estos dos bytes se interpretan como un salto relativo hacia el punto de entrada pasada la cabecera, de forma que en teoría, [.filename]#boot1# podría saltar aquí (dirección `0x9000`) en lugar de a la dirección `0x9010`. Fíjate que el último campo del encabezado de BTX es un punto al punto de entrada del cliente ([.filename]#boot2#) pointb2. Este campo se parchea en tiempo de enlazado.",
            "id": 445755,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445755/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1130989/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:12:48.699406Z",
            "action": 5,
            "target": "Inmediatamente después del encabezado está el punto de entrada del servidor BTX:",
            "id": 445756,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445756/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436878/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:13:53.588798Z",
            "action": 5,
            "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 $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",
            "id": 445757,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445757/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436879/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:17:10.306174Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-init]]",
            "id": 445758,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445758/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436880/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:19:02.596220Z",
            "action": 5,
            "target": "Este código deshabilita interrupciones, configura una pila funcional (empezando en la dirección `0x1800`) y borra los flags en el registro EFLAGS. Date cuenta de que la instrucción `popfl` saca una palabra doble (4 bytes) de la pila y la coloca en el registro EFLAGS. Como el valor que se ha sacado es en realidad `2`, el registro EFLAGS se borra de forma efectiva (IA-32 requiere que el bit 2 del registro EFLAGS sea siempre 1).",
            "id": 445759,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445759/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436881/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:20:06.320050Z",
            "action": 5,
            "target": "Nuestro siguiente bloque de código borra (establece a `0`) el rango de memoria `0x5e00-0x8fff`. Este rango es donde se crearán varias estructuras de datos:",
            "id": 445760,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445760/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436882/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:20:31.509692Z",
            "action": 5,
            "target": "/*\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",
            "id": 445761,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445761/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436883/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:21:00.332408Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-clear-mem]]",
            "id": 445762,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445762/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436884/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T12:22:22.432890Z",
            "action": 5,
            "target": "Recuerda que [.filename]#boot1# se cargaba originalmente en la dirección `0x7c00`, de forma que, con esta inicialización de memoria, esa copia desaparece. Sin embargo, recuerda también que [.filename]#boot1# fue recolocado en `0x700`, de forma que _esa_ copia todavía está en memoria, y el servidor BTX hará uso de ella.",
            "id": 445763,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445763/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436885/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T13:47:04.036953Z",
            "action": 5,
            "target": "Depués se actualiza la IVT (Tabla de Vector de Interrupciones) en modo real. La IVT es un array de pares segmento/desplazamiento para manejadores de interrupción y excepción. La BIOS normalmente mapea las interrupciones hardware a los vectores de interrupción `0x8` a `0xf` y `0x70` a `0x77` pero, como veremos, el Controlador Programable de Interrupciones 8259A, el chip que controla el mapeo real de las interrupciones hardware a vectores de interrupción, se programa para remapear estos vectores de interrupción desde `0x8-0xf` a `0x20-0x27` y desde `0x70-0x77` a `0x28-0x2f`. Por lo tanto, se proporcionan manejadores de interrupción para los vectores de interrupción `0x20-0x2f`. La razón de que no se usen directamente los manejadores proporcionados por la BIOS es porque funcionan en modo real de 16 bits, no es modo protegido de 32 bits. El modo del procesador cambiará a modo protegido de 32 bits en breve. Sin embargo, el servidor BTX configura un mecanismo para usar los manejadores proporcionados por la BIOS de forma efectiva:",
            "id": 445764,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445764/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131007/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:28:31.442718Z",
            "action": 2,
            "target": "/*\n * Actualiza el IDT en modo real para reflejar las interrupciones de hardware.\n */\n\t\tmov $intr20,%bx\t\t\t# Dirección del primer manejador\n\t\tmov $0x10,%cx\t\t\t# Número de manipuladores\n\t\tmov $0x20*4,%di\t\t\t# Primera entrada IDT en modo real\ninit.0:\t\tmov %bx,(%di)\t\t\t# IP de la tienda\n\t\tinc %di\t\t\t\t# Dirección siguiente\n\t\tinc %di\t\t\t\t#  entrada\n\t\tstosw\t\t\t\t#  Almacenar CS\n\t\tadd $4,%bx\t\t\t# Siguiente controlador\n\t\tloop init.0\t\t\t# Next IRQ\n",
            "id": 445765,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445765/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436886/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:28:38.035545Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-ivt]]",
            "id": 445766,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445766/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436887/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:29:57.583686Z",
            "action": 2,
            "target": "El siguiente bloque crea el IDT (Tabla de Descriptores de Interrupciones). La IDT es análoga, en modo protegido, al IVT en modo real. Es decir, la IDT describe los diversos manejadores de excepciones e interrupciones que se utilizan cuando el procesador se ejecuta en modo protegido. En esencia, también consta de una matriz de pares de segmento/desplazamiento, aunque la estructura es algo más compleja, porque los segmentos en modo protegido son diferentes a los del modo real, y se aplican varios mecanismos de protección:",
            "id": 445767,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445767/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436888/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:30:04.685996Z",
            "action": 2,
            "target": "/*\n * Create IDT.\n */\n\t\tmov $0x5e00,%di\t\t\t#Dirección de IDT\n\t\tmov $idtctl,%si\t\t\t# Cadena de control\ninit.1:\t\tlodsb\t\t\t\t# Obtener entrada\n\t\tcbw\t\t\t\t#  contar\n\t\txchg %ax,%cx\t\t\t#  como palabra\n\t\tjcxz init.4\t\t\t# Si esta hecho\n\t\tlodsb\t\t\t\t# Obtener segmento\n\t\txchg %ax,%dx\t\t\t#  P:DPL:tipo\n\t\tlodsw\t\t\t\t# Toma el control\n\t\txchg %ax,%bx\t\t\t#  conjunto\n\t\tlodsw\t\t\t\t# Obtener compensación de controlador\n\t\tmov $SEL_SCODE,%dh\t\t# Selector de segmento\ninit.2:\t\tshr %bx\t\t\t\t# Maneja este int?\n\t\tjnc init.3\t\t\t# No\n\t\tmov %ax,(%di)\t\t\t# Establecer compensación de controlador\n\t\tmov %dh,0x2(%di)\t\t#  y selector\n\t\tmov %dl,0x5(%di)\t\t# Conjunto P:DPL:tipo\n\t\tadd $0x4,%ax\t\t\t# Siguiente controlador\ninit.3:\t\tlea 0x8(%di),%di\t\t# Entrada siguiente\n\t\tloop init.2\t\t\t#Hasta que esté listo\n\t\tjmp init.1\t\t\t# Seguir\n",
            "id": 445768,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445768/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436889/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:30:10.406095Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-idt]]",
            "id": 445769,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445769/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436890/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:38:34.858544Z",
            "action": 5,
            "target": "Cada entrada en la `IDT` ocupa 8 bytes. Además de la información de segmento/desplazamiento, también describe el tipo de segmento, nivel de privilegio, y si el segmento está en memoria o no. Se construye de tal forma que los vectores de interrupción de `0` a `0xf` (excepciones) son manejados por `intx00`; el vector `0x10` (también excepción) es manejado por `intx10`; las interrupciones hardware, que se configuran posteriormente para empezar en el vector de interrupción `0x20` hasta el vector `0x2f`, se manejan con la función `intx20`. Por último, el vector de interrupción `0x30`, que se usa para llamadas al sistema, es manejado por `intx30`, y los vectores `0x31` y `0x32` son manejados por `intx31`. Hay que fijarse en que sólo a los descriptores para los vectores de interrupción `0x30`, `0x31` y `0x32` se les da nivel de privilegios 3, el mismo nivel de privilegio que el cliente [.filename]#boot2#, lo que significa que el cliente puede ejecutar interrupciones generadas por software en estos vectores mediante la instrucción `int` sin que fallen (esta es la forma en la que [.filename]#boot2# usa los servicios proporcionados por el servidor BTX). También, fíjate que _sólo_ las interrupciones generadas por software están protegidas respecto de código que se ejecuta en niveles menores de privilegio. Las interrupciones generadas por hardware y las excepciones generadas por el procesador _siempre_ se manejan de forma adecuada, independientemente de los niveles de privilegio involucrados.",
            "id": 445770,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445770/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436891/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:41:12.753560Z",
            "action": 5,
            "target": "El siguiente paso es inicializar el TSS (Segmento de Estado de Tarea). El TSS es una característica hardware que ayuda al sistema operativo o al software ejecutivo a implementar funcionalidad de multitarea mediante la abstracción de procesos. La arquitectura IA-32 exige la creación y el uso de _al menos_ un TSS si se usan las facilidades multitarea o si se definen diferentes niveles de privilegio. Como el cliente [.filename]#boot2# se ejecuta en nivel de privilegio 3, pero el servidor BTX se ejecuta en nivel de privilegio 0, se tiene que definir un TSS:",
            "id": 445771,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445771/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131021/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:41:27.314917Z",
            "action": 5,
            "target": "/*\n * Initialize TSS.\n */\ninit.4:\t\tmovb $_ESP0H,TSS_ESP0+1(%di)\t# Set ESP0\n\t\tmovb $SEL_SDATA,TSS_SS0(%di)\t# Set SS0\n\t\tmovb $_TSSIO,TSS_MAP(%di)\t# Set I/O bit map base\n",
            "id": 445772,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445772/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436892/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:43:14.919979Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-tss]]",
            "id": 445773,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445773/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436893/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:45:31.320317Z",
            "action": 2,
            "target": "Ten en cuenta que se proporciona un valor para el puntero de pila de nivel de privilegio 0 y el segmento de pila en el TSS. Esto es necesario porque, si se recibe una interrupción o excepción durante la ejecución de [.filename]#boot2# en el nivel de privilegio 3, el procesador realiza automáticamente un cambio al nivel de privilegio 0, por lo que se necesita una nueva pila de trabajo. Finalmente, se le da un valor al campo de la Dirección Base del Aapa de E/S del TSS, que es un desplazamiento de 16 bits desde el comienzo de la TSS al mapa de bits de permisos de E/S y al mapa de bits de redirección de interrupciones.",
            "id": 445774,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445774/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436894/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:46:22.020432Z",
            "action": 5,
            "target": "Después de haber creado la IDT y el TSS, el procesaodor está listo para cambiar a modo protegido. Esto se hace en el siguiente bloque:",
            "id": 445775,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445775/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131029/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:46:41.536322Z",
            "action": 2,
            "target": "/*\n *Levantar el sistema.\n */\n\t\tmov $0x2820,%bx\t\t\t# Establecer modo protegido\n\t\tcallw setpic\t\t\t#  Compensaciones de IRQ\n\t\tlidt idtdesc\t\t\t# Establecer IDT\n\t\tlgdt gdtdesc\t\t\t# Establecer GDT\n\t\tmov %cr0,%eax\t\t\t# Cambiar a protegido\n\t\tinc %ax\t\t\t\t#  modo\n\t\tmov %eax,%cr0\t\t\t#\n\t\tljmp $SEL_SCODE,$init.8\t\t# A código de 32 bits\n\t\t.code32\ninit.8:\t\txorl %ecx,%ecx\t\t\t# Cero\n\t\tmovb $SEL_SDATA,%cl\t\t# A 32-bit\n\t\tmovw %cx,%ss\t\t\t#  apilar\n",
            "id": 445776,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445776/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436895/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:47:13.816409Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-prot]]",
            "id": 445777,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445777/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436896/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:51:02.219318Z",
            "action": 2,
            "target": "Primero, se hace una llamada a `setpic` para programar el PIC (Controlador de interrupción programable) 8259A . Este chip está conectado a múltiples fuentes de interrupción de hardware. Al recibir una interrupción de un dispositivo, envía una señal al procesador con el vector de interrupción apropiado. Esto se puede personalizar para que las interrupciones específicas se asocien con vectores de interrupción específicos, como se explicó antes. A continuación, la IDTR (Registro de tabla de descriptores de interrupción) y el GDTR (Registro de tabla de descriptor global) se cargan con las instrucciones `lidt` y `lgdt`, respectivamente. Estos registros se cargan con la dirección base y la dirección límite para la IDT y la GDT. Las siguientes tres instrucciones establecen el bit de habilitación de protección (PE) del`%cr0`Registrarse. Esto cambia efectivamente el procesador al modo protegido de 32 bits. A continuación, se realiza un salto de largo a `init.8` utilizando el selector de segmento SEL_SCODE, que selecciona el segmento de código de supervisor. El procesador se está ejecutando efectivamente en CPL 0, el nivel más privilegiado, después de este salto. Finalmente, el segmento de datos del supervisor se selecciona para la pila asignando el selector de segmento SEL_SDATA al registro `%ss`. Este segmento de datos también tiene un nivel de privilegio de `0`.",
            "id": 445778,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445778/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131035/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:53:59.634389Z",
            "action": 2,
            "target": "Nuestro último bloque de código es responsable de cargar el TR (Registro de Tareas) con el selector de segmento para el TSS que creamos anteriormente y configurar el entorno de modo de usuario antes de pasar el control de ejecución al cliente [.filename]#boot2#.",
            "id": 445779,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445779/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436897/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:54:07.778952Z",
            "action": 2,
            "target": "/*\n * Launch user task.\n */\n\t\tmovb $SEL_TSS,%cl\t\t# Establecer tarea\n\t\tltr %cx\t\t\t\t#  registrar\n\t\tmovl $0xa000,%edx\t\t# Dirección base de usuario\n\t\tmovzwl %ss:BDA_MEM,%eax\t\t# Obtenga memoria libre\n\t\tshll $0xa,%eax\t\t\t# A bytes\n\t\tsubl $ARGSPACE,%eax\t\t# Menos espacio arg\n\t\tsubl %edx,%eax\t\t\t# Menos base\n\t\tmovb $SEL_UDATA,%cl\t\t# Selector de datos de usuario\n\t\tpushl %ecx\t\t\t# Establecer SS\n\t\tpushl %eax\t\t\t# Establecer ESP\n\t\tpush $0x202\t\t\t# Establecer flags (IF set)\n\t\tpush $SEL_UCODE\t\t\t# Establecer CS\n\t\tpushl btx_hdr+0xc\t\t# Establecer EIP\n\t\tpushl %ecx\t\t\t# Establecer GS\n\t\tpushl %ecx\t\t\t# Establecer FS\n\t\tpushl %ecx\t\t\t# Establecer DS\n\t\tpushl %ecx\t\t\t# Establecer ES\n\t\tpushl %edx\t\t\t# Establecer EAX\n\t\tmovb $0x7,%cl\t\t\t# Establecer restante\ninit.9:\t\tpush $0x0\t\t\t#  general\n\t\tloop init.9\t\t\t#  registros\n\t\tpopa\t\t\t\t# e inicializar\n\t\tpopl %es\t\t\t# Inicializar\n\t\tpopl %ds\t\t\t#  usuario\n\t\tpopl %fs\t\t\t#  segmento\n\t\tpopl %gs\t\t\t#  registros\n\t\tiret\t\t\t\t# Al modo de usuario\n",
            "id": 445780,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445780/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436898/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T15:54:12.506616Z",
            "action": 5,
            "target": "[.filename]#stand/i386/btx/btx/btx.S# [[btx-end]]",
            "id": 445781,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445781/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436899/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:04:16.779342Z",
            "action": 2,
            "target": "Ten en cuenta que el entorno del cliente incluye un selector de segmento de pila y un puntero de pila (registra `%ss` y `%esp`). De hecho, una vez que el TR se carga con el selector de segmento de pila apropiado (instrucción `ltr`), el puntero de la pila se calcula y se inserta en la pila junto con el selector de segmento de la pila. A continuación, el valor `0x202` se empuja hacia la pila; es el valor que obtendrá EFLAGS cuando el control se pase al cliente. Además, se empujan el selector de segmento de código del modo de usuario y el punto de entrada del cliente. Recuerda que este punto de entrada está parcheado en el encabezado de BTX en el momento de enlazado. Finalmente, los selectores de segmento (almacenados en el registro `%ecx`) para los registros de segmento `%gs`, `%fs`, `%ds` y `%es` se colocan en la pila, junto con el valor en `%edx` (`0xa000`). Ten en cuenta los diversos valores que se han introducido en la pila (aparecerán en breve). A continuación, los valores de los registros de propósito general restantes también se insertan en la pila (ten en cuenta el`loop` que empuja el valor `0` siete veces). Ahora, los valores comenzarán a salir de la pila. Primero la instrucción `popa`saca de la pila con los últimos siete valores insertados. Se almacenan en los registros de propósito general en orden `%edi`, `%esi`, `%ebp`, `%ebx`, `%edx`, `%ecx`, `%eax`. Luego, los diversos selectores de segmento empujados se introducen en los distintos registros de segmento. Aún quedan cinco valores en la pila. Se sacan cuando el `iret` se ejecuta la instrucción. Esta instrucción primero muestra el valor que fue empujado desde elBTX encabezamiento. Este valor es un puntero al punto de entrada de [.filename]#boot2#. Se coloca en el registro `%eip`, el registro de puntero de instrucción. A continuación, el selector de segmento para el segmento de código de usuario se abre y se copia para registrar `%cs`. Recuerda que el nivel de privilegio de este segmento es 3, el nivel menos privilegiado. Esto significa que debemos proporcionar valores para la pila de este nivel de privilegio. Esta es la razón por la que el procesador, además de extraer el valor del registro EFLAGS, extrae dos valores más de la pila. Estos valores van al puntero de la pila(`%esp`) y el segmento de pila (`%ss`). Ahora, la ejecución continúa en el punto de entrada de `boot0`.",
            "id": 445782,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445782/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436900/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:06:33.905269Z",
            "action": 5,
            "target": "Es importante fijarse en cómo se define el Segumento de Código de usuario. La _dirección base_ de este segmento es `0xa000`. Esto significa que las direcciones de memoria de código son _relativas_ a la dirección 0xa000; si el código que se está ejecutando se ha leído de la dirección `0x20000`, la dirección de memoria _que realmente se accede_ es `0xa000+0x2000=0xc000`.",
            "id": 445783,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445783/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436900/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:07:12.713713Z",
            "action": 2,
            "target": "Es importante fijarse en cómo se define el Segmento de Código de usuario. La _dirección base_ de este segmento es `0xa000`. Esto significa que las direcciones de memoria de código son _relativas_ a la dirección 0xa000; si el código que se está ejecutando se ha leído de la dirección `0x20000`, la dirección de memoria _que realmente se accede_ es `0xa000+0x2000=0xc000`.",
            "id": 445784,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445784/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131045/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:07:22.701707Z",
            "action": 5,
            "target": "Etapa boot2",
            "id": 445785,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445785/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436901/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:38:42.688251Z",
            "action": 5,
            "target": "`boot2` define una estructura importante, `struct bootinfo`. Esta estructura es inicializada por `boot2` y pasada al cargador, y posteriormente al kernel. Algunos nodos de esta estructura están escritos por `boot2`, el resto por el cargador. Esta estructura, entre otra información, contiene el nombre del kernel, la geometría de disco de la BIOS, el número de unidad de la BIOS para el dispositivo de arranque, la memoria física disponible, el puntero `envp`etc. Su definición es:",
            "id": 445786,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445786/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131049/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:38:58.199067Z",
            "action": 5,
            "target": "/usr/include/machine/bootinfo.h:\nstruct bootinfo {\n\tu_int32_t\tbi_version;\n\tu_int32_t\tbi_kernelname;\t\t/* represents a char * */\n\tu_int32_t\tbi_nfs_diskless;\t/* struct nfs_diskless * */\n\t\t\t\t/* End of fields that are always present. */\n#define\tbi_endcommon\tbi_n_bios_used\n\tu_int32_t\tbi_n_bios_used;\n\tu_int32_t\tbi_bios_geom[N_BIOS_GEOM];\n\tu_int32_t\tbi_size;\n\tu_int8_t\tbi_memsizes_valid;\n\tu_int8_t\tbi_bios_dev;\t\t/* bootdev BIOS unit number */\n\tu_int8_t\tbi_pad[2];\n\tu_int32_t\tbi_basemem;\n\tu_int32_t\tbi_extmem;\n\tu_int32_t\tbi_symtab;\t\t/* struct symtab * */\n\tu_int32_t\tbi_esymtab;\t\t/* struct symtab * */\n\t\t\t\t/* Items below only from advanced bootloader */\n\tu_int32_t\tbi_kernend;\t\t/* end of kernel space */\n\tu_int32_t\tbi_envp;\t\t/* environment */\n\tu_int32_t\tbi_modulep;\t\t/* preloaded modules */\n};\n",
            "id": 445787,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445787/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436902/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:56:12.530313Z",
            "action": 5,
            "target": "`boot2` entra en un bucle infinito esperando la entrada del usuario, después llama a `load()`. Si el usuario no presiona nada, el bucle se finaliza por timeout, de forma que `load()` cargará el fichero por defecto ([.filename]#/boot/loader#). Las funciones `ino_t lookup(char *filename)` y `int xfsread(ino_t inode, void *buf, size_t nbyte)` se usan para leer el contenido desde un fichero a memoria. [.filename]#/boot/loader# es un binario ELF, pero donde la cabecera ELF tiene como prefijo la estructura `struct exec` de [.filename]#a.out#. `load()` escanea la cabecera ELF del cargador, cargando el contenido de [.filename]#/boot/loader# en memoria, pasando la ejecución a la entrada del cargador:",
            "id": 445791,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445791/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436903/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:56:31.586030Z",
            "action": 5,
            "target": "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",
            "id": 445792,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445792/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1131055/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:56:55.787322Z",
            "action": 5,
            "target": "Etapa loader",
            "id": 445793,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445793/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436904/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-27T16:58:26.430856Z",
            "action": 5,
            "target": "El cargador también es un cliente BTX. No lo describiré aquí en detalle, hay una página de manual muy completa escrita por Mike Smith, man:loader[8]. Los mecanismos subyacentes y BTX se han discutido arriba.",
            "id": 445794,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445794/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436905/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-28T06:43:44.086043Z",
            "action": 2,
            "target": "La tarea principal del cargador es arrancar el núcleo. Cuando el núcleo se carga en la memoria, el cargador lo llama:",
            "id": 445795,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445795/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436906/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-28T06:46:26.280426Z",
            "action": 5,
            "target": "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",
            "id": 445796,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445796/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436907/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-28T06:52:50.184301Z",
            "action": 2,
            "target": "Echemos un vistazo al comando que enlaza el kernel. Esto ayudará a identificar la ubicación exacta donde el cargador pasa la ejecución al kernel. Esta ubicación es el punto de entrada real del kernel. Este comando ya no está en [.filename]#sys/conf/Makefile.i386#. El contenido que nos interesa se puede encontrar en [.filename]#/usr/obj/usr/src/i386.i386/sys/GENERIC/#.",
            "id": 445797,
            "action_name": "修改了译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445797/?format=api"
        },
        {
            "unit": "https://translate-dev.freebsd.org/api/units/1436908/?format=api",
            "component": "https://translate-dev.freebsd.org/api/components/documentation/booksarch-handbookboot_index/?format=api",
            "translation": "https://translate-dev.freebsd.org/api/translations/documentation/booksarch-handbookboot_index/es/?format=api",
            "user": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "author": "https://translate-dev.freebsd.org/api/users/fernape/?format=api",
            "timestamp": "2023-03-28T06:54:50.677450Z",
            "action": 5,
            "target": "/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",
            "id": 445798,
            "action_name": "新译文",
            "url": "https://translate-dev.freebsd.org/api/changes/445798/?format=api"
        }
    ]
}