Units API.

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

GET /api/units/102339/?format=api
HTTP 200 OK
Allow: GET, PUT, PATCH, DELETE, HEAD, OPTIONS
Content-Type: application/json
Vary: Accept

{
    "translation": "https://translate-dev.freebsd.org/api/translations/freebsd-doc/boooks_arch-handbook/en/?format=api",
    "source": [
        "Note that the client's environment include a stack segment selector and stack pointer (registers <literal>%ss</literal> and <literal>%esp</literal>). Indeed, once the <acronym>TR</acronym> is loaded with the appropriate stack segment selector (instruction <literal>ltr</literal>), the stack pointer is calculated and pushed onto the stack along with the stack's segment selector. Next, the value <literal>0x202</literal> 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 <acronym>BTX</acronym> header at link time. Finally, segment selectors (stored in register <literal>%ecx</literal>) for the segment registers <literal>%gs, %fs, %ds and %es</literal> are pushed onto the stack, along with the value at <literal>%edx</literal> (<literal>0xa000</literal>). 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 <literal>loop</literal> that pushes the value <literal>0</literal> seven times). Now, values will be started to be popped out of the stack. First, the <literal>popa</literal> instruction pops out of the stack the latest seven values pushed. They are stored in the general purpose registers in order <literal>%edi, %esi, %ebp, %ebx, %edx, %ecx, %eax</literal>. 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 <literal>iret</literal> instruction is executed. This instruction first pops the value that was pushed from the <acronym>BTX</acronym> header. This value is a pointer to <filename>boot2</filename>'s entry point. It is placed in the register <literal>%eip</literal>, the instruction pointer register. Next, the segment selector for the User Code Segment is popped and copied to register <literal>%cs</literal>. 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 (<literal>%esp</literal>) and the stack segment (<literal>%ss</literal>). Now, execution continues at <literal>boot0</literal>'s entry point."
    ],
    "previous_source": "",
    "target": [
        "Note that the client's environment include a stack segment selector and stack pointer (registers <literal>%ss</literal> and <literal>%esp</literal>). Indeed, once the <acronym>TR</acronym> is loaded with the appropriate stack segment selector (instruction <literal>ltr</literal>), the stack pointer is calculated and pushed onto the stack along with the stack's segment selector. Next, the value <literal>0x202</literal> 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 <acronym>BTX</acronym> header at link time. Finally, segment selectors (stored in register <literal>%ecx</literal>) for the segment registers <literal>%gs, %fs, %ds and %es</literal> are pushed onto the stack, along with the value at <literal>%edx</literal> (<literal>0xa000</literal>). 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 <literal>loop</literal> that pushes the value <literal>0</literal> seven times). Now, values will be started to be popped out of the stack. First, the <literal>popa</literal> instruction pops out of the stack the latest seven values pushed. They are stored in the general purpose registers in order <literal>%edi, %esi, %ebp, %ebx, %edx, %ecx, %eax</literal>. 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 <literal>iret</literal> instruction is executed. This instruction first pops the value that was pushed from the <acronym>BTX</acronym> header. This value is a pointer to <filename>boot2</filename>'s entry point. It is placed in the register <literal>%eip</literal>, the instruction pointer register. Next, the segment selector for the User Code Segment is popped and copied to register <literal>%cs</literal>. 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 (<literal>%esp</literal>) and the stack segment (<literal>%ss</literal>). Now, execution continues at <literal>boot0</literal>'s entry point."
    ],
    "id_hash": 8627215923189205664,
    "content_hash": 8627215923189205664,
    "location": "book.translate.xml:1945",
    "context": "",
    "note": "(itstool) path: sect1/para",
    "flags": "",
    "labels": [],
    "state": 100,
    "fuzzy": false,
    "translated": true,
    "approved": false,
    "position": 196,
    "has_suggestion": false,
    "has_comment": false,
    "has_failing_check": true,
    "num_words": 360,
    "source_unit": "https://translate-dev.freebsd.org/api/units/102339/?format=api",
    "priority": 100,
    "id": 102339,
    "web_url": "https://translate-dev.freebsd.org/translate/freebsd-doc/boooks_arch-handbook/en/?checksum=f7ba072c56494aa0",
    "url": "https://translate-dev.freebsd.org/api/units/102339/?format=api",
    "explanation": "",
    "extra_flags": "",
    "pending": false,
    "timestamp": "2019-10-20T12:21:44.031790Z"
}