Memory nasm汇编中队列的实现

Memory nasm汇编中队列的实现,memory,assembly,x86,nasm,osdev,Memory,Assembly,X86,Nasm,Osdev,如何在程序集中实现队列结构(x86,32位保护模式)? 像堆栈一样实现它很简单,但当从中取出对象时,我必须将每个项移动到一个位置。链表也是可能的,但它的内存效率不高,速度也不快 我正在用普通汇编开发自己的操作系统,所以我不能使用操作系统功能。如果您维护开始和结束指针,您仍然可以使用CPU堆栈。是的,您确实需要不时地移动项目,但不是每次都要移动:只有在您到达堆栈顶部时。因为您维护的是开始和结束指针,所以您不必每次移动一个指针,但可以移动16个指针,然后可以在再次移动之前再插入15个项目 为了获得额

如何在程序集中实现队列结构(x86,32位保护模式)? 像堆栈一样实现它很简单,但当从中取出对象时,我必须将每个项移动到一个位置。链表也是可能的,但它的内存效率不高,速度也不快


我正在用普通汇编开发自己的操作系统,所以我不能使用操作系统功能。

如果您维护开始和结束指针,您仍然可以使用CPU堆栈。是的,您确实需要不时地移动项目,但不是每次都要移动:只有在您到达堆栈顶部时。因为您维护的是开始和结束指针,所以您不必每次移动一个指针,但可以移动16个指针,然后可以在再次移动之前再插入15个项目


为了获得额外积分,将移位量设为指数(您必须使用第三个寄存器来保持移位量),以便第一次移位16,下一次移位32,等等。

循环缓冲区在您填满其当前容量后动态增长?@Michael“Dynamic”可能是错误的词。OP无法使用操作系统功能,因此没有堆内存或任何东西。他正在编写自己的操作系统。当然他最终会有一些分配内存的方法(?)。是的,我有动态内存分配/释放调用。