草庐IT

IDA反汇编

全部标签

linux - 如何在 Linux 下使用汇编和系统调用动态分配内存

我正在寻找一些在Linux下使用汇编语言和使用系统调用而不是malloc和friend的动态内存分配的好代码示例。有哪些最简单但有效的方法可以做到这一点?在Intel386+计算机上。 最佳答案 在Linux上,mmap2是一个明智的系统调用,可用于低级别。它需要6个参数,因此在IA32中你可以使用以下方式调用它:moveax,192;mmap2xorebx,ebx;addr=NULLmovecx,4096;len=4096movedx,$7;prot=PROT_READ|PROT_WRITE|PROT_EXECmovesi,$22

c - 我怎样才能用gcc编译成汇编

如何使用gcc编译成程序集而不是可执行文件。我知道有一个-S标志,但我在makefile中的什么地方使用它。例如,如果我使用标志-O3-oexe_name,我应该将-S标志放在哪里? 最佳答案 我还建议使用-fverbose-asm,因为这样生成的汇编程序会生成一些注释,“解释”代码。例如:gcc-S-fverbose-asm-O2foo.c将在foo.s中生成(带有一些注释)通过编译foo.c生成的汇编代码要了解GCC优化的作用,甚至可以尝试-fdump-tree-all(但这会产生数百文件!)。

从 c 调用汇编函数

我正在尝试在汇编中使用一个从C项目调用的函数。这个函数应该调用一个libc函数,比方说printf(),但我一直遇到段错误。在.c文件中我有函数声明intdo_shit_in_asm()在我的.asm文件中.externprintf.section.dataprinttext:.ascii"test".section.text.globaldo_shit_in_asm.typedo_shit_in_asm,@functiondo_shit_in_asm:pushl%ebpmovl%esp,%ebppushprinttextcallprintfmovl%ebp,%esppop%ebpre

c++ - 在 C/C++ 程序中使用汇编程序优化某些功能真的值得吗?

在某些开发领域,例如游戏开发、实时系统等,拥有一个快速且优化的程序非常重要。另一方面,现代编译器已经进行了大量优化,在一个需要考虑截止日期的世界中,在汇编中进行优化可能会很耗时。问题:正在使用Assembly优化某些功能C/C++程序真的值得吗?真的有足够的收获吗?优化C/C++时的性能与今天的assembly程序现代编译器?我对发布的答案的理解是,在某些领域,例如嵌入式系统、多媒体编程(图形、声音等),可以获得的任何yield都很重要。此外,与现代编译器相比,需要有能力(或有能力)在汇编中做得更好。做一些真正优化的C/C++可以花费更少的时间并且可以做得足够好。最后一件事,学习汇编可

c++ - C++ 中的汇编代码

我想学习阅读编译器生成的汇编代码。我在哪里以及如何评估从C++生成的汇编代码?谢谢 最佳答案 您的编译器可能具有生成汇编代码输出的选项,可选择与相应的源代码交错。在MicrosoftVisualC++v10中,这是/Fa.或者,只需在调试器中并排查看这两个。无论您怎么看,请务必比较使用和未优化构建的版本。看到今天的编译器可以丢弃多少而不影响程序的运行,真是令人惊讶。 关于c++-C++中的汇编代码,我们在StackOverflow上找到一个类似的问题: htt

c++ - VS Code 是否有用于 C++ 扩展的内存查看器和/或反汇编器?

我正在使用VisualStudioCode(VSCode)来调试我的C++程序。我想查看变量地址的内存,也可以查看我的程序的汇编代码。我在VSCode上环顾四周,但没有看到此类View的选项。我在市场上查了一下,没有任何东西。不确定我是否没有找对地方,但是VSCode是否存在这些功能? 最佳答案 第一次问这个问题时,反汇编View和内存查看器都不可用。2021年7月,disassemblyview已发布,可以通过单击编辑器上下文菜单中的“打开反汇编View”来打开。通用C++调试器调试器都支持这一点,并且LLDB调试器有一个“切换反

java - 反汇编 Java JIT 编译的原生字节码

有没有办法对Java即时编译器生成的native代码进行汇编转储?还有一个相关的问题:有没有什么方法可以在不运行JVM的情况下使用JIT编译器将我的代码编译为native代码? 最佳答案 是的,thereisaway打印生成的native代码(需要OpenJDK7)。不,没有办法使用JDK的JIT将Java字节码编译为native代码并将其保存为native可执行文件。即使这是可能的,它也可能没有你想象的那么有用。JVM做了一些非常复杂的优化,如果需要,它甚至可以动态地去优化代码。换句话说,它并不像JIT将您的代码编译为本地机器语言

arm汇编指令——分析问题的利器

文章目录arm汇编指令为什么重要1.主导问题2.arm汇编指令分类介绍通用寄存器状态寄存器数据转移指令寻址格式运算指令比较指令跳转指令3.反汇编接口4.反汇编分析举例test1test2test3test4test5test6test7arm汇编指令为什么重要 分析问题中会涉及到看反汇编代码,通过反汇编code推断代码逻辑,从而更快更准确定位问题点,所以学会看反汇编代码是必要的。 下面将我工作中用到的一些常用汇编知识分享给大家,欢迎交流补充!1.主导问题什么是寄存器?CPU的运算速度是非常快的,为了性能CPU在内部开辟一小块临时存储区域,并在进行运算时先将数据从内存复制到这一小块临时存储区域中

ARM汇编基础指令集

ARM汇编基础指令集一、Cortex-A的内核寄存器组二、赋值指令MOV、LDR1、MOV2、LDR三、算数指令ADD、SUB、MUL1、ADD加法2、SUB减法3、MUL乘法四、移位指令LSL、LSR1、LSL左移位2、LSR右移位五、逻辑位指令AND、ORR、MVN、EOR1、AND与2、ORR或3、MVN非4、EOR异或六、跳转指令B、BL1、B直接跳转2、BL暂存当前位置后直接跳转七、比较指令CMP:EN、EQ、GT、LT、GE、LE八、单个内存读写指令LDR、STR1、LDR读取内存的地址2、STR写入内存的地址九、多个内存读写指令STM、LDM1、STM2、LDM一、Cortex-

c++ - GCC 从 c++ 程序生成的汇编代码中的 .cfi 和 .LFE 是什么?

我有以下c++代码intfactorial(intn){if(n==0){return1;}returnn*factorial(n-1);}intmain(void){factorial(5);return0;}当我使用g++-Sfactorial.cpp创建程序集文件时,我得到以下信息:.file"tail_call_opt.cpp".text.globl_Z9factoriali.type_Z9factoriali,@function_Z9factoriali:.LFB0:.cfi_startproc.cfi_personality0x0,__gxx_personality_v0p