Example #1
0
        /// <summary>
        /// レジスタへの値の書きこみ
        /// </summary>
        /// <param name="reg">レジスタ番号</param>
        /// <param name="value">書きこむ値</param>
        private void RegWrite(MOpeland.EfRegName reg, uint value)
        {
            switch (reg)
            {
            case MOpeland.EfRegName.efRegF0: firjal.F0 = value; break;

            case MOpeland.EfRegName.efRegF1: firjal.F1 = value; break;

            case MOpeland.EfRegName.efRegF2: firjal.F2 = value; break;

            case MOpeland.EfRegName.efRegF3: firjal.F3 = value; break;

            case MOpeland.EfRegName.efRegF4: firjal.F4 = value; break;

            case MOpeland.EfRegName.efRegF5: firjal.F5 = value; break;

            case MOpeland.EfRegName.efRegF6: firjal.F6 = value; break;

            case MOpeland.EfRegName.efRegXX: firjal.XX = value; break;

            default:
                // 例外スローしたい
                break;
            }
        }
Example #2
0
        /// <summary>
        /// レジスタの内容読み出し
        /// </summary>
        /// <param name="reg">レジスタ番号</param>
        /// <returns></returns>
        private uint RegRead(MOpeland.EfRegName reg)
        {
            uint retval = 0;

            // レジスタ管理のclassではなく、オペランド側の名前として、ここで解決
            switch (reg)
            {
            case MOpeland.EfRegName.efRegF0: retval = firjal.F0; break;

            case MOpeland.EfRegName.efRegF1: retval = firjal.F1; break;

            case MOpeland.EfRegName.efRegF2: retval = firjal.F2; break;

            case MOpeland.EfRegName.efRegF3: retval = firjal.F3; break;

            case MOpeland.EfRegName.efRegF4: retval = firjal.F4; break;

            case MOpeland.EfRegName.efRegF5: retval = firjal.F5; break;

            case MOpeland.EfRegName.efRegF6: retval = firjal.F6; break;

            case MOpeland.EfRegName.efRegXX: retval = firjal.XX; break;

            default:
                // 例外スローしたい
                break;
            }

            return(retval);
        }