草庐IT

Assembly

全部标签

“Cannot resolve dependency to assembly ‘Microsoft.Windows.Design.Extensibility···”解决方案~

当出现“Cannotresolvedependencytoassembly'Microsoft.Windows.Design.Extensibility”错误时,检查项目中是否存在缺失的程序集引用可以按照以下步骤进行操作:确认是否存在Microsoft.Windows.Design.Extensibility引用Microsoft.Windows.Design.Extensibility不存在时,需要手动添加该库作为引用。在这种情况下,请执行以下操作:   重新生成项目如果项目中存在存在Microsoft.Windows.Design.Extensibility引用:请执行以下操作:1.打开项

c++ - 使用 RGB 源和 RGBA 叠加实现近乎实时的 CPU 功能,如 glAlphaFunc(GL_GREATER)

延迟是这里最大的问题。我发现尝试通过OpenGL将带有RGBA覆盖的3个1920x1080视频源渲染到单个窗口有限制。我能够渲染两个带叠加层的窗口或3个不带叠加层的窗口,但当引入第三个窗口时,渲染停顿很明显。我认为这个问题是由于过度使用glAlphaFunc()来覆盖RGB视频纹理和基于RGBA的纹理。为了减少过度使用,我的想法是将一些覆盖功能移到CPU中(因为我有很多CPU-双六核至强)。执行此操作的理想位置是将源RGB图像复制到映射的PBO并将RGB值替换为A>0的RGBA叠加层中的值。我尝试过使用英特尔IPP方法,但没有一种方法不涉及多次调用并会导致过多的延迟。我试过直接使用C代

c++ - Visual Studio 2017 : _mm_load_ps often compiled to movups

我正在查看为我的代码生成的程序集(使用VisualStudio2017)并注意到_mm_load_ps经常(总是?)编译为movups。我使用_mm_load_ps的数据定义如下:structalignas(16)Vector{floatv[4];}//oftenembeddedinotherstructslikethisstructAABB{Vectormin;Vectormax;boolintersection(/*parameters*/)const;}现在,当我使用这个构造时,会发生以下情况://thiscode__mm128bb_min=_mm_load_ps(min.v);

c++ - 海湾合作委员会 assembly "+t"

我目前正在旧编译器(大约2004年的GCC)上测试C++中的一些内联汇编,我想对float执行平方根函数。在尝试和搜索成功的方法后,我遇到了以下代码floatr3(floatn){__asm__("fsqrt":"+t"(n));returnn;};有效。问题是,即使我理解所使用的汇编指令,我也无法找到关于"+t"标志在n变量上的含义的任何特定文档.我的真实想法是,这似乎是一种将变量n视为输入和输出变量的方式,但我无法找到有关它的任何信息。那么,“t”标志到底是什么,它在这里是如何工作的? 最佳答案 +Meansthatthisop

c++ - 可以使用 movss 指令替换整数数据吗?

由于我只能使用SSE和SSE2指令的限制,我需要用另一个vector中的0元素替换4元素__m128ivector的最低有效(0)元素。对于浮点vector,任务很简单——可以使用_mm_move_ss()内在函数将元素替换为另一个vector中的0元素。它生成一条movss指令,因此效率很高。使用两个转换内在函数,还可以说服编译器使用单个SSEmovss指令来移动整数数据。源代码最终看起来像这样:__m128iNewVector=_mm_castps_si128(_mm_move_ss(_mm_castsi128_ps(Take3FromThisVector),_mm_castsi1

c++ - 是否可以在 C++17 的 GCC 中使用显式寄存器变量?

我正在使用explicitregistervariables使用没有machine-specificconstraints的寄存器将参数传递给原始Linux系统调用(例如x86_64上的r8、r9、r10)按照建议here.#include#ifdef__i386__#define_syscallOper"int$0x80"#define_syscallNumReg"eax"#define_syscallRetReg"eax"#define_syscallReg1"ebx"#define_syscallReg2"ecx"#define_syscallReg3"edx"#define_s

c++ - 我可以通过编程推断出 C++ dll 使用的调用约定吗?

假设您想编写一个程序来测试c++dll文件中的函数。您应该允许用户选择一个dll(我们假设我们正在谈论c++dll)。他应该能够获得dll导出的所有函数的列表。然后,用户应该能够从列表中选择一个函数名称,手动输入参数列表(参数都是基本类型,如int、double、bool或char数组(例如c类型字符串))并尝试使用指定的参数运行选定的函数。他想知道函数是否使用指定的参数运行,或者它们是否会导致它崩溃(例如因为它们与签名不匹配)。主要问题是C++作为一种强类型语言,要求您在编译时知道函数调用的参数的数量和类型。在我的例子中,我根本不知道这些参数是什么,直到用户在运行时选择它们。我想到的

c++ - 推荐的阅读汇编的指南/书籍

关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。我们不允许提问寻求书籍、工具、软件库等的推荐。您可以编辑问题,以便用事实和引用来回答。关闭5年前。Improvethisquestion所以最近我一直在阅读汇编,它是由像ollydbg这样的反汇编程序显示的。我想阅读这个程序集的原因是为了了解其他开发人员如何构建他们的应用程序或程序具有的二进制文件的文件格式。我已经使用C++和C#一段时间了,所以我并不是编程方面的新手。而且我对C++有深入的了解,所以整个指针概念对我来说都很清楚。好吧,我知道互联网上有大量的组装指南,但我不知道本教程的可靠性如何:ht

c++ - 我的汇编代码有什么问题

所以我正在用c++为MS-DOS编写一个游戏,并且为了提高速度我加入了一些内联汇编。这个特定的代码块会在视频内存(0A000h)中绘制一个星号。我的代码的问题在于,无论dh设置为什么颜色,它都只绘制一个像素。据我所知movdx,00007h相当于设置dh为0,dl为7,有什么问题吗?等效的C/C++代码(或至少是我的意图)在每一行旁边都有注释。我的编译器是TurboC++3.0。我试图只使用8086/8088指令。我也知道MS-DOS有多旧,所以不要告诉我为更新的编译器/操作系统编写代码。为dos写代码是我的一种爱好。pixelOffset=x+(y 最佳答

c++ - 必须有一种非常快速的方法来计算这个按位表达式吗?

令v和w为两个位串。在当前应用中,它们由8位组成。我正在寻找计算以下表达式的最快方法。x=(v[1]&w[0])^(v[2]&w[1])^(v[2]&w[0])^(v[3]&w[2])^(v[3])&w[1])^(v[3]&w[0])^...关于这个主题的一些想法:我注意到的一件事是这个表达式也可以写成下面这样。让P(w[k])=w[k]^w[k-1]^...^w[0]表示w的最低k+1位的奇偶性。然后x=(v[1]&P(w[0]))^(v[2]&P(w[1]))^(v[3]&P(w[2]))^...^(v[7]&P(w[6]))现在如果Pw是一个位串,其中每个位表示低位的奇偶校验,即