<commit_before># ASMUtils

This is a collection of assembler routines that provide commonly needed functionality
for programming in assembler.  These routines are designed for the AVR ATmega328 and ATmega2560 8-bit
microcontrollers.  I put this together because I didn't find a convenient location with a good set
of compile-ready routines.

These routines are written for the AVR-GCC assembler (`avr-as`) and follow its conventions (which are
different in small but significant ways from the Atmel assembler conventions).  In particular, the routines
in the ASMUtils collection are coded as `*.S` files and make liberal use of the GCC preprocessor.  More
information on the AVR-GCC assembler can be found in the
[AVR Libc User Manual] (http://www.nongnu.org/avr-libc/user-manual/pages.html).

A perhaps unique feature of this collection is that by setting the preprocessor symbol `C_COMPAT_ASM_CODE` to
a non-zero value at compile time, all the ASMUtils routines will follow the
[GCC register usage and calling conventions] (http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage),
which means they can be called from C or C++ code.  Suitable header files are included in the collection for this
purpose.  This feature, when activated, may introduce overhead into some of the routines,<commit_msg>Clarify purpose and scope of the library in the opening paragraph<commit_after># ASMUtils

This is a collection of assembler routines that provide commonly needed functionality
for programming AVR microcontrollers in assembler.  These routines are designed for the
AVR ATmega328 and ATmega2560 8-bit microcontrollers (commonly available on the Arduino Uno and
Arduino Mega).  I put this together because I didn't find a convenient location with a good set
of compile-ready routines.

These routines are written for the AVR-GCC assembler (`avr-as`) and follow its conventions (which are
different in small but significant ways from the Atmel assembler conventions).  In particular, the routines
in the ASMUtils collection are coded as `*.S` files and make liberal use of the GCC preprocessor.  More
information on the AVR-GCC assembler can be found in the
[AVR Libc User Manual] (http://www.nongnu.org/avr-libc/user-manual/pages.html).

A perhaps unique feature of this collection is that by setting the preprocessor symbol `C_COMPAT_ASM_CODE` to
a non-zero value at compile time, all the ASMUtils routines will follow the
[GCC register usage and calling conventions] (http://www.nongnu.org/avr-libc/user-manual/FAQ.html#faq_reg_usage),
which means they can be called from C or C++ code.  Suitable header files are included in the collection for this
purpose.  This feature, when activated, may introduce overhead into some of the routines,
{'fraction_non_alphanumeric': 0.05167394468704512, 'fraction_numerical': 0.005822416302765648, 'mean_word_length': 4.848936170212766, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 4, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '2511512', 'n_tokens_mistral': 789, 'n_tokens_neox': 710, 'n_words': 382}