Na maszynie 32-bitowej instrukcja „add-with-carry” stosowana jako część sekwencji precyzji addycji z wieloma precyzjami musi zaakceptować argumenty o wartości 65 bitów i obliczyć sumę 33 bitów. Specyfikacje rejestru źródłowego określą, skąd powinny pochodzić 64 bity operandu, a specyfikacja rejestru docelowego powie, gdzie powinny pójść dolne 32 bity wyniku, ale co zrobić z operandem „dodaj jeden dodatkowy” lub górnym bitem wyniku? Umożliwienie określenia w ramach instrukcji, skąd powinien pochodzić dodatkowy argument i gdzie powinien przejść dodatkowy bit wyniku, byłoby umiarkowanie użyteczne, ale ogólnie nie byłoby tak przydatne, aby uzasadnić dodatkowe pole w kodzie operacji. Posiadanie stałej „lokalizacji” do obsługi flagi przenoszenia może być nieco niewygodne z perspektywy planowania instrukcji, ale „
Gdyby ktoś próbował zaprojektować zestaw instrukcji, aby umożliwić arytmetykę z wieloma precyzjami, ale każda instrukcja była ograniczona do dwóch 32-bitowych operandów i jednego 32-bitowego operandu docelowego, można zaimplementować 64-bitowe „dodawanie” w czterech instrukcjach: „set r5 do 1, jeśli r0 + r2 niesie lub zero w przeciwnym razie; oblicz r4 = r1 + r3; oblicz r5 = r4 + r5; oblicz r4 = r0 + r2 ", ale przekroczenie tego wymagałoby trzech instrukcji dla każdego dodatkowego słowa. Posiadanie flagi przeniesienia dostępnej jako dodatkowe źródło i miejsce docelowe zmniejsza koszt do jednej instrukcji na słowo.
Zwróć uwagę, że posiadanie bitu instrukcji kontrolującego, czy instrukcja aktualizuje rejestr flagi, może ułatwiać wykonywanie poza kolejnością, ponieważ instrukcje, które używają lub modyfikują bity flagi, muszą utrzymywać swoją sekwencję względem siebie, ale instrukcje, które nie mogą swobodnie się przestawiać. Biorąc pod uwagę sekwencję:
ldr r0,[r1]
add r0,r0,r2
eors r4,r5,r6
jednostka wykonawcza mogłaby dość łatwo rozpoznać, że trzecia instrukcja mogła zostać wykonana bez konieczności oczekiwania na odczyt danych [r1]
, ale gdyby druga instrukcja była adds r0,r0,r2
możliwa, byłoby to możliwe tylko wtedy, gdyby jednostka wykonawcza mogła zapewnić, że do tego czasu cokolwiek spróbuje użyć flagi, flaga zerowa utrzyma wartość ustaloną w trzeciej instrukcji, ale flaga przenoszenia zatrzyma wartość w drugiej instrukcji.