📄 genmcs51.c
字号:
/*
* generates decode code for mcs51
*/
#include <mcs51.h>
#define NELEMS(a) (sizeof (a)/sizeof (a[0]))
main ()
{
int i,j;
printf ("/*\n"
"* Instruction fetch:\n"
"*\n"
"* @ STATE2 and STATE5, gen ALE and drive p0/p2 by PCL/PCH\n"
"* @ STATE1_1 and STATE4_1, smaples p0\n"
"*/\n"
"\tswitch (state->state) {\n"
"\tcase STATE4_1:\n"
"\t if (state->ext_mem_op) break;\n"
"\tcase STATE1_1:\n"
"\t state->insn = mcu8051_sample_p0 (state);\n"
"\t break;\n"
"\tcase STATE2_1:\n"
"\t if (state->ext_mem_op) break;\n"
"\tcase STATE5_1:\n"
"\t state->ALE = 1;\n"
"\t state->p0_control = 1;\n"
"\t state->p2_control = 1;\n\n"
"\t state->p0 = fetch_pcl;\n"
"\t state->p2 = fetch_pch;\n"
"\t break;\n"
"\tcase STATE3_1:\n"
"\t if (state->ext_mem_op) break;\n"
"\tcase STATE6_1:\n"
"\t state->ALE = 0;\n"
"\t state->p0_control = 0;\n"
"\t state->p2_control = 0;\n\n"
"\t}\n" );
for (i = 0; i < NELEMS (mcs51_optab); i ++) {
char *name;
int wait; /* how many clk required */
int alu; /* need n times alu ops */
int reg_addr; /* need n times reg_addr */
if (mcs51_optab[ i ].name) name = mcs51_optab[ i ].name;
alu = 0;
wait = 0;
reg_addr = 0;
for (j = 0; j < mcs51_optab[ i ].op_num; j++ ) {
if (OPERAND_TYPE (mcs51_optab[ i ].op[ j ]) == mcs51_Rn
|| OPERAND_TYPE (mcs51_optab[ i ].op[ j ]) == mcs51_direct )
reg_addr ++;
}
/* mov reg,reg/imm */
if (!strcmp (name, "mov")) {
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -