Windows 写入CPU寄存器实际上是如何工作的?
当写入寄存器时,比如说,像Windows 写入CPU寄存器实际上是如何工作的?,windows,assembly,cpu,intel,Windows,Assembly,Cpu,Intel,当写入寄存器时,比如说,像mov ax,1,它会覆盖先前可能具有的值 现在我想知道的是,我能将多大的数字/字符串输入到寄存器中,而另一个应用程序能覆盖我的应用程序的寄存器值吗?我的意思是,这些寄存器是在进程之间共享的,还是它们接收自己的沙盒/虚拟寄存器 我对Intel x86(-64)核CPU和Windows很感兴趣。单核上一次只能调度一个线程。核心是什么有寄存器 调度新线程时,首先保存寄存器,然后恢复该线程以前保存的寄存器。这包括程序计数器寄存器,它指向要执行的下一条指令 寄存器(来自内存)
mov ax,1
,它会覆盖先前可能具有的值
现在我想知道的是,我能将多大的数字/字符串输入到寄存器中,而另一个应用程序能覆盖我的应用程序的寄存器值吗?我的意思是,这些寄存器是在进程之间共享的,还是它们接收自己的沙盒/虚拟寄存器
我对Intel x86(-64)核CPU和Windows很感兴趣。单核上一次只能调度一个线程。核心是什么有寄存器 调度新线程时,首先保存寄存器,然后恢复该线程以前保存的寄存器。这包括程序计数器寄存器,它指向要执行的下一条指令
寄存器(来自内存): AX、BX、CX、DX是16位,分为字节(AH、AL、BH、BL) SI、DI、SP和BP也是16位 EAX、EBX、ECX等为32位 我不确定它们在64位系统上被称为什么。我想我看到了RAX,但我不确定
还有专用寄存器、浮点寄存器等。单核上一次只调度一个线程。核心是什么有寄存器 调度新线程时,首先保存寄存器,然后恢复该线程以前保存的寄存器。这包括程序计数器寄存器,它指向要执行的下一条指令
寄存器(来自内存): AX、BX、CX、DX是16位,分为字节(AH、AL、BH、BL) SI、DI、SP和BP也是16位 EAX、EBX、ECX等为32位 我不确定它们在64位系统上被称为什么。我想我看到了RAX,但我不确定 还有专用寄存器、浮点寄存器等。1)寄存器的大小(以明确定义的方式)取决于您为它们使用的名称。例如,
eax
是32位宽,ax
是16位,ah
/al
是8位。如果您使用的是64位系统,rax
的宽度为64位
这些寄存器大小的确切限制在某种程度上取决于您如何解释这些值(特别是,您是将它们视为有符号还是无符号)。不过,规模才是最重要的
2) 当其他进程或内核运行时,操作系统内核将保存进程的寄存器。当您不运行时,寄存器会接受其他值,但它是透明的——当您的进程运行时,寄存器不会从您的下面更改。1)寄存器的大小取决于(以明确定义的方式)您为它们使用的名称。例如,eax
是32位宽,ax
是16位,ah
/al
是8位。如果您使用的是64位系统,rax
的宽度为64位
这些寄存器大小的确切限制在某种程度上取决于您如何解释这些值(特别是,您是将它们视为有符号还是无符号)。不过,规模才是最重要的
2) 当其他进程或内核运行时,操作系统内核将保存进程的寄存器。当您不运行时,寄存器会接受其他值,但它是透明的——当您的进程运行时,寄存器不会从您的下面更改。这就清除了很多。您知道应用于寄存器的限制吗?例如,有多少数据和什么类型。我很乐意提供链接,因为我真的找不到关于这个的英特尔文档…你怎么能找不到文档?寄存器是位,也就是全部,1和0。除非你对它们做点什么,否则它们没有意义。即使如此,其意义也是暂时的。假设你正在使用一个寄存器来存储一个地址,对你来说它是一个地址,而坐在那里的寄存器只是位。当您将该寄存器与一条将这些位解释为地址的指令一起使用时,那么它暂时是一个地址。当您需要将该地址移动到另一个项目时,例如*p++,现在该寄存器包含一个操作数和一个加法运算的结果。8、16、32或62位。只保留位。@rFactor:寄存器保存位,而不是数据类型。寄存器包含8位、16位、32位或64位。这就清除了很多。您知道应用于寄存器的限制吗?例如,有多少数据和什么类型。我很乐意提供链接,因为我真的找不到关于这个的英特尔文档…你怎么能找不到文档?寄存器是位,也就是全部,1和0。除非你对它们做点什么,否则它们没有意义。即使如此,其意义也是暂时的。假设你正在使用一个寄存器来存储一个地址,对你来说它是一个地址,而坐在那里的寄存器只是位。当您将该寄存器与一条将这些位解释为地址的指令一起使用时,那么它暂时是一个地址。当您需要将该地址移动到另一个项目时,例如*p++,现在该寄存器包含一个操作数和一个加法运算的结果。8、16、32或62位。只保留位。@rFactor:寄存器保存位,而不是数据类型。寄存器包含8位、16位、32位或64位。注意:在这个基本级别上,操作系统并不重要:每个人都以相同的方式操作。注意:在这个基本级别上,操作系统并不重要:每个人都以相同的方式操作。