abi

    3热度

    1回答

    我正在寻找用于在x86上的内核模块中调用的ABI的官方定义。我最近看了成编译的模块,惊讶地发现: 它使用寄存器传递前三个参数(eax,edx和 ecx)。 它不是fastcall,如GCC文档中所述。 docs say fastcall使用ecx和edx(微软风格)。 我可以找到的唯一有点相关的信息是this,但它没有说太多。 所以: 1)是否有任何官方文件的ABI在内核模块中使用(而不是系统调用

    4热度

    2回答

    我一直在网上找到这个答案的点点滴滴,但不是一个清晰的解决方案。 这是我想要做的。 1)创建一个ATL简单对象。 2)向该对象添加一个返回BOOL的方法,而不是HRESULT。调用者需要真/假返回值。 3)抛出一个jscript或vbscript调用者的异常,它将提供e.description和e.number数据。我发现我可以使用STDMETHODIMP_(BOOL)和[local]一起允许BOO

    3热度

    1回答

    我想了解更多关于vtables和vpointers的内部工作原理,所以我决定尝试直接使用一些技巧来访问vtable。我创建了两个类Base和Derv,每个类都有两个virtual函数(Derv覆盖了Base的函数)。 class Base { int x; int y; public: Base(int x_, int y_) : x(x_), y(y

    4热度

    3回答

    我已经在Ubuntu服务器上编译了我的预加载文件(x32和x64有两个文件)。在哪里可以获得列表,我将在哪些操作系统中看到我编译的文件是兼容的,以及我应该重新编译兼容性的内容? 谢谢!

    9热度

    2回答

    在独立类中更改公共非虚拟非内联重载方法的顺序是否会破坏ABI? 前: class MyFinalClass { public: // ... void doSomething(char c, int i, int n); void doSomething(char c, int i); // ... }; 后: class MyFinalClass

    6热度

    1回答

    典型的bignums是通过使用多个单词来实现的,但是我希望尽可能便于选择单词大小。这是更棘手比看起来 - std::uint64_t在许多32位编译器可用,但std::uint32_t很可能会在32位机器上的一个更好的选择。所以,诱惑那么将使用std ::为size_t,但有一个给定的架构,std::size_t是最有效的类型算术无法保证,例如在the new x32 Linux ABIstd::

    9热度

    1回答

    Ulrich Drepper's paper在线程本地存储概述了TLS ABI几个不同的CPU架构,但我发现它不足以作为执行TLS的原因有两个基础: 它省略了许多功能,如ARM重要archs ,MIPS等(同时包括一堆完全无关的Itanium) 更重要的是,它将很多实现细节与ABI混合在一起,因此很难判断哪些属性是互操作性所必需的,哪些属性是只是他的实施方面。 作为一个例子,为i386的唯一实际A

    2热度

    2回答

    我一直在使用与Microsoft Detours相同的方法练习弯路(用jmp和地址替换前五个字节)。最近我一直在通过修改虚拟表来阅读关于绕行的内容。如果有人能够通过提及这种方法的一些优点和缺点,与前面提到的方法相比,我会很感激的。 我也想问一下堆栈上的vatch和对象。考虑以下情况: // Class definition struct Foo { virtual void Call(voi

    2热度

    1回答

    我正在开发android应用程序,并且我正在研究NDK。同时编译我得到的错误文件所选处理器不支持`qadd16 r1,r1,r0'。任何人都可以解释为什么,这个错误来了,以及如何处理这个错误?这里是我的basic_op.h文件的代码片段 static inline Word32 L_add(register Word32 ra, register Word32 rb) { Word32

    17热度

    1回答

    AMD64 psABI曾经被x86-64.org托管。 我有PDF文件的副本,并将其明确地说: 架构规范可在网络上 http://www.x86-64.org/documentation。 但是http://www.x86-64.org已经很长时间了。至少几个月。 有谁知道最新的psABI可以从哪里拿?