title: What assembly language/architecture is this?
body: <p>I came across these two documents (they are written in Italian, although code comments are in English):</p>
  
  <ol>
  <li><a href="http://home.deib.polimi.it/brandole/acsocr/L13%20-%20Generic%20Assembly.pdf" rel="nofollow">http://home.deib.polimi.it/brandole/acsocr/L13%20-%20Generic%20Assembly.pdf</a></li>
  <li><a href="http://home.deib.polimi.it/brandole/acsocr/L14%20-%20Assembly%20Programming.pdf" rel="nofollow">http://home.deib.polimi.it/brandole/acsocr/L14%20-%20Assembly%20Programming.pdf</a></li>
  </ol>
  
  <p>They describe an assembly instruction set and syntax that I cannot recognize. For example, it says that the following C code...</p>
  
  <pre><code>int AddInt( int a, int b ) {
    int c;
    c = a + b
    return c;
  }
  </code></pre>
  
  <p>...is equivalent to this set of assembly instructions:</p>
  
  <pre><code>AddInt  ADD     SP, #-4
          PUSH    R0
          PUSH    R1
          PUSH    R2
          PUSH    R3
          LOAD    R0, 24(SP)
          LOAD    R1, 20(SP)
          ADD     R0, R1
          STORE   24(SP), R0
          POP     R3
          POP     R2
          POP     R1
          POP     R0
          ADD     SP, #4
          RET
  </code></pre>
  
  <p>I have experience with the ARM, x86 and x86-64 instruction set, and know both the Intel and AT&amp;T ASM syntaxes. However, what is described in the papers looks very new to me. Here are my thoughts on the instruction set:</p>
  
  <ul>
  <li>The presence of instructions like <code>SVC</code> and <code>B</code> reminds me of the ARM architecture.</li>
  <li>However there are instructions like <code>HALT</code>, <code>MOVE</code>, <code>STORE</code> and <code>LOAD</code>, which are not available in ARM, x86 and x86-64. Or, at least, they have other names on those architectures.</li>
  <li>The document states that the architecture has only a few dozen instructions. This makes me think that it must be a very old/embedded architecture.</li>
  <li>The document also states that the instructions perform "very simple operations" (although it does not give a definition of the word 'simple'). This also makes me think that it must be a very old/embedded architecture.</li>
  <li>The documents cite MIPS, but MIPS looks different for many reasons. For example: the documents' <code>BLE</code> takes one operand, while in MIPS it takes three; MIPS has no <code>SVC</code>, it has <code>syscall</code>.</li>
  <li>Looking on the web, I found out that it looks like an old Motorola architecture, although I was not able to find an exact correspondence with any of the Motorola architectures.</li>
  </ul>
  
  <p>And here are my thoughts about the syntax:</p>
  
  <ul>
  <li>Left operands are used as destinations and registers have no prefixes. This reminds me of the Intel syntax.</li>
  <li>Operands like <code>20(SP)</code> remind me of the AT&amp;T syntax (except for the register notation).</li>
  <li>Labels are not followed by colons.</li>
  <li>Meta-instructions like <code>EQU</code> are not prefixed by a dot. They are not even presented as meta-instruction, but as real instructions.</li>
  <li>Comments are started with <code>!</code>. This leads me to SPARC assembly, however SPARC is different in many ways (e.g. registers are prefixed with <code>%</code>).</li>
  </ul>
  
  <p>The documents does not give the architecture any name, it does not tell the size of the registers, it does not cite any compiler or interpreter. I'm a bit perplexed and I'm starting to think that the whole architecture and syntax were invented by the author (but then, why?).</p>
  
  <p>So, do you have any clue about what architecture it could be?</p>