Какие ценности флаг переноса может держать, и как проверить его статус в x86 собрание?

  1. What values can the carry flag hold? Is it just 0x00 and 0x01 (boolean) or is it 16 (or 32/64) bits like the rest of the CPU registers?

  2. How do I check its status? Do I just use it like a normal CPU register like cmp cf, 0x00 then jg ?

  3. I am writing a mini-OS. Is it good practice to use it for my own purposes, or should it be reserved for exclusive write-permissions for the CPU, and all I do is read from it?

9
nl ja de
Что произошло с руководствами центрального процессора и обучающими программами собрания? Они загадочно исчезли? Или поиск в сети Google в отпуске? Серьезно, вы могли найти ответ легко сами.
добавлено автор Alexey Frunze, источник
статья This Wiki приводит к этот официальный документ, Intel 64 и программное обеспечение Архитектуры IA-32 Developer' s Руководство, vol 1 , где в разделе 3.4.3 EFLAGS you' ре, учитывая достаточную информацию, чтобы ответить на ваш вопрос или достаточно подсказок для дальнейшего поиска и чтения в документе.
добавлено автор Alexey Frunze, источник
I' ve провел 30 минут, ища, и я ничего не могу найти вне it' s существование, и это было на Википедию относительно 13-го интервала.
добавлено автор codesmith, источник
I' ve провел 30 минут, ища, и я ничего не могу найти вне it' s существование, и это было на Википедию относительно 13-го интервала.
добавлено автор codesmith, источник
Хорошо, благодарит показать мне, как добраться там. Я предполагаю, что становлюсь немного расстроенным Google когда мой ответ isn' t один из непосредственных результатов.
добавлено автор codesmith, источник
Хорошо, благодарит показать мне, как добраться там. Я предполагаю, что становлюсь немного расстроенным Google когда мой ответ isn' t один из непосредственных результатов.
добавлено автор codesmith, источник

4 ответы

Это - флаг, это может только сохраняться или ложный (технически 1 или 0, но эффективно значения истинности как показано).

С точки зрения использования его, нет, вы не сравниваете его с чем-то и затем используете jg . Это - в то же самое уровень абстракции как другие флаги, таким образом, можно просто использовать:

jc somewhere         ; jump if carry flag is set
jnc somewhere_else   ; jump if carry flag is not set

Это собирается автоматически определенными инструкциями так, например, добавить, что две ценности и обнаружить несут, можно использовать что-то как:

add ax,bx
jc  too_big

И, в то время как это главным образом установлено теми инструкциями, можно также сделать это вручную с stc (набор), clc (ясный) и cmc (дополнение). Например, часто полезно очистить его заранее, если вы входите в петлю, где стоимость продвинута к следующему повторению.

8
добавлено
Также это - один бит большего Регистр ФЛАГОВ то, что можно получить доступ с толчок и popf инструкции.
добавлено автор andrewdotn, источник
Или, много быстрее на современных центральных процессорах, lahf / sahf (загружают / магазин АХ из/в флаги). Один Intel uop с 1 временем ожидания цикла, против pushf взятие 3 и popf взятие 9 uops, с одним за 18 пропускных способностей циклов. Столь же медленный на AMD.
добавлено автор Peter Cordes, источник

Это - флаг, это может только сохраняться или ложный (технически 1 или 0, но эффективно значения истинности как показано).

С точки зрения использования его, нет, вы не сравниваете его с чем-то и затем используете jg . Это - в то же самое уровень абстракции как другие флаги, таким образом, можно просто использовать:

jc somewhere         ; jump if carry flag is set
jnc somewhere_else   ; jump if carry flag is not set

Это собирается автоматически определенными инструкциями так, например, добавить, что две ценности и обнаружить несут, можно использовать что-то как:

add ax,bx
jc  too_big

И, в то время как это главным образом установлено теми инструкциями, можно также сделать это вручную с stc (набор), clc (ясный) и cmc (дополнение). Например, часто полезно очистить его заранее, если вы входите в петлю, где стоимость продвинута к следующему повторению.

8
добавлено
Также это - один бит большего Регистр ФЛАГОВ то, что можно получить доступ с толчок и popf инструкции.
добавлено автор andrewdotn, источник
Или, много быстрее на современных центральных процессорах, lahf / sahf (загружают / магазин АХ из/в флаги). Один Intel uop с 1 временем ожидания цикла, против pushf взятие 3 и popf взятие 9 uops, с одним за 18 пропускных способностей циклов. Столь же медленный на AMD.
добавлено автор Peter Cordes, источник

была эта небольшая книга, которая однажды шла с турбо ассемблером borland, который перечислил все x86 инструкции, вместе с их количеством циклов CPU и флагов, затронутых для каждой модели процессора индивидуально..., я предлагаю, чтобы вы пошли, находят одну из тех книг и читают его... 2: нет, вы не можете использовать cmp и т.д. непосредственно в РЕГИСТРЕ флагов, поскольку это не память, но регистр в CPU, можно, однако, использовать несколько обозначенных результатов или переместить все это сначала на стек и затем в поршень или наоборот с инструкциями ниже

CLC (ясный (0) несут бит), STC (флаг переноса набора к 1) JC (ветвятся, если несут набор), JNC (ветвятся, если несут не набор), PUSHF (суют флаги на стек), POPF (перемещают последний вход в стек в регистр флагов),

если я вспоминаю правильно... там, вероятно, еще некоторые способы сделать вещи.

0
добавлено

была эта небольшая книга, которая однажды шла с турбо ассемблером borland, который перечислил все x86 инструкции, вместе с их количеством циклов CPU и флагов, затронутых для каждой модели процессора индивидуально..., я предлагаю, чтобы вы пошли, находят одну из тех книг и читают его... 2: нет, вы не можете использовать cmp и т.д. непосредственно в РЕГИСТРЕ флагов, поскольку это не память, но регистр в CPU, можно, однако, использовать несколько обозначенных результатов или переместить все это сначала на стек и затем в поршень или наоборот с инструкциями ниже

CLC (ясный (0) несут бит), STC (флаг переноса набора к 1) JC (ветвятся, если несут набор), JNC (ветвятся, если несут не набор), PUSHF (суют флаги на стек), POPF (перемещают последний вход в стек в регистр флагов),

если я вспоминаю правильно... там, вероятно, еще некоторые способы сделать вещи.

0
добавлено