64位WindowsABI定义了一个通用的exceptionhandlingmechanism,我相信它在C++异常和结构化异常之间共享,甚至在其他语言(如C)中也可用。如果我正在编写要在nasm中编译并链接到C或C++库的x86-64汇编例程,那么在生成展开信息和等等?我不打算直接在汇编代码中生成任何异常,尽管我认为如果用户提供的缓冲区无效等,代码可能会出现访问冲突。我希望编写尽可能少的代码来让它工作,尤其是nasm似乎对生成展开信息的支持很差,而使用MASM则不是这个跨平台项目的一个选项。我确实需要使用(因此保存和恢复)非volatile寄存器。 最佳答
如何将汇编文件编译并链接到驱动程序构建中。澄清一点源文件:TARGETTYPE=DRIVERDRIVERTYPE=WDMTARGETPATH=objTARGETNAME=blaINCLUDES=$(DDK_INC_PATH)TARGETLIBS=$(DDK_LIB_PATH)\ks.libSOURCES=x.cppy.cppz.asmz.asm文件出现问题。NMAKE提示它不知道如何构建z.obj。那么问题来了,如何得到用build组装的asm文件并链接到bla.sys。 最佳答案 您是否尝试过I386_SOURCES?例如SOUR
作为一名经验丰富的程序员,问这样一个问题我觉得很愚蠢:是否有分步教程解释如何用LLVM汇编语言编写“HelloWorld”程序,生成一个简单的“hello.exe”哪些可以在标准WindowsPC上执行?我遵循了几十个这样的教程,解释了如何检查、制作、编译llvm等。但是他们要么需要一些其他软件(这会导致另一个教程-Marathon),要么他们以一些“路径/文件/Dll”结束未找到”-错误(导致另一个教程-马拉松)。我实现了让llvm.exe执行...一次。现在Windows报告应用程序崩溃了?!现在我完全迷失在过时的教程、错误、不兼容、模拟器/虚拟机、IDE、交叉链接、32位与64位
有人可以指出有关此主题的一些当前最新资源吗?像任何东西一样搜索过,但像Iczelion的大多数教程都已有十年历史,不再流行。 最佳答案 “不再是最新的”并不意味着信息没有用。几乎所有关于Win32汇编语言的信息仍然适用——即使是Win95代码仍然可以在Windows7中运行,只要你不依赖任何奇怪的hack(和IIRC,教程不教这样的黑客)。一旦学习了基本的Win32程序集(即:Iczelion的教程),剩下的就是新函数、结构等。而这只是MSDN文档的简单翻译。一切都以相同的方式工作。 关
我希望能够看到我的Arduino草图的汇编语言列表。我怎样才能做到这一点?更新:我在Windows机器上运行Arduino软件。 最佳答案 一种方法是在构建创建的.elf文件上使用avr-objdump。例如,在OSX上我可以这样做:$cd~/arduino-0015/examples/Digital/Blink/applet$avr-objdump-dBlink.elf(显然,您在Windows上的路径可能不同。)这会生成代码的反汇编,其中一部分看起来像这样:0000013a:13a:0e943e01call0x27c13e:0e
如何在xcode6中使用iOS设备运行应用程序时查看编译器生成的汇编代码。我应该在xcode中启用哪些设置才能查看汇编代码? 最佳答案 在Xcode选项中,选择选项Debug->DebugWorkFlow->AlwaysShowDisassembly在要查看汇编代码的代码中放置断点。然后您可以在代码到达该断点时查看汇编代码。 关于ios-如何在xcode6中查看汇编代码,我们在StackOverflow上找到一个类似的问题: https://stackover
我还是xcode的新手。我有“调试时显示反汇编”未选中但我知道当我单步执行我自己的代码时,当系统方法被调用时我仍然会经常被扔进汇编代码。我的问题是......有什么方法可以快速将汇编代码跨过到我自己的自定义代码的下一行,而不是无休止地按F6或F8。我知道,我可以提前在下一个要调用的自定义方法处设置一个新断点并按下运行按钮,但是当我快速单步执行我的代码时,我通常事先不知道调试器什么时候会抛出我进入汇编代码,当发生这种情况时,点击“运行到下一个断点”按钮为时已晚。任何帮助表示赞赏。编辑-感谢“继续当前行”的建议,但通常当我尝试这样做时,我将光标放在我自己的代码行上,并且调试菜单下的“继续当
出于教育目的,我想向现有的iPhone应用程序添加一个功能,该应用程序是用ARM程序集编写的。一般来说,我不需要有关ARM汇编的教程,因为我已经阅读了太多。我只是不知道如何实际运行代码!我想做的是:无用.h:voiduseless();没用.s:useless:bxlr如果这也适用于模拟器,那就没问题了......在模拟器上,.s文件不会编译,所以我应该做类似的事情:没用.s:#ifI_AM_ARMuseless:bxlr#endif没用.c:#if!I_AM_ARMvoiduseless(){}#endif我知道我使用的语法有问题,但我该如何正确编写呢?(因为我想尝试一些内联汇编而在
当我尝试使用otool反汇编现有的iOS应用程序(不是应用程序商店的应用程序)时,它不会分成不同的方法。这只是一个巨大的部分。这是我正在使用的命令:otool-tVtheApp.app/theApp>~/Desktop/output.txt有没有办法将反汇编拆分为方法? 最佳答案 不,没有。这些应用程序已被删除,这意味着它们不包含有关功能开始或结束位置的信息。然而,由于objective-c是动态的,任何objective-c方法都将在objective-c段中有它们的名称和地址。您可以使用otool-ov获取此信息,但如果您使用c
调试项目时,在XCode中设置断点后,我将开始单步执行我的代码,然后我会遇到反汇编代码,我认为这些代码是对没有可用源代码的各种框架的调用。(这是一个正确的假设吗?)有没有办法(也许通过我还没有找到的项目设置)来抑制这个汇编代码的显示,而不必单步执行它而只是单步执行我的源代码实现了吗?我看到我可以单击“继续执行程序”图标,但我不确定这是完成此操作的最佳技术。在我开发经验的这个阶段,单步调试源代码以更好地理解代码执行和能够检查数据值是非常有值(value)的,但是单步调试汇编代码……没那么重要。我正在使用XCode4GM,但我在XCode3.x中也遇到过这个问题。