LOADALL

From Wikipedia, the free encyclopedia

LOADALLは、インテルCPU 80286, 80386にあった非公開命令のひとつである [1]

LOADALL命令は、その名前が示すように1命令でCPUのすべての内部レジスタをロードする。セグメントレジスタの可視部(visible part)に加えて、ディスクリプターキャッシュ部(cached part)もロードするため、公開されたx86命令ではできないことが可能である。 LOADALL命令の有用な使用例は、リアルモードのままで1Mバイト以上のメモリ領域をアクセスすることである(Unreal mode)。OS/2 1.x [2]などがLOADALL命令を使用している。

80286版LOADALL

オペコードは、0Fh 05h。80286版LOADALLは、セグメントレジスタの値に関係なく、00800h–00866hのアドレスからデータを読み込む。

Addressnumber of bytesregisterregisterregisterregister
008006not used
008062MSW (machine status word)
0080814not used
008162TR (task register)
008182flags
0081A2IP (instruction pointer)
0081C2LDTR (local descriptor table register)
0081E4x2DS (data segment)SS (stack segment)CS (code segment)ES (extra segment)
008264x2DI (destination index)SI (source index)BP (base pointer)SP (stack pointer)
0082E4x2BXDXCXAX
008364x6ES descriptor cacheCS descriptor cacheSS descriptor cacheDS descriptor cache
0084E4x6GDTR (global descriptor table register)LDT descriptor cacheIDTR (interrupt descriptor table register)TSS descriptor cache

80286では、LOADALL命令を使用しても、プロテクトモードからリアルモードに戻ることはできない。すなわち、MSWのPEビットはクリアできない。しかし、LOADALL命令があれば、リアルモードのままで1MB以上のメモリにアクセスすることができ、プロテクトモードに移行する必要はなくなる。

80386版LOADALL

脚注

参考文献

Related Articles

Wikiwand AI