ARV писал(а):проблема только в том, что если вдруг какая-то БИБЛИОТЕЧНАЯ функция тоже использует регистры R11 и R12, вы получите черти-что...
Тестовые прогоны показали, что в случае использования регистров R11, R12 библиотечной функцией, значения в переменных result_1,2 меняются в унисон изменению значения регистров, черти-чего не происходит, а так как значения переменных нужны только в момент выхода из подпрограммы, то дальнейшая их судьба, вернее содержание, не важно. Теоретически, если в момент выполнения библиотечной функции, мы поменяем значение регистров, то возможен сбой, но как это вообще возможно практически, да еще на Си, ума не приложу.
ARV писал(а): int это 2 байта, а R11 - это один байт... и что там компилятор будет делать с этим - еще надо разобраться
Компилятор так и оставляет int intом, при считывании значения регистра в переменную int втрой байт заполняется нулями, попытка присвоить переменной result_1 значение больше 255, к краху не привело, в переменной присвоенное значение, а в регистр R11 заносится какое-то другое число. Но в этом случае лучше использовать тип char или unsigned char, абсолютно согласен.
Сначала я предпологал, что эти регистровые переменные, это закамуфлированные указатели на регистры, но по всей видимости нет, они имеют свои адреса в памяти, и могут иметь различное с регистром значение. Я еще поэкспериментирую.
Так что в целом метод вполне рабочий.
ARV писал(а):напрасно не желаете меня слушать... но дело ваше.
С чего Вы взяли? Я Вас очень внимательно слушаю.