Skip to content
  • Categories
  • Recent
  • Tags
  • Popular
  • World
  • Users
  • Groups
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (Cyborg)
  • No Skin
Collapse
Brand Logo

CIRCLE WITH A DOT

  1. Home
  2. Uncategorized
  3. Armv6-M CPUs (e.g. Arm Cortex M0+) have 32-bit multiplications but only return the low 32 bits of the result; a software routine must be used to compute the high 32 bits.

Armv6-M CPUs (e.g. Arm Cortex M0+) have 32-bit multiplications but only return the low 32 bits of the result; a software routine must be used to compute the high 32 bits.

Scheduled Pinned Locked Moved Uncategorized
2 Posts 2 Posters 0 Views
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • pornin@infosec.exchangeP This user is from outside of this forum
    pornin@infosec.exchangeP This user is from outside of this forum
    pornin@infosec.exchange
    wrote last edited by
    #1

    Armv6-M CPUs (e.g. Arm Cortex M0+) have 32-bit multiplications but only return the low 32 bits of the result; a software routine must be used to compute the high 32 bits. The one that comes with the C compiler is usually bad (e.g. the one from GCC has cost 61 cycles and is not constant-time). I made a better one (constant-time, 24 cycles for a full 64x64->64 multiplication, 20 cycles for the 32x32->64 variants).
    https://github.com/pornin/armv6m-longmul

    paulehoffman@infosec.exchangeP 1 Reply Last reply
    0
    • pornin@infosec.exchangeP pornin@infosec.exchange

      Armv6-M CPUs (e.g. Arm Cortex M0+) have 32-bit multiplications but only return the low 32 bits of the result; a software routine must be used to compute the high 32 bits. The one that comes with the C compiler is usually bad (e.g. the one from GCC has cost 61 cycles and is not constant-time). I made a better one (constant-time, 24 cycles for a full 64x64->64 multiplication, 20 cycles for the 32x32->64 variants).
      https://github.com/pornin/armv6m-longmul

      paulehoffman@infosec.exchangeP This user is from outside of this forum
      paulehoffman@infosec.exchangeP This user is from outside of this forum
      paulehoffman@infosec.exchange
      wrote last edited by
      #2

      @pornin This looks incredibly cool, even to someone who will never use it directly.

      1 Reply Last reply
      1
      0
      • R relay@relay.infosec.exchange shared this topic
      Reply
      • Reply as topic
      Log in to reply
      • Oldest to Newest
      • Newest to Oldest
      • Most Votes


      • Login

      • Login or register to search.
      • First post
        Last post
      0
      • Categories
      • Recent
      • Tags
      • Popular
      • World
      • Users
      • Groups