Я новичок в x64-64, просто вопрос, как настраивается CF? Я читал учебник, в котором говорится:
CF: Флаг переноса используется, когда самая последняя операция генерирует перенос самого старшего бита. Используется для обнаружения переполнения для беззнаковых операций.
У меня есть два вопроса:
Q1 - предположим, мы использовали одну из инструкций добавления для выполнения эквивалента C присвоение t = a + b, где переменные a, b и t являются целыми числами (только 3 бита для простоты), поэтому для 011
(a) + 101
(b) = 1000
= 000
, поскольку у нас есть бит выполнения 1
в четвертом di git, поэтому флаг CF будет установлен на 1, правильно ли я понимаю?
Q2 - если мое понимание в Q1 верно, и предположим, что мы использовали одну из подинструкций для выполнения эквивалента присваивания C t = ab, где a, b и t - беззнаковые целые числа, поскольку a, b беззнаковые, мы фактически не можем сделать a+(-b)
, и я не понимаю, как мы можем сделать 011
(a) - 101
(b) переносом самого старшего бита?