Если серверная сторона наверху - все, о чем Вы заботитесь, то отправка простого ДОБИРАЕТСЯ со строкой запроса до ASHX, вероятно, было бы это. Это определенно предпочтительно для.ASPX, который собирается пройти жизненный цикл страницы, в котором Вы не требуетесь.
преимущество веб-метода ASMX состоит в том, что он основывался на стандарте, который могут назвать другие технологии легко (открытие поддержек). С некоторой документацией Ваш.ASHX будет столь же легко назвать, все же.
Команда SUBI может использоваться для добавления / вычитания любой 8-битной константы к / из 8-битного значения. Его стоимость такая же, как и у INC, т. Е. Размер инструкции и время выполнения. Таким образом, компилятор предпочитает SUBI, потому что он более общий. Соответствующей инструкции ADDI нет, вероятно, потому, что она была бы избыточной.
tl; dr компилятор был разработан для использования здесь более переносимого, эффективного и общего решения.
SUBI
наборы инструкций C
(перенос) и H
(половинный перенос) флаги ЦП для использования с последующими инструкциями (нет ADDI
в 8-битном AVR BTW, поэтому для немедленного добавления значения x
мы вычитаем из него -x
), а INC
- нет. Поскольку оба SUBI
и INC
имеют длину 2 байта и выполняются в течение 1 такта, вы ничего не теряете, используя SUBI
- OTOH, если вы используете 8- счетчик битового размера, вы можете легко определить, не произошло ли его пролонгации (по BRCC
/ BRCS
), и если бы у вас был счетчик размером 16 или 32 бит , он позволяет увеличивать его очень простым способом - всего лишь с помощью INC
, 0x00FF
будет увеличен до 0x0000
, поэтому вам нужно будет проверить, младший байт - 0xFF
перед INC
ing. OTOH, с SUBI
вы просто SUBI -1
младший байт, а затем ADC 0
для следующих байтов, гарантируя, что все потенциальные биты переноса были учтены .
Дополнительная литература:
https://lists.gnu.org/archive/html/avr-gcc-list/2008-11/msg00029.html
http: // avr-gcc-list. nongnu.narkive.com/SMMzdBkW/foo-subi-vs-inc[1244 impression