提交 985799cf 创建 作者: 李川's avatar 李川

Merge branch 'hrq' into 'master'

修改硬中断处理微程序 See merge request !6
没有这种文件类型的预览
这个 源代码变更 因为 太大 而不能显示。 你可以 浏览blob
...@@ -85,9 +85,7 @@ const char* alu_not_keyword = "alu_not"; ...@@ -85,9 +85,7 @@ const char* alu_not_keyword = "alu_not";
const char* sp_inc_keyword = "sp_inc"; const char* sp_inc_keyword = "sp_inc";
const char* sp_dec_keyword = "sp_dec"; const char* sp_dec_keyword = "sp_dec";
const char* int_number_keyword = "int_number"; // 中断号 const char* int_ia_keyword = "int_ia";
const char* int_ia_keyword = "int_ia";
const char* int_pc_keyword = "[int_pc]";
// 访问主存或外设的操作数 // 访问主存或外设的操作数
const char* pc_main_memory_keyword = "[pc]"; const char* pc_main_memory_keyword = "[pc]";
...@@ -201,9 +199,7 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] = ...@@ -201,9 +199,7 @@ struct PATH_INSTRUCTION_OPERAND_ENTRY path_operand_table[] =
,{ &asr_register_keyword, &pc_register_keyword, 0xfff7efef } // path asr, pc ,{ &asr_register_keyword, &pc_register_keyword, 0xfff7efef } // path asr, pc
,{ &sp_register_keyword, &asr_register_keyword, 0xfff2fdef } // path sp, asr ,{ &sp_register_keyword, &asr_register_keyword, 0xfff2fdef } // path sp, asr
,{ &int_ia_keyword, &pc_register_keyword, 0xfff1dfef } // path int_ia, pc ,{ &int_ia_keyword, &mar_register_keyword, 0xfff1f7ef } // path int_ia, mar
,{ &int_pc_keyword, &pc_register_keyword, 0xfff95fef } // path int_pc, pc
,{ &int_number_keyword, &ia_register_keyword, 0xfffbffeb } // path int_number, ia 将中断号给ia寄存器
}; };
......
没有这种文件类型的预览
...@@ -513,8 +513,8 @@ ...@@ -513,8 +513,8 @@
0513 794 EF FF FB FF inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7) 0513 794 EF FF FB FF inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7)
0514 798 EB FF FC FF inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应 0514 798 EB FF FC FF inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应
0515 0515
0516 79C EF DF F1 FF path int_ia, pc ;将中断向量(ia寄存器的内容)传入PC 0516 79C EF F7 F1 FF path int_ia, mar ;将中断向量(ia寄存器的内容)传入mar
0517 7A0 EF 5F F9 FF path [int_pc], pc ;读出中断向量中的内容(中断服务程序首地址),将其加载到PC,执行中断服务程序 0517 7A0 EF EB F9 FF path [mar], pc ;读出中断向量中的内容(中断服务程序首地址),将其加载到PC,执行中断服务程序
0518 7A4 CF FF FF FF reset upc 0518 7A4 CF FF FF FF reset upc
0519 0519
0520 7A8 FF FF FF FF dup 6, null 0520 7A8 FF FF FF FF dup 6, null
...@@ -533,8 +533,3 @@ ...@@ -533,8 +533,3 @@
0533 7D4 EF FF FD FF eoi ;清除已经服务完的硬中断标志 0533 7D4 EF FF FD FF eoi ;清除已经服务完的硬中断标志
0534 7D8 AF FF FF FF ask_for_int 0534 7D8 AF FF FF FF ask_for_int
0535 7DC CF FF FF FF reset upc 0535 7DC CF FF FF FF reset upc
0536
0537 ;dup 1, null
0538
0539
0540
...@@ -513,8 +513,8 @@ path pc, [mar] ;将返回地址PC入栈 ...@@ -513,8 +513,8 @@ path pc, [mar] ;将返回地址PC入栈
inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7) inta1 ;发出第一个中断应答信号,中断控制器保存最高优先级中断请求对应的编号(0~7)
inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应 inta2 ;发出第二个中断应答信号,将响应中断的终端号读入IA寄存器中,并清除响应的中断请求,避免重复响应
path int_ia, pc ;将中断向量(ia寄存器的内容)传入PC path int_ia, mar ;将中断向量(ia寄存器的内容)传入mar
path [int_pc], pc ;读出中断向量中的内容(中断服务程序首地址),将其加载到PC,执行中断服务程序 path [mar], pc ;读出中断向量中的内容(中断服务程序首地址),将其加载到PC,执行中断服务程序
reset upc reset upc
dup 6, null dup 6, null
......
没有这种文件类型的预览
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论