草庐IT

IDA反汇编

全部标签

c++ - 如何查看 C++ 程序的汇编代码?

如何查看C++程序的汇编代码?有哪些流行的工具可以做到这一点? 最佳答案 询问编译器如果您自己构建程序,您可以要求您的编译器发出汇编源代码。对于大多数UNIX编译器,使用-S开关。如果您使用的是GNU汇编器,使用-g-Wa,-alh编译将在标准输出上提供混合的源代码和汇编(-Wa询问编译器驱动程序将选项传递给汇编器,-al打开汇编列表,-ah添加“高级源”列表):g++-g-c-Wa,-alhfoo.cc对于VisualStudio,请使用/FAsc.查看二进制文件如果您有已编译的二进制文件,在UNIX上使用objdump-da.o

c++ - 64 位应用程序和内联汇编

我正在使用VisualC++2010开发32位Windows应用程序。有些东西我真的很想使用内联汇编。但我刚刚意识到,VisualC++不支持64位应用程序中的内联汇编。所以future移植到64位是个大问题。我不知道64位应用程序与32位应用程序有何不同。future32位应用程序是否有可能全部升级到64位?我听说64位CPU有更多的寄存器。由于性能不是我的应用程序关心的问题,因此使用这些额外的寄存器对我来说不是一个问题。是否还有其他原因需要将32位应用程序升级到64位?除了64位应用程序可能使用64位CPU独有的寄存器或指令之外,64位应用程序与32位应用程序处理事情是否会有所不同

c++ - 64 位应用程序和内联汇编

我正在使用VisualC++2010开发32位Windows应用程序。有些东西我真的很想使用内联汇编。但我刚刚意识到,VisualC++不支持64位应用程序中的内联汇编。所以future移植到64位是个大问题。我不知道64位应用程序与32位应用程序有何不同。future32位应用程序是否有可能全部升级到64位?我听说64位CPU有更多的寄存器。由于性能不是我的应用程序关心的问题,因此使用这些额外的寄存器对我来说不是一个问题。是否还有其他原因需要将32位应用程序升级到64位?除了64位应用程序可能使用64位CPU独有的寄存器或指令之外,64位应用程序与32位应用程序处理事情是否会有所不同

c++ - 在 C++ 或汇编中从头开始创建 GUI

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我在GUI库方面有过很多不好的经历所以我想知道如何在C++中从头开始创建一个窗口我不是在说win32,我的意思是基本上是自己创建,没有任何外部库有什么方法可以使用图片或其他东西来创建一个窗口是的,我知道这有多难。我还在某处读到了可以在汇编中为c++制作库有没有办法在汇编或c++中创建自定义gui编辑:我只针对windowPS:我想学习如何做到这一点的另一个原因是因为我可能想实际创建一个操作系统。所以我想

c++ - 在 C++ 或汇编中从头开始创建 GUI

关闭。这个问题需要更多focused.它目前不接受答案。想要改进这个问题吗?更新问题,使其只关注一个问题editingthispost.关闭6年前。Improvethisquestion我在GUI库方面有过很多不好的经历所以我想知道如何在C++中从头开始创建一个窗口我不是在说win32,我的意思是基本上是自己创建,没有任何外部库有什么方法可以使用图片或其他东西来创建一个窗口是的,我知道这有多难。我还在某处读到了可以在汇编中为c++制作库有没有办法在汇编或c++中创建自定义gui编辑:我只针对windowPS:我想学习如何做到这一点的另一个原因是因为我可能想实际创建一个操作系统。所以我想

c++ - GCC 内联汇编中的标签

在我正在进行的GCC内联汇编实验中,我遇到了一个关于标签和内联代码的新问题。考虑以下简单的跳转:__asm__("jmpout;""out:;"::);除了跳转到out标签之外什么都不做。照原样,这段代码编译得很好。但是如果你把它放在一个函数中,然后用优化标志编译,编译器会报错:“错误:符号'out'已经定义了”。似乎正在发生的事情是编译器每次内联函数时都会重复此汇编代码。这会导致标签out重复,从而导致多个out标签。那么,我该如何解决这个问题?内联汇编中真的不能使用标签吗?这个tutorialonGCCinlineassembly提到:Thus,youcanmakeputyoura

c++ - GCC 内联汇编中的标签

在我正在进行的GCC内联汇编实验中,我遇到了一个关于标签和内联代码的新问题。考虑以下简单的跳转:__asm__("jmpout;""out:;"::);除了跳转到out标签之外什么都不做。照原样,这段代码编译得很好。但是如果你把它放在一个函数中,然后用优化标志编译,编译器会报错:“错误:符号'out'已经定义了”。似乎正在发生的事情是编译器每次内联函数时都会重复此汇编代码。这会导致标签out重复,从而导致多个out标签。那么,我该如何解决这个问题?内联汇编中真的不能使用标签吗?这个tutorialonGCCinlineassembly提到:Thus,youcanmakeputyoura

c++ - 在 C/C++ 中使用汇编语言

我记得在某处读到过,为了真正优化和加速代码的某些部分,程序员用汇编语言编写了该部分。我的问题是——这个练习还做吗?以及如何做到这一点?用汇编语言编写是不是有点太麻烦和过时了?当我们编译C代码(有或没有-O3标志)时,编译器会做一些代码优化&链接所有库&将代码转换为二进制目标文件。所以当我们运行程序时,它已经是最基本的形式,即二进制。那么诱导“汇编语言”有什么帮助呢?我正在尝试理解这个概念,非常感谢任何帮助或链接。更新:按照dbemerlin的要求改写第3点-因为您可能能够编写比编译器生成的更有效的汇编代码,但除非您是汇编专家,否则您的代码可能会运行得更慢,因为编译器通常比大多数人能更好

c++ - 在 C/C++ 中使用汇编语言

我记得在某处读到过,为了真正优化和加速代码的某些部分,程序员用汇编语言编写了该部分。我的问题是——这个练习还做吗?以及如何做到这一点?用汇编语言编写是不是有点太麻烦和过时了?当我们编译C代码(有或没有-O3标志)时,编译器会做一些代码优化&链接所有库&将代码转换为二进制目标文件。所以当我们运行程序时,它已经是最基本的形式,即二进制。那么诱导“汇编语言”有什么帮助呢?我正在尝试理解这个概念,非常感谢任何帮助或链接。更新:按照dbemerlin的要求改写第3点-因为您可能能够编写比编译器生成的更有效的汇编代码,但除非您是汇编专家,否则您的代码可能会运行得更慢,因为编译器通常比大多数人能更好

c++ - x86 汇编中的 "lock"指令是什么意思?

我在Qt的源代码中看到了一些x86程序集:q_atomic_increment:movl4(%esp),%ecxlockincl(%ecx)mov$0,%eaxsetne%alret.align4,0x90.typeq_atomic_increment,@function.sizeq_atomic_increment,.-q_atomic_increment从谷歌上,我知道lock指令会导致CPU锁定总线,但不知道CPU什么时候释放总线?关于上面的整个代码,我不明白这段代码是如何实现Add的? 最佳答案 LOCK本身不是指令:它是指