⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 tinyset.inc

📁 这个是专门用在ALtera第二代PLD MAXII上的16位微处理器IP核
💻 INC
字号:
passes = 5;

#define pfx     n { #if(n!=0) { out mem, n&0xff; }}

#define addi    n { pfx ((n&0xffff)/0x100); out mem, 0x0800+(n&0xff); }
#define adci    n { pfx ((n&0xffff)/0x100); out mem, 0x0900+(n&0xff); }
#define subi    n { pfx ((n&0xffff)/0x100); out mem, 0x0a00+(n&0xff); }
#define sbci    n { pfx ((n&0xffff)/0x100); out mem, 0x0b00+(n&0xff); }
#define andi    n { pfx ((n&0xffff)/0x100); out mem, 0x0c00+(n&0xff); }
#define ori     n { pfx ((n&0xffff)/0x100); out mem, 0x0d00+(n&0xff); }
#define xori    n { pfx ((n&0xffff)/0x100); out mem, 0x0e00+(n&0xff); }
#define cmpi    n { pfx ((n&0xffff)/0x100); out mem, 0x0f00+(n&0xff); }

#define adda    n { pfx ((n&0xffff)/0x100); out mem, 0x1000+(n&0xff); }
#define adca    n { pfx ((n&0xffff)/0x100); out mem, 0x1100+(n&0xff); }
#define suba    n { pfx ((n&0xffff)/0x100); out mem, 0x1200+(n&0xff); }
#define sbca    n { pfx ((n&0xffff)/0x100); out mem, 0x1300+(n&0xff); }
#define anda    n { pfx ((n&0xffff)/0x100); out mem, 0x1400+(n&0xff); }
#define ora     n { pfx ((n&0xffff)/0x100); out mem, 0x1500+(n&0xff); }
#define xora    n { pfx ((n&0xffff)/0x100); out mem, 0x1600+(n&0xff); }
#define cmpa    n { pfx ((n&0xffff)/0x100); out mem, 0x1700+(n&0xff); }

#define addx    { out mem, 0x1800; }
#define adcx    { out mem, 0x1900; }
#define subx    { out mem, 0x1a00; }
#define sbcx    { out mem, 0x1b00; }
#define andx    { out mem, 0x1c00; }
#define orx     { out mem, 0x1d00; }
#define xorx    { out mem, 0x1e00; }
#define cmpx    { out mem, 0x1f00; }

#define psha    { out mem, 0x2000; }
#define pshp    { out mem, 0x2001; }
#define pula    { out mem, 0x2002; }
#define pulp    { out mem, 0x2003; }
#define clc     { out mem, 0x2004; }
#define sec     { out mem, 0x2005; }
#define ldsx    { out mem, 0x2006; }
#define ldxs    { out mem, 0x2007; }
#define inx     { out mem, 0x2008; }
#define dex     { out mem, 0x2009; }
#define swap    { out mem, 0x200a; }
#define ror     { out mem, 0x200c; }
#define rol     { out mem, 0x200d; }

#define stix    { out mem, 0x2200; }
#define ldai    n   { pfx (n&0xffff)/0x200; out mem, 0x2400+(n&0x1ff); }
#define ldxi    n   { pfx (n&0xffff)/0x200; out mem, 0x2600+(n&0x1ff); }
#define lda     n   { pfx (n&0xffff)/0x200; out mem, 0x2800+(n&0x1ff); }
#define ldx     n   { pfx (n&0xffff)/0x200; out mem, 0x2a00+(n&0x1ff); }
#define sta     n   { pfx (n&0xffff)/0x200; out mem, 0x2c00+(n&0x1ff); }
#define stx     n   { pfx (n&0xffff)/0x200; out mem, 0x2e00+(n&0x1ff); }
#define ldix    { out mem, 0x3000; }

// relative branching definitions
#define jpr     n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x7000+(((n-mem)-1)&0xfff); }
#define jprc    n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x4000+(((n-mem)-1)&0xfff); }
#define jprz    n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x5000+(((n-mem)-1)&0xfff); }
#define jprnz   n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x6000+(((n-mem)-1)&0xfff); }
#define jrs     n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0xb000+(((n-mem)-1)&0xfff); }
#define jrsc    n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x8000+(((n-mem)-1)&0xfff); }
#define jrsz    n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0x9000+(((n-mem)-1)&0xfff); }
#define jrsnz   n   {
    pfx ((((n-mem)-1)&0xffff)/4096);
    out mem, 0xa000+(((n-mem)-1)&0xfff); }

#define ret         { out mem, 0xf000; }
#define retc        { out mem, 0xc000; }
#define retz        { out mem, 0xd000; }
#define retnz       { out mem, 0xe000; }

#define data    n   { out mem, n&0xffff; }
#define lbl     n   { n = mem; }

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -