microcontroller - 6502微处理器上的分支指令是如何实现的?
问题描述
有很多方法可以将分支指令实现到控制器/定序器硬件中。我以前用自己的方法自己做过,但我的问题是:它是如何在 6502 微处理器上完成的,是否有一种通用的或至少一种流行的方法来设计分支指令的硬件?
(附加信息)我使用的方法是我添加了连接到操作码总线的标志引脚,当在特定分支指令期间设置为高时,会将特定标志的值加载到解码器 ROM 中,因此如果标志为高/低则执行分支,如果标志为高/低则跳过分支标志低/高。例如,在 BNE(不相等分支)指令期间,在特定时钟周期,“零标志”引脚将被激活。如果该引脚为低电平,则它不会更改操作码,并且解码器通常会转到下一个内存位置以执行下一个微指令集,在这种情况下,该微指令集结束 BNE 指令而不进行分支,然后等待新指令。但是,如果“零标志”引脚为高电平,则它会更改操作码,
解决方案
首先,操作码永远不会改变。
除非你有关于 6502 的“微码”的内幕信息,否则你不可能知道确切的实现。数据表只为您提供执行的操作,但很少详细说明具体如何完成。只能猜测。
一个这样的猜测:
如果不应采用分支,则相应的条件代码寄存器位(正常或反转,取决于指令)将分支指令操作数掩码为零。
(现在可能被屏蔽)8 位有符号偏移量被添加到 PC。
推荐阅读
- azure - 将大文件上传到 blob 时出现 403 错误
- sveltekit - SvelteKit - 如何使 SCSS 变量/混合对所有组件全局可用?
- oracle-apex - 如何在 Oracle APEX 中选择页面加载的第一条主记录
- asp.net - 动态创建自动完成组件并在 Angular 中为每个组件设置数据源
- html - 当我尝试在手机上访问我的网站时,它显示为放大
- javascript - JavaScript 希伯来语 CSV 解析问题
- pandas - vlookup 相当于使用 pandas 填充现有表
- php - 来自 ANDROID VOLLEY 的 PHP API
- reactjs - 使用 react-datepicker 在 fullCalender 中转到特定日期或月份或年份
- spring-boot - 方法 POST 所需的请求参数不存在