We want to implement a processor that is functionally identical to ARM, but the op-codes it accepts are completely different. Hence, it cannot run an ARM binary directly. However, we can apply a simple translator, that translates from ARM op-codes into our op-codes. After translation, our processor will run the translated binary flawlessly. Does this violate ARM patent and/or copyright protections?

1 Answer 1


The ISA is in fact the bit that's not protected. The opcodes themselves are mere numbers, without a lot of meaning. A function like "add R2 to R3" needs to have a unique number, to distinguish it from "multiply R2 by R3", but this is essentially an arbitrary number.

Now ARM's idea to throw in a "free" shift instruction as part of the opcode is non-trivial, and not an arbitrary number. And by your description of the translator, you did copy that part.

So, in essence you copied the bits that are protected, and changed the bits that aren't. Exactly the wrong way around.

  • I see.. so, if I understand, you're saying that there are protected functions in some of the instructions. So, if we cherry pick, and remove the few instructions that have protected functionality, then we're fine, yes?
    – seanhalle
    May 4, 2017 at 21:36
  • To put it another way, the ISA is copyrighted, but not patented. Copyright does not cover functionality, but only the bit patterns of the opcodes. We would only violate the instructions that invoke patented functionality. So, if we don't include those few instructions, we're fine. We would, instead, translate the patented instructions into several of our instructions that accomplish the equivalent function. That, seems like it can't be protected, or else no could run any code without violating :-)
    – seanhalle
    May 4, 2017 at 21:40
  • @seanhalle: Last time I looked, the vast majority of operations supported such a "flexible second operand". I'm not claiming that's still patent protected (you'd need to check that with a proper lawyer) but it would make copying the remainder pointless. And no, your idea about "into several instructions" breaks computed branches.
    – MSalters
    May 7, 2017 at 22:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.