小编sca*_*che的帖子

如何从Common Lisp访问新的x86位操作指令?

我想使用最新的Intel和AMD芯片中提供的新位操作指令,特别是"Parallel Bits Extract" PEXT指令(参见此处此处).如何从Common Lisp中访问这些说明?(特别是SBCL).

理想情况下,我想通过一个库来访问这些指令,该库检测CPU是否提供它们,如果不提供,则在软件中模拟它们.其他语言的编译器提供此类功能(例如,GCC提供功能_pext_u32;请参见此处).

bit-manipulation sbcl common-lisp bitwise-operators

4
推荐指数
1
解决办法
165
查看次数

使用 Rcpp 公开一个构造函数,该构造函数将指向对象的指针作为参数

我有以下非常简单的代码,它定义了一个类 B,该类将指向 A 类对象的指针作为参数。

如果我将其编译为独立的 C++,该代码可以完美运行,但我无法使用 Rcpp 公开 B 类。我一定是在快要.constructor<A>()结束的时候做错了什么。尝试了 &、* 等的所有组合,但没有任何效果。经过几个小时的尝试,我迷路了。欢迎任何想法。

#include <Rcpp.h>

using namespace Rcpp;

class A {
public:
  A(int val_) { val = val_; }
  int val;
};

class B {
public:
  B(A& ptr_) { ptr = &ptr_; }
  int getval() { return (this->ptr->val); }
  A *ptr;
};

RCPP_MODULE(module_cpp) {
    using namespace Rcpp;

    class_<A>("A")
    .constructor<int>()
    .field("val", &A::val)
    ;

    class_<B>("B")
    .constructor<A>()
    ;
}
Run Code Online (Sandbox Code Playgroud)

c++ oop rcpp

3
推荐指数
1
解决办法
102
查看次数