小编Bar*_*rry的帖子

提供使用Rust的内联汇编查询Intel CPU功能的示例

我想在Rust中使用内联汇编.我所包含的代码应该用于查询Intel CPU功能,现在我只想ebx在系统调用后获取寄存器状态.

使用每晚构建的Rust编译器(需要使用asm!宏)代码编译.当我运行程序时,我得到ebx寄存器的随机值和分段错误.我很确定我的asm!宏语法是错误的但是这个功能的文档非常弱.有没有人对我可以改进的内容有任何指示?

#![feature(asm)]
fn main() {
    let result: u32;
    unsafe {
        asm!("mov eax, 07H;
              mov ecx, 0;
              cpuid;"
              : "={ebx}"(result)
              :
              : "eax, ebx, ecx, edx"
              : "intel"
        )
    }
    println!("ebx from cpuid is {}", result);
}
Run Code Online (Sandbox Code Playgroud)

x86 assembly inline-assembly rust

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

如何在 r 中的 ggplot2 中绘制第二个图例

我有两个数据集,我试图在 r 下的 ggplot2 中叠加的一张图表上显示。数据集 1 需要显示为一组条形分组(每个国家 1 组 - 数据集中有几个国家)。数据集 2 需要显示为一组横跨条形的彩色水平线。请注意,两个数据集的长度不同。我下面有一些代码说明了我正在尝试做的事情(根据其他人的建议设计)。

library(ggplot2)

chart1_data <- data.frame(year=c("1998","1998","1998","1998","1998","1998","1998","1998","1998"), medicine=c("Fent","Meth","Morph","Fent","Meth","Morph","Fent","Meth","Morph"), entity=c("Italy","Italy","Italy","Norway","Norway","Norway","Portugal","Portugal","Portugal"), usage=c(3.01,9.32,2.01,1.24,1.43,28.48,5.01,5.51,41.82))

chart1_means <- data.frame(label=c("Global Fent","EURO Fent","Global Meth","EURO meth","Global Morph","EURO Morph"), value=c(0.03, 0.07, 1.59, 5.12, 3.28, 8.54))

means_labels = chart1_means$label
colors = rainbow(length(means_labels))

ggplot(data=chart1_data, aes(x=entity, y=usage, fill=medicine)) +
geom_bar(stat="identity", position=position_dodge(), show.legend=TRUE) +
geom_hline(data=chart1_means, aes(yintercept=value), color=colors) +
scale_fill_manual("means", values=colors, guide=guide_legend(override.aes = list(colors)))
Run Code Online (Sandbox Code Playgroud)

我遇到的困难是我需要两个传奇;一种用于条形,一种用于线条。到目前为止,我的所有尝试都将每个数据集的各个部分在某种程度上混合在一起,形成了一个传奇。例如,在下面的图表中,请注意标题错误的单个图例,并且没有任何关于线条的内容。

结果图

有人对我如何实现我想要的有建议吗?任何指示表示赞赏。

r data-visualization ggplot2

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

Go可以避免使用中间接口吗?

我试图查看Go是否支持我在其他OO语言(例如Java)中使用的语言功能。我想定义一些接口,并将支持其中一些接口的对象作为参数传递给函数。

在Java中,我可能会定义一堆单一方法接口,例如HasAdd,HadMul,HasSub,HasDiv,HasSin,HasCos,HasTan等。

然后我可以定义一个通用方法,其参数T定义为<T extends HasSin & HasAdd>。我将T传递给该方法。注意,我不必定义同时包含HasSin和HasAdd的中间接口。(这很棒,因为n个接口导致需要2 ^ n个中间接口来覆盖所有情况)。

我知道go不支持泛型。但是它可以执行func(HasSin&HasAdd obj)之类的事情吗?似乎应该支持这种行为。我只是没有找到能以两种方式束缚它的文档。

我已经看到了:https : //golangbot.com/interfaces-part-2/,在本文的底部附近有一个类似的例子,但它确实使用了中间接口。

go

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

标签 统计

assembly ×1

data-visualization ×1

ggplot2 ×1

go ×1

inline-assembly ×1

r ×1

rust ×1

x86 ×1