草庐IT

IDA汇编

全部标签

java - 为什么Java编译成汇编两次?

这个问题在这里已经有了答案:Whatexactlydoes-XX:-TieredCompilationdo?(3个答案)关闭3年前。我在MacOSX上使用Java8编译了一个简单的Java文件以进行汇编。这是Test.java:publicclassTest{staticvolatileinta=1;publicstaticvoidmain(String[]args){a++;}}我输出汇编代码使用:java-server-Xcomp-XX:+UnlockDiagnosticVMOptions-XX:-Inline-XX:CompileCommand=print,*Test.mainT

Java汇编 /软件包 /名称空间错误

这是基本Java有史以来最愚蠢,最简单的问题,但是我在做什么错?在称为目录结构中com/myname/robos-Robo.java-Arena.javarobo.java:packagecom.myname.robos;publicclassRobo{publicvoidfala(){System.out.println("GleepBeepBoop!");}}Arena.java:packagecom.myname.robos;importcom.myname.robos.Robo;publicclassArena{publicstaticvoidmain(String[]args){Ro

c++ - 用 C 或汇编制作一个简单的 CRT0

我回到了C/C++和ASM,我想玩点火。我发现,当您将代码编译并链接到Windows的可执行文件中时,它会动态链接到某些库,这些库必须存在于预期运行该应用程序的任何计算机上。您可以指定编译器不链接它们并为此创建您自己的库。除此之外(如果我在这里所说的一切都错了,请纠正我)还有一个目标文件,它始终被编译并链接到我们应用程序的主要代码中。它是crt0.o(C运行时)文件,据我所知,它准备堆栈,获取argc和argv并调用main函数(可能还有其他东西)。我也相信这是系统在执行应用程序时调用的第一段代码。因此,我正在尝试创建一个简单的crt0.obj并将其链接到一个简单的C++对象文件int

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等……然后以某种方式将其转换为十六进制吗?或者有任何

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在这里是如何设计的吧。欢迎大家📂收藏📂以便