相关疑难解决方法(0)

直接读程序计数器

在内核模式或其他模式下,可以直接读取Intel CPU上的程序计数器(即没有"技巧")吗?

x86 assembly program-counter

29
推荐指数
4
解决办法
2万
查看次数

获取x86的当前指令的地址

我使用Linux与x86(准确地说是64位).有没有办法可以得到当前指令的地址.其实我想写自己的简化版本的setjmp/longjmp.在这里,R ..发布了longjmp的简化版本.知道如何实现setjmp.一个简化的版本,没有考虑异常和信号等...

c linux 64-bit x86 assembly

11
推荐指数
3
解决办法
2万
查看次数

在ESP下面写下是否有效?

对于32位Windows应用程序,使用ESP下面的堆栈内存进行临时交换空间而不显式减少ESP是有效的吗?

考虑一个返回浮点值的函数ST(0).如果我们的价值目前在EAX,我们会,例如,

PUSH   EAX
FLD    [ESP]
ADD    ESP,4  // or POP EAX, etc
// return...
Run Code Online (Sandbox Code Playgroud)

或者不修改ESP寄存器,我们可以:

MOV    [ESP-4], EAX
FLD    [ESP-4]
// return...
Run Code Online (Sandbox Code Playgroud)

在这两种情况下都会发生同样的事情,除了在第一种情况下我们注意在使用内存之前递减堆栈指针,然后在之后递增它.在后一种情况下,我们没有.

尽管有任何实际需要在堆栈上持久保存这个值(重入问题,在PUSH返回值和读取值之间的函数调用等),有没有任何根本原因,为什么写入ESP下面的堆栈这样会无效?

windows x86 assembly abi

11
推荐指数
3
解决办法
447
查看次数

如何在C中打印程序计数器的精确值

我想写一个C程序,它会打印程序计数器的内容PC.可以从用户空间或程序集中完成,还是使用某些特定的内核例程?

c linux assembly arm linux-kernel

7
推荐指数
2
解决办法
1万
查看次数

标签 统计

assembly ×4

x86 ×3

c ×2

linux ×2

64-bit ×1

abi ×1

arm ×1

linux-kernel ×1

program-counter ×1

windows ×1