mam problem, chcialbym sprawdzic czy czasem nastapilo przepelnienie typu, a konkretnie np. int . Slyszalem ze mozna to jakos asemblerowo wstawic, ale jesli mozna to prosilbym pod C.
po przepelnieniu int'a zaczyna on liczyc od poczatku, a wiec zapewne pojawi ci sie liczba ujemna, chyba ze przepelniisz go o ponad 33000 :]
Moze to ci pomoze.
nie za bardzo, typ moze sie przekrecic i moze byc dodatni... to sie sprawdza jakos na bitach lub na poziomie asemblera, ale nie wiem jak :|
to troszke nie tak
Chodzi o sprawdzenie flagi c (carry) lub o (overflow - mój faworyt) - nie wiem ktorej dokładnie poprobuj. Z poziomu assemblera najprosciej chyba wykonać skoki warunkowe : jc/jnc (gdzy wystąpiło przeniesienie/ n - nie wystąpiło) i jo/jno (wystąpiło przepełnienie/nie wystąpiło).
mox ax,65535
inc ax ; inc nie zmienia flagi carry, stad ogólnym faworytem: overflow
jo @overflow ; jc @carry
@carry:
; kod po przeniesieniu
@overflow:
; kod po przepelnieniu
Nie podałeś kompilatora, systemu, procesora...
W GCC jest niby flaga -ftrapv (traps overflow), ale pod MinGW chyba nie działa(?). Na Linuxie powinno działać...
Rozwiązanie w asm dla GCC:
http://article.gmane.org/gmane.comp.gcc.help/10677
Trochę informacji:
http://www.fortran-2000.com/ArnaudRecipes/CompilerTricks.html#Comp_inte