Проверять конвенцию о вызовых при всех вызовах
...а не только в самом внешнем. Для неволатильных регистров - всё так же выводить сообщение о том, что они не были сохранены, только в большем количестве случаев. Для волатильных: портить после вызова любой функции регистры, которые не могут быть использованы для возвращаемых значений, в надежде, что программа из-за этого упадёт.