小编Wax*_*ead的帖子

使用xa65汇编程序创建Commodore 64 .prg

我正在尝试学习6510汇编,因为我正在运行Debian xa65是我想要使用的汇编程序.

到目前为止,我写了一段看起来像这样的代码:

*=$0801
.byte $0c, $08, $0a, $00, $9e, $20
.byte $34, $30, $39, $36, $00, $00
.byte $00

*=$1000
INC 53280
INC 53281
JMP $1000
Run Code Online (Sandbox Code Playgroud)

现在,第一个.byte部分一旦加载就会被"自动启动"程序.这是我从教程中找到的东西,据我所知,它只会运行SYS 4096,使CPU开始执行地址$ 1000的代码

其余的代码应该只是开始闪烁C64的外边框和内边框,并永远重复.

组装时我只需运行以下命令:

xa test.s -o test.prg
Run Code Online (Sandbox Code Playgroud)

然后我尝试将test.prg加载到VICE中进行测试.使用LOAD"TEST.PRG",8,1:即使文件加载它也不会自动启动,如果我键入RUN则没有任何反应:如果我键入LIST则相同: - 唯一的结果是着名的READY.和光标一样快乐地闪烁着.

我试图删除自动启动的东西,只组装从*= $ 1000开始的代码,但我得到了相同的结果.尝试从SYS 4096开始也会导致READY,仅此而已.

我确信我没有正确使用xa汇编程序,但我无法弄清楚我是如何为C64创建一个合适的PRG文件来使用的.我究竟做错了什么?

assembly c64 commodore 6510

10
推荐指数
2
解决办法
1370
查看次数

有没有操作系统为malloc()实现缓冲?

for/while/do中的很多c/malloc()会消耗很多时间,所以我很好奇是否有任何操作系统为快速malloc缓冲内存.

我一直在思考是否可以通过为malloc编写一个"贪婪"的包装来加速malloc的速度.例如,当我要求1MB内存时,初始分配器将分配10MB,而在第二,第三,第四等...调用malloc函数将简单地从块中返回内存,首先分配"正常"方式.当然,如果没有足够的可用内存,你需要分配一个新的贪婪的内存块.

不知何故,我认为某人之前必须做过这件事或类似事情.所以我的问题很简单:这是否能够显着加快内存分配过程.(是的,我可以在提出问题之前尝试过,但如果没有必要,我只是懒得写这样的东西)

c memory malloc allocation calloc

8
推荐指数
1
解决办法
531
查看次数

Linux下的segfault自重启程序

在Linux下,通过在崩溃处理程序中捕获异常(例如在段错误上),程序在崩溃时重启自身的最佳方法是什么?

c linux restart recover segmentation-fault

3
推荐指数
3
解决办法
6621
查看次数

在多个链表中查找重复项的算法

在多个(大)链表中查找重复项的最快方法是什么.我将尝试用数组来说明问题,只是为了让它更具可读性.(我使用0-9中的数字来表示简单而不是指针).

list1[] = {1,2,3,4,5,6,7,8,9,0};
list2[] = {0,2,3,4,5,6,7,8,9,1};
list3[] = {4,5,6,7,8,9,0,1,2,3};
list4[] = {8,2,5};
list5[] = {1,1,2,2,3,3,4,4,5,5};
Run Code Online (Sandbox Code Playgroud)

如果我现在问:'列表1-5中是否存在数字8?' 我可以对列表进行排序,删除重复项,对所有列表重复此操作并将它们合并到"超级列表"中,并查看(新)重复项的数量是否等于我搜索的列表数量.假设我得到了正确的重复数,我可以假设我搜索的内容(8)存在于所有列表中.如果我改为搜索1,我将只得到四个重复项 - 并未在所有列表中找到.

是否有更快/更聪明/更好的方法来实现上述目的而无需以任何方式排序和/或更改列表?

PS:这个问题主要是出于纯粹的好奇心而没有别的!:)

algorithm optimization linked-list

1
推荐指数
1
解决办法
1710
查看次数