相关疑难解决方法(0)

什么是更好的"int 0x80"或"系统调用"?

我研究Linux内核并发现,对于int 0x80体系结构,中断syscall不能用于调用系统调用.

问题是:在int 0x80架构的情况下什么是更可取的int 0x80syscall为什么?

编辑:我使用内核3.4

linux x86 assembly system-calls

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

如何在内联汇编中通过sysenter调用系统调用?

我们如何在x86 Linux中直接使用sysenter/syscall实现系统调用?有人可以提供帮助吗?如果您还可以显示amd64平台的代码,那就更好了.

我知道在x86中,我们可以使用

__asm__(
"               movl $1, %eax  \n"
"               movl $0, %ebx \n"
"               call *%gs:0x10 \n"
);
Run Code Online (Sandbox Code Playgroud)

间接路由到sysenter.

但是我们如何使用sysenter/syscall直接编码来发出系统调用呢?

我找到了一些材料http://damocles.blogbus.com/tag/sysenter/.但仍然难以弄明白.

linux x86 gcc x86-64 system-calls

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

x86-32/x86-64多语言机器码片段,在运行时检测64位模式?

是否可以使用相同字节的机器代码来确定它们是以32位还是64位模式运行,然后执行不同的操作?

即写多语言机器代码.

通常,您可以在构建时使用#ifdef宏检测.或者在C中,您可以编写一个if()以编译时常量作为条件,并让编译器优化它的另一面.

这仅适用于奇怪的情况,例如代码注入,或只是为了查看是否可能.


另请参见:多语言ARM/x86机器代码,用于分支到不同的地址,具体取决于解码字节的架构.

x86 assembly

10
推荐指数
1
解决办法
789
查看次数

标签 统计

x86 ×3

assembly ×2

linux ×2

system-calls ×2

gcc ×1

x86-64 ×1