2015-01-04 5 views
0

어셈블리 (x86, 32 비트 보호 모드)에서 큐 구조를 구현하려면 어떻게합니까? 스택처럼 구현하는 것이 간단하지만 개체를 ​​가져올 때 모든 항목을 한 곳 옮겨야합니다. 링크 된 목록도 가능하지만 메모리 효율이 높지도 빠르지도 않습니다.nasm 어셈블리의 큐 구현

일반 어셈블리에서 자체 운영 체제를 개발 중이므로 OS 기능을 사용할 수 없습니다.

+0

현재 용량을 채우면 동적으로 커지는 순환 버퍼가 있습니까? – Michael

+0

@Michael "Dynamic"이 잘못된 단어 일 수 있습니다. OP는 OS 기능을 사용할 수 없으므로 힙 메모리 나 다른 것이 없습니다. –

+0

그는 자신의 OS를 쓰고 있습니다. 분명히 그는 결국 메모리를 할당 할 수있는 어떤 방법을 갖게 될 것입니다 (?). – Michael

답변

2

시작 포인터와 끝 포인터를 유지하더라도 계속 CPU 스택을 사용할 수 있습니다. 네, 때때로 물건을 옮겨야하지만 매번 한번에 물건을 옮겨야하는 것은 아닙니다. 시작과 끝 포인터를 유지 관리하기 때문에 매번 한 번씩 이동하지 않아도되지만, 예를 들어 16으로 이동할 수 있으며, 다시 이동해야하기 전에 15 개의 항목을 더 삽입 할 수 있습니다.

보너스 포인트를 얻으려면 처음으로 16을 이동하고 다음에 32를 이동할 때 등 시프트 양을 지수로 만드십시오 (시프트 수량을 유지하려면 세 번째 레지스터를 사용해야 함)