标签: intel

intel机器码到汇编代码问题

专家,我不知道intel x86 machineCode/assemblyCode转换是singleSide还是BothSide?

意思是:assemblyCode ---> machineCode和machineCode ---> assemblyCode都可用.

由于x86 machineCode的大小不同(1-15字节),并且操作码在(1-3字节)中变化,如何确定一个操作码是1byte还是2byte还是3byte?

我从来没有找到x86指令前缀的例子,如果这里是1byte前缀,如何确定它是前缀还是操作码?

当然,assemblyCode ---> machineCode,助记符+ oprand [w/b]的标识可以通过maping某些MappingTable来确定响应machineCode是什么.

但是,当过程逆转时:

{bbbbbbbb,bbbbbbbb,bbbbbbbb,// instruction1 bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,// instruction2 bbbbbbbb,bbbbbbbb // instruction3}

----> {bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb,bbbbbbbb}

我不知道确定一条指令的长度(大小)的重要位或字节.

任何人都会告诉我如何确定?(操作码的大小,前缀示例.)感谢您的帮助.

format x86 assembly intel opcode

8
推荐指数
1
解决办法
2024
查看次数

与AVX一起使用4个水平双精度和

问题可以描述如下.

输入

__m256d a, b, c, d
Run Code Online (Sandbox Code Playgroud)

产量

__m256d s = {a[0]+a[1]+a[2]+a[3], b[0]+b[1]+b[2]+b[3], 
             c[0]+c[1]+c[2]+c[3], d[0]+d[1]+d[2]+d[3]}
Run Code Online (Sandbox Code Playgroud)

到目前为止我所做的工作

这看起来很容易:两个VHADD之间有一些混乱,但实际上结合AVX特有的所有排列不能产生实现该目标所需的非常排列.让我解释:

VHADD x, a, b => x = {a[0]+a[1], b[0]+b[1], a[2]+a[3], b[2]+b[3]}
VHADD y, c, d => y = {c[0]+c[1], d[0]+d[1], c[2]+c[3], d[2]+d[3]}
Run Code Online (Sandbox Code Playgroud)

我是否能够以相同的方式置换x和y来获得

x1 = {a[0]+a[1], a[2]+a[3], c[0]+c[1], c[2]+c[3]}
y1 = {b[0]+b[1], b[2]+b[3], d[0]+d[1], d[2]+d[3]}
Run Code Online (Sandbox Code Playgroud)

然后

VHADD s, x1, y1 => s1 = {a[0]+a[1]+a[2]+a[3], b[0]+b[1]+b[2]+b[3], 
                         c[0]+c[1]+c[2]+c[3], d[0]+d[1]+d[2]+d[3]}
Run Code Online (Sandbox Code Playgroud)

这是我想要的结果.

因此,我只需要找到如何执行

x,y => {x[0], x[2], y[0], y[2]}, {x[1], x[3], y[1], y[3]}
Run Code Online (Sandbox Code Playgroud)

不幸的是,我得出的结论是,使用VSHUFPD,VBLENDPD,VPERMILPD,VPERM2F128,VUNPCKHPD,VUNPCKLPD的任何组合都是不可能的.问题的关键在于,在__m256d的实例u中交换u [1]和u [2]是不可能的.

题 …

sum intel avx

8
推荐指数
1
解决办法
2442
查看次数

如何从汇编程序中获取英特尔处理器的随机数?

我需要从处理器(英特尔酷睿i3)中的英特尔随机发生器获取随机数.我不想使用任何库.我想在C++中使用汇编器粘贴,但我不知道哪些寄存器和指令应该使用.

c++ random assembly intel rdrand

8
推荐指数
2
解决办法
3311
查看次数

pthread vs intel TBB及其与OpenMP的关系?

对于多线程编程,考虑到与HPC应用程序(MPI)的组合,哪一个更好,我们可以说,在功能方面,英特尔TBB(线程构建块)是否与pthread相当?我只有开放式mp的经验,但我听说TBB和Pthread提供了比开放式mp更精细的线程控制,但TBB或TBB + OpenMP与pthread相比能提供类似的功能吗?

c++ multithreading pthreads intel openmp

8
推荐指数
1
解决办法
2820
查看次数

英特尔X86-64汇编教程或书籍

我尝试用示例或一本好书来搜索intel x64汇编教程,但我甚至没有在intel站点中找到它.

所以,你能给我一个很好的教程或书吗?我在linux上使用nasm.

谢谢

assembly x86-64 intel

8
推荐指数
1
解决办法
7695
查看次数

如何启用icc/icpc警告?

我在Linux上安装了Intel Compiler composer_xe_2013_sp1.3.174.我对icc警告感到困惑.使用简单的程序main.c提供icc,如下所示:

int main(int argc, char **argv) {
  int a = 1;
  unsigned int b = -22;
  if (b = a) {

  }
}
Run Code Online (Sandbox Code Playgroud)

我用命令编译了文件:icc -Wall main.c.令人惊讶的是,该命令在没有任何警告的情况下静默工作.我是否必须打开icc上的警告开关?谢谢

c c++ intel icc

8
推荐指数
2
解决办法
2916
查看次数

如果我包括图书馆,fortran的'matmul'会使用MKL吗?

我正在编写一些代码,我有一个占位符matmul,似乎工作得很好,但我想使用一个LAPACK dgemm实现.我现在只使用gfortran并获得非常好的速度matmul,但我想知道我是否可以变得更好.

目前的电话是:

C = transpose(matmul( transpose(A), B))
Run Code Online (Sandbox Code Playgroud)

where A,BC,是非正方形的double precision矩阵.我可以轻松地为dgemm当前的gfortran实现编写一个包装器LAPACK,但我喜欢我可以将所有这些作为一个函数(而不是担心call一个surbroutine并且必须处理transpose).

我想知道如果我编译ifort和包含MKL,这将matmul神奇地改变MKL dgemm为我没有包装的功能?

fortran intel lapack

8
推荐指数
1
解决办法
1295
查看次数

VMWare中的Intel HAXM安装错误

我自己的处理器支持虚拟化:

在此输入图像描述

我想我也在我的BIOS设置中激活了它.

它是我使用的vmware虚拟机处理器的信息页面(9.0.2 build-1031769)

在此输入图像描述

仍然,当我尝试安装硬件加速执行管理器以启动我的Android虚拟设备时,我采取以下错误:

在此输入图像描述

我该怎么办?

android intel virtual-machine haxm

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

为什么英特尔编译器会忽略英特尔MIC的非时间预取pragma指令?

英特尔编译器在循环内生成以下预取指令,以通过a_ptr指针访问数组:

400e93:       62 d1 78 08 18 4c 24    vprefetch0 [r12+0x80]
Run Code Online (Sandbox Code Playgroud)

如果我手动更改(通过十六进制编辑可执行文件)这到非临时预取:

400e93:       62 d1 78 08 18 44 24    vprefetchnta [r12+0x80]
Run Code Online (Sandbox Code Playgroud)

循环运行快了近1.5倍(!!!).但是,我更喜欢编译器为我生成非时间预取.我以为

#pragma prefetch a_ptr:_MM_HINT_NTA
Run Code Online (Sandbox Code Playgroud)

在循环之前应该做的伎俩,但它实际上没有; 它生成的指令与不完整的pragma完全相同.为什么icpc忽略这个pragma?我怎么强迫它生成非时间预取?

选择.据我所知,报告没有说任何有用的内容:

LOOP BEGIN at test-mic.cpp(56,5)
   remark #15344: loop was not vectorized: vector dependence prevents vectorization
   remark #15346: vector dependence: assumed ANTI dependence between b_ptr line 64 and b_ptr line 65
   remark #15346: vector dependence: assumed FLOW dependence between b_ptr line 65 and b_ptr line …
Run Code Online (Sandbox Code Playgroud)

c++ intel pragma prefetch xeon-phi

8
推荐指数
1
解决办法
705
查看次数

Android Studio虚拟设备安装停留在 - 调用安装程序运行英特尔®HAXM安装程序

错误屏幕截图 我刚刚安装了Android studio,并且正在完成创建新虚拟设备的步骤.我被要求在我选择的同一个向导中下载一些东西,然后点击"接受".这个安装已经进行了很长时间但是没有完成.可以有任何理由吗?我能做什么?

android intel haxm

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