草庐IT

arm汇编

全部标签

c++ - 在 ARM 上使用 Qt 的简单程序中的段错误

我正在尝试在ARM系统上使用Qt4.7.4,以便在触摸屏上显示图形应用程序。我的ARM卡内嵌了Linux系统;我们使用Linuxframebuffer向屏幕发送信息,tslib+usbtouchscreen驱动获取触摸信息。我能够交叉编译Qt并将库放在我的系统上。但是当我启动我的测试程序时,我每次都在同一时刻遇到段错误(没有逻辑原因)。首先,这是我的测试程序(你可以看到它非常基础,没有理由出现段错误):#include#includeintmain(intargc,char*argv[]){QApplicationapp(argc,argv);QMessageBoxmsgBox;msg

如何访问汇编x86中的2D数组

如何在组装中使用2D数组?我宣布intarray[100][2]在C中,我想访问array[4][0]在组装中看答案在C中,array[i][j]是相同的:*(*(array+i)+j)当您在C中添加指针时,它会自动考虑指向的类型的大小。在集会中不是这种情况,因此您必须自己做。基本公式只是:(offsetof(array)+(sizeof(int)*i))+(sizeof(int)*j)自int几乎可以肯定的是4个字节,大会等同于:inttemp=array[4][0];将会:moveax,DWORDPTR[array+16]因为(4*4)+(0*4)==16。

c# - 组合 C# 和 C++ 项目适用于 x86 和 x64,但不适用于 ARM

我的解决方案中有两个项目。一个是C#通用应用程序,另一个是C++项目(从here获得)并重新定位到Windows8.1(这是在我导入项目时由VisualStudio15执行的)。我从我的C#项目中引用了C++项目,并将CopyLocal设置为true。代码构建完美适用于所有三个平台(x86、x64和ARM)。但是,当部署到ARM设备时,在我尝试访问C++代码的行上抛出了一个异常。在x86和x64版本上,这不是问题,代码工作得很好。异常是System.IO.FileNotFoundException和hereisapastebinoftheexceptionindetail.我对这个异常

c++ - 内联汇编程序调用子程序

我对内联汇编程序有疑问。可以在同一个函数中从内联汇编程序调用另一个汇编程序子例程吗?例如:voidFindValidPID(unsignedint&Pid){__asm{subesp,20hmoveax,Pidaddeax,eaxcallsub123;anotherassmsubroutinemovPid,eaxaddesp,20h}}我应该在哪里以及如何编写子例程sub123?干杯,托马斯 最佳答案 如果您在汇编中编写整个子例程,您应该考虑使用文件级汇编器而不是内联。 关于c++-内联

c++ - 如何从汇编代码中找出函数原型(prototype)?

我有一些汇编代码,我想找出调用函数的原型(prototype),以便我可以从C++代码中调用所有函数。我真正想做的是将一个dll注入(inject)到正在运行的进程中,并从我的dll中调用正在运行的进程的函数。现在我已经成功注入(inject)了我的dll但不知道如何进行“调用”。我是新手,对汇编代码了解不多。我的dll是用visualc++2012编写的。这是运行过程的代码:CPUDisasmAddressHexdumpCommandComments6013BE24/$53PUSHEBX6013BE25|.8B1D10461860MOVEBX,DWORDPTRDS:[60184610

c++ - 检索 x64 masm 汇编过程的参数

我有一个带有签名的函数:extern"C"intfoo(inta,intb,intc,intd,inte);实际上是用汇编写的。使用ml(32位),使用标准调用约定,您几乎可以编写.codefooPROCa:DWORD,b:DWORD,c:DWORD,d:DWORD,e:DWORDmoveax,dmovebx,e并开始使用这些标签来访问您的论点对于ml64(64位),fastcall是唯一可用的约定。我可以毫无问题地访问存储在寄存器中的第一个参数,但访问堆栈中的参数时会出现问题(本例中为e):我试过了.codefooPROCa:DWORD,b:DWORD,c:DWORD,d:DWORD

【macOS-OpenCV报错】ld: warning:ignoring file found architecture ‘x86_64‘, required architecture ‘arm64

如果之前用的mac是英特尔intel芯片的,然后换了macM1或M2芯片的。在使用OpenCV时会报错ld:warning:ignoringfile'/usr/local/Cellar/opencv/4.7.0_7/lib/libopencv_gapi.4.7.0.dylib':foundarchitecture'x86_64',requiredarchitecture'arm64'ld:warning:ignoringfile'/usr/local/Cellar/opencv/4.7.0_7/lib/libopencv_bgsegm.4.7.0.dylib':foundarchitectur

x86 和 x64 arm的区别

x86和x64是基于英特尔x86架构的复杂指令集架构(ISA),而ARM是一种精简指令集架构。什么是指令集架构假设我们现在要开发一个cpu,就好比说我们去修建一栋楼,开发商会先将图纸设计好。设计好之后由施工单位按照设计图去建造。在建造的这个过程中,施工方是要按照国家一定的规范来设计的,比如每层楼的高度,窗户的大小,排水管大小以及消防通道的设置等,这个设计规范对于这栋楼(CPU)来说就是指令集架构。指令集架构就是机器的语言,包含了各种各样的指令,像我们常见的x86个arm就是两个不同的指令集架构。像是Intel(英特尔)和amd都是采用x86指令级架构,而手机平板等才用的大多就是ARM指令集架构

c++ - 如何查看Code::Blocks中的反汇编?

我读了thisarticle关于C/C++的一些底层基础,作者基本上是通过编译器生成的汇编代码逐行向我们展示。他用的是VS2010,我不用,我用的是Code::Blocks。我如何查看那里的反汇编?当我转到调试器并单击反汇编时,它会显示一个空白窗口...这是我编译的C++(.cpp)代码(完整代码):intmain(){intx=1;inty=2;intz=0;z=x+y;return0;} 最佳答案 作者在文章中展示的反汇编称为inter-leaveddisassembly(C和反汇编交错),VisualStudio等一些IDE支

Mac M1(arm 系列芯片)如何安装 Chromium | Puppeteer

最近写个脚本用到puppeteer,然后安装Chromium出现一点问题,这里记录一下解决方案。Puppeteer自动安装失败在Puppeteer安装时会自动安装Chromium,然而却总是报错502导致下载失败,直接下载可以下载,命令行wget也可以,猜测是因为Puppeteer开启了新的process来安装导致环境变量丢失,然后就玄学上网失败了。这会回头看了看Puppeteer的安装脚本,好像可以使用npm_config_https_proxy等配置来玄学上网。functionoverrideProxy(){//Overridecurrentenvironmentproxysettings