{"id":25194962,"url":"https://github.com/aj528/mmemmove","last_synced_at":"2025-04-04T14:40:20.374Z","repository":{"id":272222647,"uuid":"915875685","full_name":"AJ528/mmemmove","owner":"AJ528","description":"memmove() written in ARM Cortex-M Assembly","archived":false,"fork":false,"pushed_at":"2025-02-17T01:00:05.000Z","size":623,"stargazers_count":0,"open_issues_count":0,"forks_count":0,"subscribers_count":1,"default_branch":"main","last_synced_at":"2025-02-17T01:27:09.051Z","etag":null,"topics":["arm","assembly","c","cortex-m","embedded","memmove"],"latest_commit_sha":null,"homepage":"","language":"C","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"gpl-3.0","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/AJ528.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":null,"funding":null,"license":"LICENSE","code_of_conduct":null,"threat_model":null,"audit":null,"citation":null,"codeowners":null,"security":null,"support":null,"governance":null,"roadmap":null,"authors":null,"dei":null,"publiccode":null,"codemeta":null}},"created_at":"2025-01-13T02:27:36.000Z","updated_at":"2025-02-17T01:00:08.000Z","dependencies_parsed_at":null,"dependency_job_id":"3d7db281-3ce8-4daa-b4f3-a1e856ef643d","html_url":"https://github.com/AJ528/mmemmove","commit_stats":null,"previous_names":["aj528/memmove_source"],"tags_count":0,"template":false,"template_full_name":null,"repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AJ528%2Fmmemmove","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AJ528%2Fmmemmove/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AJ528%2Fmmemmove/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/AJ528%2Fmmemmove/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/AJ528","download_url":"https://codeload.github.com/AJ528/mmemmove/tar.gz/refs/heads/main","host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":247198403,"owners_count":20900078,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2022-07-04T15:15:14.044Z","host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["arm","assembly","c","cortex-m","embedded","memmove"],"created_at":"2025-02-10T00:29:34.921Z","updated_at":"2025-04-04T14:40:20.367Z","avatar_url":"https://github.com/AJ528.png","language":"C","funding_links":[],"categories":[],"sub_categories":[],"readme":"# mmemmove\n`memmove()` written in ARM Cortex-M Assembly. Designed for Cortex M4 and M0+ cores. Probably works on other ARMv6-M and ARMv7-M architectures.\n\n### Status \nDoes everything I need it to. Will fix bugs as I come across them.\n\n### How to use this in an embedded project\n1. Copy `mmemmove.s` from the common/src folder into your project\n2. Add a function declaration for `memmove_()` somewhere in your project. The function declaration should look something like `extern void* memmove_(void *destination, const void *source, size_t num);`.\n3. Use `memmove_()` just like you would the normal `memmove()` function.\n4. Done!\n\n### How to measure the size of this project\n1. copy these files into an embedded project.\n2. compile the project.\n3. measure the size of the `mmemmove.o` object file using `size -A`.\n4. the total size is found from summing all relevant sections together.\n\n\n### Details\n\nCompiles down to under 230 bytes on `arm-none-eabi-gcc`. memmove is about 130 lines of code (per David A. Wheeler's `SLOCCount`).\n\nIn my testing, `memmove_()` is always faster than my standard `memmove()`. Sometimes it's only a few cycles faster, other times it is 7x faster.\n\nThis repo is designed to run on an STM32WLxx microcontroller. It uses the cycle counter of the Cortex-M4 microcontroller to profile the functions during testing.\nNote: the environment this repo was developed in is only important to know if you want to test the `memmove_()` function like I did. If you just want to use it, follow the instructions in [How to use this in an embedded project](#how-to-use-this-in-an-embedded-project).\n\nI also included testing using Greatest from https://github.com/silentbicycle/greatest. There's a number of tests that compare `memmove_()` against the standard `memmove()`.\n","project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faj528%2Fmmemmove","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Faj528%2Fmmemmove","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Faj528%2Fmmemmove/lists"}