shithub: mc

ref: 017a4c99e5701996225fb75f9edb27a434b81bf4
dir: /8/insns.def/

View raw version
/* Table of instructions. Each instruction
   is defined by the following macro:
        Insn(enumval, fmt, attr)
    The format string 'fmt' has the following expansions:
        %r            - A register
        %m            - A memory location.
        %l            - A location (either register or memory)
        %x            - Any value.
        %[0-9]*t      - Mode of an operand. The optional number
                        preceeding it is the operand desired for
                        the mode.
        %v            - a value (ie, immediate integer or label)

   */

/* Note, the mov instruction is specified in an overly general manner. */
Insn(Imov,      "\tmov%t %x,%x\n",          0)
Insn(Imovz,     "\tmovz%0t%1t %x,%x\n",     0)
Insn(Imovs,     "\tmovs%0t%1t %x,%x\n",     0)

Insn(Iadd,      "\tadd%t %r,%x\n",          0)
Insn(Isub,      "\tsub%t %r,%x\n",          0)
Insn(Ipush,     "\tpush%t %r\n",            0)
Insn(Ipop,      "\tpop%t %r\n",             0)

/* branch instructions */
Insn(Ijmp,      "\tjmp %v\n",               0)
Insn(Iret,      "\tret\n",                  0)

/* not really an insn... */
Insn(Ilbl,      "%v:\n",                  0)