当写入一个寄存器时,就像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] 举报,一经查实,本站将立刻删除。