草庐IT

gdb dis 反汇编

全部标签

c++ - 多线程内联汇编

我正在尝试在T4机器上快速创建大量sha256哈希。T4有一条“sha256”指令,允许我在一个操作码中计算哈希值。我创建了一个内联汇编模板来调用sha256操作码:在我的C++代码中:extern"C"{voidProcessChunk(constchar*buf,uint32_t*state);}pchunk.il:.inlineProcessChunk,8.volatile/*copystate*/ldd[%o1],%f0/*load8bytes*/ldd[%o1+8],%f2/*load8bytes*/ldd[%o1+16],%f4/*load8bytes*/ldd[%o1+2

c++ - 需要用 C 或 C++ 编写 MIPS 汇编程序,寻找一些设计建议

我需要用C/C++编写MIPS汇编器。在我开始编写一些代码之前,我认为我实际上应该花一些时间并先做一些计划。我需要考虑大约15条MIPS指令,包括J,但不包括JR。该程序需要接收一个包含.text、.data和.word部分以及标签的文件,然后输出一个文件,该文件的第一行以十进制形式显示指令数和数据字数。剩下的就是十六进制编码的机器码。最后一组行由十六进制值组成,表示数据段中单词的初始值。我知道我需要做2遍才能首先解析标签和JUMP指令。基本上我只是在寻找有关如何设置数据结构的建议。我应该做一个字符串数组来保存操作码、RS、RT、RD等……然后以某种方式将其转换为十六进制吗?或者有任何

java - 在 java 中,我们可以通过使用 javap 反汇编程序来探索 java 类和方法。如何在 C++ 中做同样的事情?

我是这个社区的新手,所以,如果我在错误的部分提出这个问题而违反了我们社区的任何条款和条件,那么我很抱歉。我一直在寻找上述问题的答案很长一段时间,但没有一个结果是相关的。我只是想知道在java中我们能够通过使用javap探索java类方法,如何在c++中做同样的事情???假设,我想查看java中String类的所有方法,我会使用javap来显示它的所有方法、它们的返回类型、它们的参数数量和它们的数据类型等。如何在C++中做同样的事情???还有一种命令行方式可以用java语言探索特定包中的所有包和类吗???假设java**java.awt.*或任何此类方法来了解特定包内的所有包和类。

c++ - 为什么简单地使用 ostringstream 会生成这么多汇编代码?

考虑以下使用ostringstream格式化字符串和整数并丢弃输出的简单示例:#includevoidostringstream_test(){std::ostringstreamss;ss使用clang++-S-O3-DNDEBUG-std=c++14test.cc编译它会生成大量汇编代码(x86-64指令为半千字节,而不到百字节的类似sprintf代码)-请参阅下面的输出。为什么它会生成这么多代码,是ostringstreamAPI固有的还是这个特定的编译器/库做错了什么?.globl__Z18ostringstream_testv.p2align4,0x90__Z18ostrin

c++ - MIPS 上 C++ 和汇编代码的微架构分析

作为类(class)项目的一部分,我需要分析一段C++代码的性能,并找出计算机体系结构(MIPS或x86)的哪些部分在运行代码时最常被使用,并且可能是性能瓶颈。我正在查看各种分析器来分析性能并遇到了SimpleScalar这是一个很棒的工具,但遗憾的是只适用于C代码。因为我比较熟悉MIPSarchitecture如果有像SimpleScalar这样的工具来模拟和分析MIPS的C++代码,那就太好了。我正在查看分支、缓存、指令集、寻址模式等性能关键部分。如果没有,提及任何可以对x86架构进行类似分析的工具也很好。(澄清一下,我不是在寻找任何旧的分析器,而是在寻找一个了解CPU微体系结构并

c++ - 加载前修改汇编指令

我有一个DLL需要加载(我已经编写并编译了它),我想在将DLL加载到内存之前在汇编代码的现有指令之间插入指令。当然,您不能只读取每个字节并将它们插入其中,因为指令有时是多个字节。我正在考虑使用Udis86之类的东西,一条一条地读取指令,然后将它们写入内存,然后在它们之间编写我的其他指令。这是一个好方法还是有更好的方法? 最佳答案 转移指令不是一个好主意。许多x86指令都取决于它们的位置,所以如果你移动它们,你可能会破坏很多东西。您可以做的是在需要修补的地方复制指令;将jmp修补到某个空闲区域,然后在该空闲区域放置复制的指令、您的额外

c++ - 如何从 C++ 代码中删除此汇编代码?

我的环境是VisualStudio2008。我有3个不同的库。总结起来,它们的行为等同如下。库1-提供要注册的函数classFunctionRegistry{typedefstd::listTListInt;TListIntm_Params;void*m_FPtr;public:FunctionRegistry(void*fptr):m_FPtr(fptr){}FunctionRegistry&Insert(intvalue){m_Params.push_back(value);return*this;}voidCall();};voidFunctionRegistry::Call()

【C++】 为什么多继承子类重写的父类的虚函数地址不同?『 多态调用汇编剖析』

👀樊梓慕:个人主页 🎥个人专栏:《C语言》《数据结构》《蓝桥杯试题》《LeetCode刷题笔记》《实训项目》《C++》《Linux》《算法》🌝每一个不曾起舞的日子,都是对生命的辜负前言本篇文章主要是为了解答有关多态的那篇文章那块的一个奇怪现象,大家还记得这张图片么?你有没有发现:子类重写的func1函数地址竟然是不同的?按常理讲:我们知道函数地址存储的是函数的指令的位置,这里『应该是相同』的,才能保证对象在调用时都调用『子类重写后的』func1方法 ,否则就失去了重写的意义了。所以这里一定存在某些底层设计,那接下来就让我们转到『反汇编』,来查看以下vs在这里是如何设计的吧。欢迎大家📂收藏📂以便

c++ - 相对于 C 的内联汇编性能优势

首先,请原谅我,因为我的问题可能看起来很愚蠢,但我真的很好奇为什么我在这个非常简单的代码中获得了性能提升。这里是汇编代码:__asm{moveax,0movecx,0jmpstartloopnotequal:inceaxmovecx,eaxsubecx,2startloop:cmpeax,2000000000jnenotequal};这是C代码:longx=0;longii=0;for(;ii在我的i52500k机器上完成C代码大约需要1060毫秒(在发布版本中),汇编在780毫秒内完成。速度提高了约25%。我不明白为什么会得到这个结果,因为25%相差很大。编译器不够聪明,无法生成与我

c++ - 汇编代码中的静态值

我有以下简单代码:#includestructinit_sin{typedefdoubletype;staticconstexprtypevalue(intindex){return3*std::pow(std::sin(index*2.0*3.1415/20.0),1.999);}};intmain(){staticdoubleVALUE=init_sin::value(10);doubleVALUE_NONSTAT=3*std::pow(std::sin(10*2.0*3.1415/20.0),1.999);returnint(VALUE_NONSTAT);}我想找出给定片段的汇编