我想在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) 我有两个数据集,我试图在 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)
我遇到的困难是我需要两个传奇;一种用于条形,一种用于线条。到目前为止,我的所有尝试都将每个数据集的各个部分在某种程度上混合在一起,形成了一个传奇。例如,在下面的图表中,请注意标题错误的单个图例,并且没有任何关于线条的内容。
有人对我如何实现我想要的有建议吗?任何指示表示赞赏。
我试图查看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/,在本文的底部附近有一个类似的例子,但它确实使用了中间接口。