注册 登录
编程论坛 汇编论坛

-R 后为什么cs ip的值不变化

wobianlong 发布于 2012-08-08 20:03, 539 次点击
在windows的dubug下,连续的输入-r,各种寄存器的值都是一样的,
是每个进程都好像认为自己独占了CPU一样吗?
是不是在各种各样的进程中 每个进程的内存范围都是一样的,打个比方 A进程占用了系统表示的内存0000000
                                                             是否D进程也有同样占用了系统的内存0000000
                                                             但是A进程和D进程在真实的物理内存上占用的不是同一内存地址,只是系统给了他们标了相同名称的地址
8 回复
#2
zklhp2012-08-08 20:23
在windows的dubug下

后面不用看了 debug是个16位程序 现在的windows再运行16位程序的时候用的是类似虚拟机的东西 默认情况下 每个debug都相当于一个独立的电脑 一个独立的CPU

另外 对于windows下的程序 当然其他操作系统也一样 每个程序在执行的时候也是独占据CPU的 内存是么 比较复杂 你后面说的差不多对 但这种东西的实现是比较复杂的
#3
wobianlong2012-08-08 20:30
额,我说的有点乱,我自己都感觉很难表达清楚,你竟然还能看懂,佩服你啊
就当DEBUG的时候是个虚拟的计算机好了,但是运行了-R啊,运行了-R这个东西后为什么cs ip的值不变化,难道是运行的时候cs ip的值是变化的,但是呢-r后因为后面找不到代码了,又重新回到起先的CS ip 地址了 吗
主要是 如果不运行-r,每次cs ip不变化还说得过去,但是已经运行过代码了啊
#4
zklhp2012-08-09 08:19
以下是引用wobianlong在2012-8-8 20:30:01的发言:

额,我说的有点乱,我自己都感觉很难表达清楚,你竟然还能看懂,佩服你啊
就当DEBUG的时候是个虚拟的计算机好了,但是运行了-R啊,运行了-R这个东西后为什么cs ip的值不变化,难道是运行的时候cs ip的值是变化的,但是呢-r后因为后面找不到代码了,又重新回到起先的CS ip 地址了 吗
主要是 如果不运行-r,每次cs ip不变化还说得过去,但是已经运行过代码了啊

因为你描述的这个现象我知道 所以你说的乱我也明白 语言 只不过是传递思想的一个工具罢了

为啥不变呢 因为 调试器打出来的寄存器的值 不是当前CPU寄存器中的值 它打的某一个时间点时寄存器中的值 比如 在调试的时候 R打的就是程序实际运行中 指令间隔时寄存器的值

我觉得说了这些你能明白了罢 不明白再问罢

另外说一句 Debug是DOS时代的调试器 是16位程序 这些都是被淘汰的东西了 所以我认为深究这些东西意义不大
#5
有容就大2012-08-09 23:23
有没有 好用点的汇编调试器
MASMPlus上面没有自带的调试器 无法单步调试 比如debug的-t

#6
zklhp2012-08-09 23:25
16位基本就debug了 32位调试器很多 OllyDbg windbg IDA 这三个都可以调试 64位windbg肯定可以用 其他不知道了
#7
有容就大2012-08-09 23:34
你是不是用windbg好点?
#8
zklhp2012-08-09 23:35
windbg微软出的 可惜是命令行的
#9
有容就大2012-08-09 23:37
那我有时间都试试看 嘿嘿
1