易码技术论坛

 找回密码
 加入易码
搜索
查看: 73219|回复: 4

关于急速内核

[复制链接]
发表于 2005-5-11 17:22:00 | 显示全部楼层
nobody know?
发表于 2005-5-11 19:02:00 | 显示全部楼层
QIQI,你来解释下吧
看楼主这么想知道,偶就暂时帮你提升下帖子吧
7068_15658_3401.bmp
7068_15658_3402.bmp
 楼主| 发表于 2005-5-12 07:01:00 | 显示全部楼层
3q 斑斑
 楼主| 发表于 2005-5-13 20:28:00 | 显示全部楼层
快高考了,qiqi很忙吗?
别人知道吗?
 楼主| 发表于 2005-5-11 12:13:33 | 显示全部楼层 |阅读模式
改写了brk $0519(find_inode)中断函数。这个函数用于在整个分配表(大小为34K)中搜索指定文件号的分配表信息
在打开文件、修改文件、列出文件等方面被大量使用,可是原函数效率极为低下
原函数:
brk $0519
长度:292B
搜索整个分配表使用时间:约80ms
占用ram:
除出参和入参外
使用6个零页变量
2048B的缓冲($C000-$C800)和数个在$cc00-$cd00间的临时变量

QIQI重写:
将函数移到brk $060d
现函数:brk $060d
长度:126B
搜索整个分配表时间:约2ms (效率!)
占用ram:除出参和入参外
4个零页变量
无缓冲

改写后的函数:

;其实这个函数还真没什么技术含量,特简单,可是ggv...哈!
ldx #0
lp1:lda find_loc,x
sta NGFFS_BUFFER,x
inx
cpx #7e
bne lp1 ;将跨bank搜索代码复制到bus flash跨页读写的公用buffer
jmp NGFFS_BUFFER ;$0972
find_loc:
lda io_switch_bank ;$00
pha
lda #0
sta nor_block_ptr ;$db
next_block:ldx nor_block_ptr
lda inodebank,x ;$088b
sta io_switch_bank
tax
asl
txa
lda inodeaddr,x ;$089c
sta norbufptr ;$e1
lda inodeaddr+1,x
sta norbufptr+1
lda #0
sta inode_ptr ;$dc
if_not_finish:ldy #$1e
lda (norbufptr),y
cmp #$aa
bne not_empty
iny
lda (norbufptr),y
cmp #$aa
bne not_empty
go_next_block:inc nor_block_ptr ;如果该inode偏移1eH为AAAA说明该块以下为空,继续下一块
lda nor_block_ptr
cmp #17 ;若块数大于17,搜索结束
bcs end_fail
jmp next_block
not_empty:ldy #0
lda (norbufptr),y
cmp inodenum ;$093f
bne next_inode
iny
lda (norbufptr),y
cmp inodenum+1
bne next_inode ;比较是否是要搜索的inode序号
ldy #04
lda (norbufptr),y
and #$e0
cmp filestate ;检查是否为要搜索的状态
bne next_inode
lda nor_block_ptr
sta inodeslot ;$093d
lda inode_ptr
sta inodeslot+1 ;全部符合则把所在block和inode位置保存到出参
clc
pla
sta io_switch_bank
rts
next_inode:
lda norbufptr
clc
adc #$20 ;inode每个长度#$20
sta norbufptr
bcc pj1
inc norbufptr+1
pj1:inc inode_ptr
lda inode_ptr
cmp #$40 ;每个block有40h个inode
bne if_not_finish
jmp go_next_block ;40h个inode比较完后转到下个block
end_fail:
sec
pla
sta io_switch
rts

这段代码能直接输入吗?

在哪里输入?
您需要登录后才可以回帖 登录 | 加入易码

本版积分规则

Archiver|手机版|小黑屋|EMAX Studio

GMT+8, 2025-7-6 22:55 , Processed in 0.022152 second(s), 21 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表