在 nasm 程序集中实现队列
Implementing queue in nasm assembly
如何在程序集(x86、32 位保护模式)中实现队列结构?
像堆栈一样实现它很简单,但是当从中取出对象时,我必须将每个项目移动一个地方。链表也是可能的,但它不是很节省内存,也不是很快。
我正在用普通汇编开发我自己的操作系统,所以我不能使用 OS 函数。
如果保留开始和结束指针,您仍然可以使用 CPU 堆栈。是的,您确实需要不时移动项目,但不是每次都移动:仅当您到达堆栈顶部时。因为您要维护开始和结束指针,所以您不必每次都移动 1,但可以移动 16,然后您可以再插入 15 个项目,然后再进行移动。
对于奖励积分,使班次数量呈指数增长(您必须使用第三个寄存器来保持班次数量),以便第一次班次为 16,下次班次为 32,依此类推。
如何在程序集(x86、32 位保护模式)中实现队列结构? 像堆栈一样实现它很简单,但是当从中取出对象时,我必须将每个项目移动一个地方。链表也是可能的,但它不是很节省内存,也不是很快。
我正在用普通汇编开发我自己的操作系统,所以我不能使用 OS 函数。
如果保留开始和结束指针,您仍然可以使用 CPU 堆栈。是的,您确实需要不时移动项目,但不是每次都移动:仅当您到达堆栈顶部时。因为您要维护开始和结束指针,所以您不必每次都移动 1,但可以移动 16,然后您可以再插入 15 个项目,然后再进行移动。
对于奖励积分,使班次数量呈指数增长(您必须使用第三个寄存器来保持班次数量),以便第一次班次为 16,下次班次为 32,依此类推。