Я пытаюсь обернуть голову вокруг переполнения и переноса флагов в x86.
Как я понимаю, для добавления подписанных двух номеров дополнений флаги могут генерироваться только одним из четырех способов (моими примерами являются 4 -B его номера):
- pos + pos = neg (переполнение)
- 0111 + 0001 = 1000 (7 + 1 = -8)
- pos + neg = pos (переносить)
- 0011 + 1110 = 0001 (3 + -2 = 1)
- neg + neg = neg (перенос)
- 1111 + 1111 = 1110 (-1 + -1 = -2)
- neg + neg = pos (переполнение и перенос)
- 1000 + 1001 = 0001 (-8 + -7 = 1)
Итак, в сборке x86, отбрасывая B из A, генерируют те же флаги, что и добавление A и -B?