网页资讯视频图片知道文库贴吧地图采购
进入贴吧全吧搜索

 
 
 
日一二三四五六
       
       
       
       
       
       

签到排名:今日本吧第个签到,

本吧因你更精彩,明天继续来努力!

本吧签到人数:0

一键签到
成为超级会员,使用一键签到
一键签到
本月漏签0次!
0
成为超级会员,赠送8张补签卡
如何使用?
点击日历上漏签日期,即可进行补签。
连续签到:天  累计签到:天
0
超级会员单次开通12个月以上,赠送连续签到卡3张
使用连续签到卡
09月05日漏签0天
文曲星吧 关注:1,988贴子:27,803
  • 看贴

  • 图片

  • 吧主推荐

  • 游戏

  • 0回复贴,共1页
<<返回文曲星吧
>0< 加载中...

文曲星 INT中断实现分析

  • 只看楼主
  • 收藏

  • 回复
  • DREACYOU
  • 1L喂熊
    1
该楼层疑似违规已被系统折叠 隐藏此楼查看此楼
文曲星大量使用了INT中断来实现系统调用,但6502并没有INT指令。
文曲星的INT指令的指令码是0x00,这是BRK指令的指令码,INT指令长度是3个字节,一个操作码+2字节绝对地址码,而BRK指令是隐含寻址,指令长度是1字节。
6502只有3个中断向量,一个是RESET,一个是IRQ,一个是NMI,BRK指令触发的IRQ中断,W65C02会给标志寄存器bit4、bit2置1,bit3置0,R65C02则没有标示给bit3置0,因为IRQ和NMI中断服务程序都是通过RTI返回的,此时的PC+1->S,而INT指令长度是3字节,所以需要在中断服务程序里把PC出栈+2再入栈,需要弄清楚,IRQ产生是,硬件将哪些寄存器按什么顺序入栈,然后再获取栈顶指针,将指向PC在栈中的值取出,+2->S
但是JSR只支持绝对寻址,即,地址必须跟在JSR后面,所以不可能在中断服务程序中,使用JSR去实现系统调用,但可以用JMP去跳转到系统调用的入口,然后直接在系统调用程序执行完之后直接RTI,另外一种方式就是把系统调用整个程序搬到SRAM上固定的地址,这样就能在中断服务中直接JSR,然后在中断服务中RTI。
要区分是哪种方式实现INT的,只需要找到对应系统调用真正的入口,然后JSR一下这段程序,如果出错,就是JMP实现的,如果能够正常运行,就是搬运实现的。


登录百度账号

扫二维码下载贴吧客户端

下载贴吧APP
看高清直播、视频!
  • 贴吧页面意见反馈
  • 违规贴吧举报反馈通道
  • 贴吧违规信息处理公示
  • 0回复贴,共1页
<<返回文曲星吧
分享到:
©2025 Baidu贴吧协议|隐私政策|吧主制度|意见反馈|网络谣言警示