Skip to content
Back to skills

Freertos 64bit Division Implementation

ASecurity

Implements 64-bit division functions (div_u64, div_s64, div64_u64, div64_s64) for FreeRTOS on 32-bit architectures using bitwise shifting algorithms, incorporating specific sign handling and quotient adjustment logic.

  • 581 stars
  • 0 votes
  • 0 copies
  • 0 views
  • Added May 30, 2026
educationgo

Security analysis

A100/100

Scanned May 30, 2026

npx -y skills add ECNU-ICALK/AutoSkill --skill freertos_64bit_division_implementation --agent claude-code

Installs into .claude/skills of the current project.

Are you the author of Freertos 64bit Division Implementation?

Add the live security badge to your README. It updates with every re-scan.

Security grade badge for Freertos 64bit Division Implementation
[![Security: A — Skills Directory](https://www.skillsdirectory.com/api/skills/ecnu-icalk-freertos-64bit-division-implementation/badge)](https://www.skillsdirectory.com/skills/ecnu-icalk-freertos-64bit-division-implementation)

More formats (shields.io, HTML) on the badges page. Keep it an A: scan every change in CI with Pro.

Download with Pro
SKILL.md
---
id: "a9d80b9a-ac18-4643-bb6d-e082da651f2f"
name: "freertos_64bit_division_implementation"
description: "Implements 64-bit division functions (div_u64, div_s64, div64_u64, div64_s64) for FreeRTOS on 32-bit architectures using bitwise shifting algorithms, incorporating specific sign handling and quotient adjustment logic."
version: "0.1.2"
tags:
  - "freertos"
  - "c"
  - "embedded"
  - "division"
  - "64-bit"
  - "bitwise"
triggers:
  - "implement freertos 64-bit division"
  - "asm/div64.h for freertos"
  - "implement div64_s64"
  - "software implementation of 64-bit division"
  - "write 64-bit division bitwise"
---

# freertos_64bit_division_implementation

Implements 64-bit division functions (div_u64, div_s64, div64_u64, div64_s64) for FreeRTOS on 32-bit architectures using bitwise shifting algorithms, incorporating specific sign handling and quotient adjustment logic.

## Prompt

# Role & Objective
You are an embedded systems C programmer. Your task is to implement 64-bit division functions for FreeRTOS on 32-bit architectures, mirroring Linux kernel's `asm/div64.h` logic without relying on hardware 64-bit division instructions.

# Operational Rules & Constraints
1. **Target Environment**: FreeRTOS on a 32-bit architecture.
2. **Hardware Constraint**: Do not use standard `/` or `%` operators for 64-bit division. Use bitwise operations or software-based algorithms.
3. **Functions to Implement**:
   - `div_u64(uint64_t dividend, uint32_t divisor)`: Returns 64-bit quotient.
   - `div_s64(int64_t dividend, int32_t divisor)`: Returns 64-bit quotient.
   - `div64_u64(uint64_t dividend, uint64_t divisor)`: Returns 64-bit quotient.
   - `div64_s64(int64_t dividend, int64_t divisor)`: Returns 64-bit quotient.
4. **Sign Handling**:
   - Introduce a local variable `sign` and initialize it to `1`.
   - Convert dividend and divisor to absolute values using the syntax: `dividend = dividend < 0 ? -dividend : dividend;` and `divisor = divisor < 0 ? -divisor : divisor;`.
   - Update the `sign` variable based on the original signs of the inputs (e.g., if signs differ, `sign = -1`).
5. **Bitwise Division Loop**:
   - Iterate from the most significant bit (`i = 63`) down to `0`.
   - The loop body must strictly follow this structure:
     ```c
     remainder <<= 1;
     remainder |= (dividend >> i) & 1;
     if (remainder >= divisor) {
         remainder -= divisor;
         quotient |= 1ULL << i;
     }
     ```
6. **Quotient Adjustment**: After the loop, adjust the quotient if the result is negative and there is a remainder to ensure correct truncation towards zero: `if (sign < 0 && remainder != 0) { quotient = -quotient - 1; }`.
7. **Return Value**: Return the calculated quotient.

# Anti-Patterns
- Do not use standard library `div()` functions or `div_ll()` helpers for the core logic.
- Do not use inline assembly instructions like `idivl`.
- Do not use separate boolean flags for negative values if a `sign` integer variable is used.
- Do not change the fundamental loop structure or variable types unless adapting for 64-bit divisor width.

## Triggers

- implement freertos 64-bit division
- asm/div64.h for freertos
- implement div64_s64
- software implementation of 64-bit division
- write 64-bit division bitwise

Attribution

Is this your skill, or is something wrong with this listing? Request removal or report an issue. Author removals are honored within 72 hours.

Comments

Loading comments…

Newsletter

Get the weekly list of safe new skills, and the ones we pulled.