草庐IT

IDA汇编

全部标签

c++ - GDB - 神秘的汇编代码是什么?

Dumpofassemblercodeforfunctionmain:0x0804833e:push%ebp0x0804833f:mov%esp,%ebp0x08048341:sub$0x8,%esp0x08048344:and$0xfffffff0,%esp0x08048347:mov$0x0,%eax0x0804834c:add$0xf,%eax0x0804834f:add$0xf,%eax0x08048352:shr$0x4,%eax0x08048355:shl$0x4,%eax0x08048358:sub%eax,%esp=>0x0804835a:movl$0x10,-0x4(

c++ - 在 C++ 中嵌入汇编器可以接受吗?

如果您正在编写一个对延迟非常敏感的应用程序,那么在C++函数中嵌入汇编程序(并正常使用C++函数调用)的限制是什么,如下所示:inline__int64GetCpuClocks(){//Counterstruct{int32low,high;}counter;//UseRDTSCinstructiontogetclockscount__asmpushEAX__asmpushEDX__asm__emit0fh__asm__emit031h//RDTSC__asmmovcounter.low,EAX__asmmovcounter.high,EDX__asmpopEDX__asmpopEAX

c++ - 一种为特定内联函数强制汇编列表的方法,更好的方法?

我需要能够使用GCC查看特定函数的汇编输出。我使用-S,但有时如果函数是内联的,则不会输出该函数的单独汇编代码。我不想完全阻止内联,因为我也在做性能基准测试,我想为此进行内联。我知道选项-fkeep-inline-functions,但遗憾的是这适用于每个函数,我不想让我的汇编输出文件膨胀包含数千行标准库汇编代码。我确实发现,如果您使用函数的地址,它不会从汇编输出中优化。知道这一点后,我一起破解了以下宏:#defineDONT_OPT_OUT_CONCAT1(a,b)DONT_OPT_OUT_CONCAT2(a,b)#defineDONT_OPT_OUT_CONCAT2(a,b)a##

c++ - GCC 内联汇编中的一个简单的 while 循环

我想使用GCC扩展内联ASM编写以下循环:long*arr=newlong[ARR_LEN]();long*act_ptr=arr;long*end_ptr=arr+ARR_LEN;while(act_ptr一个长度为ARR_LEN的long类型的数组被分配并初始化为零。循环遍历数组,增量为STEP_SIZE。每个触摸的元素都设置为SOME_VALUE。好吧,这是我在GAS中的第一次尝试:long*arr=newlong[ARR_LEN]();asmvolatile("loop:""movl%[sval],(%[aptr]);""leal(%[aptr],%[incr],4),%[ap

c++ - 如何将 C++ 子例程链接到 x86 汇编程序?

我正在尝试制作一个打印“Hello!”的简单汇编程序。一次,等待一秒钟,然后再次打印。由于sleep函数在汇编中相对复杂,而且我不太擅长,所以我决定使用C++来制作Sleep子例程。这是C++程序://Sleep.cpp#include#includevoidSleep(intTimeMs){std::this_thread::sleep_for(std::chrono::milliseconds(TimeMs));}然后我使用“gcc-SSleep.cpp”将这个sleep函数编译成一个汇编程序,然后使用“gcc-cSleep.s”将它编译成一个目标文件我正在尝试从程序集调用此C++

c++ - 在 gcc 编译器中使用 bts 汇编指令

我想使用bts和btx86汇编指令来加速我在Mac上的C++代码中的位操作。在Windows上,_bittestandset和_bittest内部函数运行良好,并提供显着的性能提升。在Mac上,gcc编译器似乎不支持这些,所以我尝试直接在汇编程序中进行。这是我的C++代码(请注意,“位”可以>=32):typedefunsignedlongLongWord;#defineDivLongWord(w)((unsigned)w>>5)#defineModLongWord(w)((unsigned)w&(32-1))inlinevoidSetBit(LongWordarray[],const

php - 如何将汇编代码嵌入到php中?

我想使用汇编代码来处理一些与使用PHP的性能有关的关键任务。我怎样才能做到这一点?我之前搜索过,但一无所获。 最佳答案 我相信您在谈论扩展PHP。您可以通过用C语言创建自定义扩展来做到这一点。您会找到一个关于如何操作的简单教程here 关于php-如何将汇编代码嵌入到php中?,我们在StackOverflow上找到一个类似的问题: https://stackoverflow.com/questions/19512762/

android - android 上的 ffmpeg neon 编译 - 汇编程序错误

我正在尝试编译ffmpegforandroidwithneonsupport,但我遇到了以下汇编错误。请让我知道是否有人对此有任何线索?/home/user1/android-ndk-r5b/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/arm-linux-androideabi-gcc-MMD-MP-MF/home/user1/workspace/FFMPEGFinal/obj/local/armeabi-v7a/objs/ffmpeg/libavcodec/arm/rdft_neon.o.d.org-fp

Android - 在 x86 汇编程序中调用 C 函数而不重新分配文本

gas中函数的定义附加在文本部分的末尾。例如,这定义了函数foo:.text.globlfoofoo:一切正常,在您想要在asm函数体内调用C函数之前。添加call指令(使用x86汇编程序)导致warning:sharedlibrarytextsegmentisnotshareable当由AndroidNDK编译时由于文本重新分配(你可以用它们编译库,但API小于23)我在汇编程序方面不是很有经验,所以我的问题是:我能否以某种方式从asm函数调用C函数而不进行文本重新分配?也许我可以将函数定义移到另一部分(如果可能),或者替换call?我正在使用x86汇编器和gas语法

android - 如果我尝试使用 arm 数学汇编程序命令而不是 c,我会获得性能奖励吗

我的应用程序中有一个循环,可以在其中执行数学乘法和加法计算。我知道一些事实:android设备支持armv6及更高版本的处理器armv6不支持NEON命令如果我开始使用汇编数学命令而不是c数学命令,我是否会提高armv6上应用程序的性能,包括和更高版本?更新我需要更快地执行带有数学运算的循环,这是使用汇编程序而不是c的正确方法。更新我有这样的计算:Ry0=(b0a0*buffer[index]+b1a0*Rx1+b2a0*Rx2-a1a0*Ry1-a2a0*Ry2);它是双二阶传递函数。我可以强制使用asm更快地执行此计算吗?更新缓冲区大小为192000变量为float类型