微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何写入CPU寄存器实际上工作?

当写入一个寄存器时,就像mov ax,1 ,它覆盖了它之前可能有的值。

现在我想知道的是,我可以将多大的数字/string送入寄存器,另一个应用程序是否可以覆盖我的应用程序的寄存器值? 我的意思是,这些寄存器在进程之间共享,还是收到他们自己的沙箱/虚拟寄存器?

我在Intel x86(-64)Core cpu和Windows中很有趣。

Windows相当于暂停()系统调用

只注入函数并通过CreateRemoteThread运行它? C ++

BSD或麻省理工学院许可的Windows DLL汇编器和链接

QEMU是否适合在ARM和PowerPC的汇编程序中学习编程?

在Ubuntu上运行汇编代码

64位程序 – Windows“影子空间”的麻烦

什么是程序启动时的认寄存器状态(asm,linux)?

Linux程序集; bss节内存初始化为0?

assembly中的Windowsaudio

如何获得与objdump输出标签对应的ELF二进制文件中的文件偏移量?

一个核心上一次只能安排一个线程。 核心是什么有寄存器。

一个新的线程被调度时,寄存器首先被保存,并且线程的先前保存的寄存器被恢复。 这包括程序计数器寄存器,它指向下一条要执行的指令。

寄存器(从记忆):

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)当其他进程或内核正在运行时,操作系统内核将保存进程的寄存器。 在你没有运行的时候,这些寄存器会有其他值,但是它们都是透明的 – 当你的进程正在运行的时候,寄存器不会从你的下面改变。

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 [email protected] 举报,一经查实,本站将立刻删除。

相关推荐