- android - RelativeLayout 背景可绘制重叠内容
- android - 如何链接 cpufeatures lib 以获取 native android 库?
- java - OnItemClickListener 不起作用,但 OnLongItemClickListener 在自定义 ListView 中起作用
- java - Android 文件转字符串
在 Windows XP 中使用某些作为 Windows 服务运行的软件并从登录屏幕重新启动,我看到一条臭名昭著的错误消息
The instruction at "00x..." referenced memory at "00x...". The memory could not be read.
我向开发人员报告了这个问题,但再次查看消息时,我发现地址是一样的。所以
The instruction at "00xdf3251" referenced memory at "00xdf3251". The memory could not be read.
无论这是否是程序中的错误,但内存/访问权限的状态是什么,或者阻止指令读取它所放置的内存的其他内容。它是特定于服务的东西吗?
最佳答案
我猜有人试图在地址 0xdf3251 处执行一条指令,并且该位置没有由可读和可执行的内存页面(可能完全未映射)备份。
如果是这种情况,则异常(实际上是页面错误)源自该指令,并且异常处理程序在堆栈上有其地址(返回的位置,以防异常可以以某种方式解决并且错误指令当处理程序返回时重新启动)。这是您看到的第一个地址。
页面错误处理程序读取的 CR2
寄存器,这是您看到的第二个地址,也具有相同的地址,因为它必须包含不可访问的内存位置的地址,无论是否页面错误是由以下原因引起的:
并且不管它是在数据访问期间还是在获取指令时(后者是我们的情况)。
这就是使指令和内存访问地址相等的方法。
代码很可能存在导致内存损坏的错误,并且某些指针(或堆栈上的返回地址)被指向无法访问的内存位置的虚假值覆盖。然后以某种方式指示 CPU 在那里继续执行(很可能使用以下指令之一:jmp
、call
、ret
).也有可能在某处出现竞争条件。
关于windows - 汇编程序指令如何无法读取它所在的内存,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10427676/
我必须在操作后写入寄存器的目的地和值。 斜体字的字段是我写的。粗体字段(如说明)由我的教授编写。 我曾尝试填写所有字段,但不确定答案。 如果你能告诉我哪里出了问题,我会很高兴,谢谢! :) 最佳答案
bios 中断函数 21h (ah = 1h) 应该从标准输入中读取一个字符并回显它。 我的阅读功能: mov ah, 1h int 21h 所以,如果我按下一个键,它会意识到这一点,
是否有 actionscript 3 的汇编器?类似于 Flasm,但用于 AS3(flasm 是 AS2)。我想将 AS3 程序集编译为独立的 SWF,或将其注入(inject)现有的 SWF。 我
我的汇编代码在调用 xbegin 时引发非法指令。 有什么问题吗? 这是我的代码。 主.c if ( rtm_begin() == 0 ) { //do something. } rtm.S
有人可以用英语解释什么是汇编程序中的相对跳转吗? 最佳答案 它是一个 OP 代码,其操作数将导致执行跳转到相对于当前地址的地址。操作数的值是 偏移 . 假设相对跳转指令保存在地址 0x0005 中,操
这个问题不太可能对任何 future 的访客有帮助;它只与一个较小的地理区域、一个特定的时间点或一个非常狭窄的情况相关,通常不适用于全世界的互联网受众。如需帮助使此问题更广泛适用,visit the
我正在尝试学习 Assembly,并将其用于 64 位。我想用 C 语言编译内联汇编程序,但每次都会出错。 #include int main() { __asm__ ( "mov %rdx, 10
我编写了一个 SIC 汇编程序,除了 I/O 方面外,一切似乎都运行良好。 我已经将目标代码加载到内存中(将 char 格式转换为机器表示形式),但是当我调用 SICRun();执行代码时,我收到一条
我正在学习汇编程序(Nasm、Linux、Ubuntu 16.4、x86_64)并在使用 sys_time 调用时出现问题 (mov eax, 13)。 section .bss time:
在汇编器中: .globl _test _test: pushl %ebp movl %esp, %ebp movl 8(%ebp), %eax pushl %eax call printf popl
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于 Stack Overflow 来说是偏离主题的,
我正在阅读杰夫的精彩著作 assembly step by step ,我在第 8 章中展示了一个汇编程序示例,该程序以这种方式从用户那里获取文件: SECTION .bss ;
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?将问题更新为 on-topic对于堆栈溢出。 1年前关闭。 锁定。这个问题及其答案是loc
我有一个简短的问题。我正在使用 MARS 汇编程序(在 MIPS 指令集中编程)并且我有两个 MIPS 文件。一个文件包含我要运行的主要方法,它调用另一个文件中的函数。我的函数前面有 .globl 指
我必须回答以下关于 6502 汇编语言的问题: “在堆栈上,有以下值(顶部元素在前):0x01, 0x02, 0x03, 0x04, 0x05, 0x06地址 0xc000 是指令 jsr 0xABC
我实际上是在学习汇编,我用的是 Gas,但问题是: 1) 我只知道 Intel 语法,我在一个页面上看到使用 intel 语法的 Gas 在某些情况下优化得不是很好。这是正确的还是我错了?我说的是这个
在汇编程序中,我可以使用 MUL 命令并获得 64 位结果 EAX:EDX,我怎样才能在 C 中做同样的事情? http://siyobik.info/index.php?module=x86&id=
作为编译器项目的一部分,我必须为 x86 编写 GNU 汇编程序代码来比较浮点值。我试图找到有关如何在线执行此操作的资源,据我所知,它是这样工作的: 假设我要比较的两个值是浮点堆栈上的唯一值,那么 f
我有一个用 2 个不同的编译器编译的程序: GCC 3.4.4 PowerPC 交叉编译器 GCC 4.8.1 MinGW 编译器 在程序中,我使用了汇编程序指令 .weak 。文档说: 使具有弱绑定
我写了一个简单的 ASM 程序,但 sys_write 没有给出任何输出。我想我对指向 %ecx 的指针犯了一个错误,并且 sys_write 无法访问该字符串 - 但到目前为止我还没有发现我的错误。
我是一名优秀的程序员,十分优秀!