Assembly 什么';“sidt idtr”指令的目的是什么?

Assembly 什么';“sidt idtr”指令的目的是什么?,assembly,x86,Assembly,X86,我遇到了这个指令。我认为我的理解是错误的,因为我的理解导致我相信这个指令绝对没有任何作用。你能指出我理解它的错误吗 sidt应该是。但由于目标操作数是idtr本身,因此它本质上意味着“将idtr的内容存储在idtr中”,因此它实际上不会做任何事情。还是我错了?idtr没有idtr寄存器,它是内存中的一个变量。不能将idtr寄存器指定为操作数,它是隐式的。因此,该指令正在读取idtr寄存器并将其放入名为idtr的变量中。但理论上,我可以指定另一个寄存器作为操作数?如果变量与寄存器的名称相同,我如何

我遇到了这个指令。我认为我的理解是错误的,因为我的理解导致我相信这个指令绝对没有任何作用。你能指出我理解它的错误吗


sidt
应该是。但由于目标操作数是
idtr
本身,因此它本质上意味着“将
idtr
的内容存储在
idtr
中”,因此它实际上不会做任何事情。还是我错了?

idtr没有idtr寄存器,它是内存中的一个变量。不能将idtr寄存器指定为操作数,它是隐式的。因此,该指令正在读取idtr寄存器并将其放入名为idtr的变量中。

但理论上,我可以指定另一个寄存器作为操作数?如果变量与寄存器的名称相同,我如何区分它们?“如果变量与寄存器的名称相同,我如何区分它们?”如果您正在谈论像
eax dd 0
这样的操作,那么可能汇编程序不允许您这样做。顺便提一下,这是at&t语法的一个优势,它将寄存器和符号分隔为不同的名称空间。寄存器的前缀必须是
%
,因此您可以执行
mov%eax,eax
,而不会产生任何歧义(也不会担心与将来的寄存器发生冲突)。不过,混淆和难以捕捉的错误的可能性将是巨大的。组装是很难遵循的,因为它是。