Jestem zdezorientowany różnicą między add a addu.Różnica między dodawaniem a dodawaniem
Odniesienie instrukcja MIPS mówi:
- add (z przelewem)
- dodać unsigned (bez przelewu)
Moje rozumienie jest użycie dodać z podpisanych argumentów i Addu z niepodpisanych argumentów .
Ale rozważmy ten przykład (tylko 6-bitowe):
overflow | V 1 | 1 1 1 <- carry | 1 1 1 1 0 1 + | 1 1 1 1 1 0 = ----------------- | 1 1 1 0 1 1
I to jest moje rozumowanie:
- jeśli uważam pierwszy i drugi argument podpisaną numery (dwa uzupełniają) , wtedy wynik jest poprawny (-3 + -2 = -5) i nie chcę wyjątku przepełnienia. Więc użyłbym addu, aby uniknąć tego wyjątku, ale chociaż wynik jest taki sam, nazwa sugeruje użycie addu dla numerów bez znaku!
- jeśli uważam pierwszy i drugi argument niepodpisany, to chcę, aby wyjątek został podniesiony (ponieważ 61 + 62 nie jest równe 59). Więc użyłbym dodaj, aby podnieść wyjątek, a nie addu, jak sugerowałaby nazwa.
Teraz moje pytania to:
- zakładając, że argumenty są podpisane (ujemne w powyższym przykładzie) Numery, należy użyć Addu (jak sugeruje moje rozumowanie) lub powinno się używać dodać (jak nazwa wskazuje)?
- zakładając, że operandy są liczbami niepodpisanymi (dodatnimi), czy powinienem użyć add (jak sugeruje moje rozumowanie) lub addu (jak sugeruje nazwa)?
bardzo źle nazwane instrukcje. nie ma czegoś takiego jak niepodpisany add lub dodany podpis. ma to związek z zalewkowaniem lub nie powinno być dodatkiem lub czymś takim ... (nadal może być, ponieważ asembler nie jest czymś wyryte w kamieniu, jak kod maszynowy) –