提交 7138533a 创建 作者: 赵鹏翀's avatar 赵鹏翀

Merge branch 'update_reset' into 'master'

修改PC原理图的复位控制以及微指令 See merge request engintime/Dream-Logic/Intel-classic-chips/8086!7
没有这种文件类型的预览
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
......@@ -96,15 +96,15 @@ const char* shift_flag_keyword = "shift_flag";
// 访问主存或外设的操作数
const char* pc_main_memory_keyword = "[pc]";
const char* jzpc_main_memory_keyword = "jz[pc]";
const char* jnzpc_main_memory_keyword = "jnz[pc]";
const char* jcpc_main_memory_keyword = "jc[pc]";
const char* japc_main_memory_keyword = "ja[pc]";
const char* jbpc_main_memory_keyword = "jb[pc]";
const char* jgpc_main_memory_keyword = "jg[pc]";
const char* jlpc_main_memory_keyword = "jl[pc]";
const char* jmppc_main_memory_keyword = "jmp[pc]";
const char* jz_mar_keyword = "jz[mar]";
const char* jnz_mar_keyword = "jnz[mar]";
const char* jc_mar_keyword = "jc[mar]";
const char* ja_mar_keyword = "ja[mar]";
const char* jb_mar_keyword = "jb[mar]";
const char* jg_mar_keyword = "jg[mar]";
const char* jl_mar_keyword = "jl[mar]";
const char* jmp_mar_keyword = "jmp[mar]";
const char* mar_main_memory_keyword = "[mar]";
const char* mar_extern_IO_keyword = "<mar>";
const char* int_number_keyword = "inta";
......@@ -168,14 +168,14 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{ &pc_main_memory_keyword, &a_register_keyword, 0xffe147ff } // path [pc], a
,{ &pc_main_memory_keyword, &w_register_keyword, 0xffe347ff } // path [pc], w
,{ &jzpc_main_memory_keyword, &pc_register_keyword, 0xff1f46fd } // path jz[pc], pc
,{ &jnzpc_main_memory_keyword, &pc_register_keyword, 0xff3f46fd } // path jnz[pc], pc
,{ &jcpc_main_memory_keyword, &pc_register_keyword, 0xff5f46fd } // path jc[pc], pc
,{ &japc_main_memory_keyword, &pc_register_keyword, 0xff7f46fd } // path ja[pc], pc
,{ &jbpc_main_memory_keyword, &pc_register_keyword, 0xff9f46fd } // path jb[pc], pc
,{ &jgpc_main_memory_keyword, &pc_register_keyword, 0xffbf46fd } // path jg[pc], pc
,{ &jlpc_main_memory_keyword, &pc_register_keyword, 0xffdf46fd } // path jl[pc], pc
,{ &jmppc_main_memory_keyword, &pc_register_keyword, 0xffff46fd } // path jmp[pc], pc
,{ &jz_mar_keyword, &pc_register_keyword, 0xff1f86fd } // path jz[mar], pc
,{ &jnz_mar_keyword, &pc_register_keyword, 0xff3f86fd } // path jnz[mar], pc
,{ &jc_mar_keyword, &pc_register_keyword, 0xff5f86fd } // path jc[mar], pc
,{ &ja_mar_keyword, &pc_register_keyword, 0xff7f86fd } // path ja[mar], pc
,{ &jb_mar_keyword, &pc_register_keyword, 0xff9f86fd } // path jb[mar], pc
,{ &jg_mar_keyword, &pc_register_keyword, 0xffbf86fd } // path jg[mar], pc
,{ &jl_mar_keyword, &pc_register_keyword, 0xffdf86fd } // path jl[mar], pc
,{ &jmp_mar_keyword, &pc_register_keyword, 0xffff86fd } // path jmp[mar], pc
,{ &rs_register_keyword, &rd_register_keyword, 0xffe9c1ff } // path rs, rd
,{ &rs_register_keyword, &w_register_keyword, 0xffe3c1ff } // path rs, w
......@@ -194,6 +194,7 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{ &rd_register_keyword, &a_register_keyword, 0xffe1c1bf } // path rd, a
,{ &rd_register_keyword, &w_register_keyword, 0xffe3c1bf } // path rd, w
,{ &pc_register_keyword, &a_register_keyword, 0xffe1c5ff } // path pc, a
,{ &pc_register_keyword, &mar_register_keyword, 0xffe5c5ff } // path pc, mar
,{ &es_register_keyword, &a_register_keyword, 0xffe1c1ff } // path es, a
,{ &sp_register_keyword, &a_register_keyword, 0xffe1c1bf } // path sp, a
,{ &sp_register_keyword, &w_register_keyword, 0xffe3c1bf } // path sp, w
......
没有这种文件类型的预览
没有这种文件类型的预览
差异被折叠。
......@@ -612,70 +612,110 @@ reset upc
dup 1, null
;=====================================================================
;80. ja symbol
check irq
inc pc
path ja[pc], pc
path pc, mar ;将PC值传送到地址寄存器mar中
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path ja[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;81. jb symbol
check irq
inc pc
path jb[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jb[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;82. jg symbol
check irq
inc pc
path jg[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jg[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;83. jl symbol
check irq
inc pc
path jl[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jl[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;84. je symbol
check irq
inc pc
path jz[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jz[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;85. jne symbol
check irq
inc pc
path jnz[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jnz[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;86. jc symbol
check irq
inc pc
path jc[pc], pc
path pc, mar
;若转移条件成立,则将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中
;若转移条件不成立,则PC加1,指向下一条指令
path jc[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;87. jmp symbol
check irq
inc pc
path jmp[pc], pc
path pc, mar
;将地址寄存器mar指定存储单元的值作为跳转地址加载到pc中,无条件跳转
path jmp[mar], pc
reset upc
dup 4, null
dup 3, null
;=====================================================================
;88. loop symbol 将cl作为目的操作数减1,改变零标志,若zf = 1,则跳转
inc pc
path [pc], ir
......@@ -683,11 +723,12 @@ path rd, a
path alu_dec, rd
path al_flag, flag
inc pc
path jmp[pc], pc
path pc, mar
path jmp[mar], pc
check irq
reset upc
dup 7, null
dup 6, null
;====================================================================================================
......
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG߿GGGGGGGGGGGGGGFFFFFF?F_FGFG߿GGGGG?G?GGGG߿G߿߿GG
\ No newline at end of file
GGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGGG߿GGGGGGGGGGGGGG?_GG߿GGGGG?G?GGGG߿G߿߿GG
\ No newline at end of file
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论