关闭。这个问题不符合StackOverflowguidelines.它目前不接受答案。要求我们推荐或查找工具、库或最喜欢的场外资源的问题对于StackOverflow来说是偏离主题的,因为它们往往会吸引自以为是的答案和垃圾邮件。相反,describetheproblem以及迄今为止为解决该问题所做的工作。关闭8年前。Improvethisquestion对于我的小型爱好项目,我需要在运行时从C++程序发出机器代码。我有基地址0xDEADBEEF并且想写这样的东西:Assemblera((void*)0xDEADBEEF);a.Emit()内联汇编程序不是我的选择,因为生成的机器代码取决
我想知道这两种算法的优缺点是什么。我想写AddEmUpC++已解决,但我不确定应该使用哪种(IDA或DFID)算法。我找到的最好的文章是thisone,但它似乎太旧了-'93。还有更新的吗我认为IDA*会更好,但是..?还有其他想法吗?任何想法和信息都会有所帮助。谢谢!(:编辑:一些关于IDA*的好文章和对算法的很好解释?EDIT2:或者该游戏的一些很好的启发式函数?我不知道怎么想一些:/ 最佳答案 Russel和Norvig的书是关于这些算法的极好引用,我会给larsmans一个虚拟的击掌来表彰它的建议;但是我不同意IDA*在任何
我有一个只包含以下内容的cpp文件:voidf(int*constx){(*x)*=2;}我编译:g++-S-masm=intel-O3-fno-exceptions-fno-asynchronous-unwind-tablesf.cpp这导致f.s包含:.section__TEXT,__text,regular,pure_instructions.macosx_version_min10,12.intel_syntaxnoprefix.globl__Z1fPi.p2align4,0x90__Z1fPi:##@_Z1fPi##BB#0:pushrbpmovrbp,rspshldword
structv{intval[16];};structvtest(structva,structvb){structvres;for(inti=0;i作为C++编译,GCC7.2发出:pushr10vmovdqu32zmm0,ZMMWORDPTR[rsp+16]movrax,rdivpadddzmm0,zmm0,ZMMWORDPTR[rsp+80]lear10,[rsp+16]vmovdqu32ZMMWORDPTR[rdi],zmm0popr10编译为C:lear10,[rsp+8]andrsp,-64movrax,rdipushQWORDPTR[r10-8]pushrbpmovrbp
我正在使用带有一些内联汇编程序代码的BorlandTurboC++,因此大概是TurboAssembler(TASM)风格的汇编代码。我希望执行以下操作:voidfoo::bar(void){__asm{moveax,SomeLabel//...}//...SomeLabel://...}所以SomeLabel的地址被放到了EAX中。这不起作用,编译器会提示:undefinedsymbol“SomeLabel”。在MicrosoftAssembler(MASM)中,美元符号($)用作当前位置计数器,这对我的目的很有用。但这在BorlandsAssember中似乎也不起作用(表达式语法错
我正在制作一个8051汇编器。在一切之前都是一个分词器,它读取下一个分词、设置错误标志、识别EOF等。然后是编译器的主循环,它读取下一个标记并检查有效的助记符:mnemonic=NextToken();if(mnemonic.Error){//throwsomeerror}elseif(mnemonic.Text=="ADD"){...}elseif(mnemonic.Text=="ADDC"){...}它会继续出现在几个案例中。比这更糟糕的是每个案例中的代码,它检查有效参数然后将其转换为编译代码。现在它看起来像这样:if(mnemonic.Text=="MOV"){arg1=Next
我有以下C++代码:#includestd::tuplefoo(){returnstd::make_tuple(128,true);}intmain(){autoresult=foo();}以下是foo()函数的反汇编版本:pushebpmovebp,espsubesp,24movBYTEPTR[ebp-13],1//secondargumentmovDWORDPTR[ebp-12],128//firstargumentmoveax,DWORDPTR[ebp+8]//whatisthis?whyweneedthishere?subesp,4leaedx,[ebp-13]pushedx/
我需要从英特尔处理器(英特尔酷睿i3)中的随机生成器获取随机数。我不想使用任何图书馆。我想在C++中使用汇编程序粘贴,但我不知道应该使用哪些寄存器和指令。 最佳答案 在支持的CPU(目前只有IvyBridge和HaswellIntelCPU)上调用RDRAND指令会将一个随机值放入指定的寄存器中。例如,这将为您提供一个随机的64位值:RDRAND%rax成功时,进位位将被设置。参见英特尔的BullMountainSoftwareImplementationGuide更多细节。(“BullMountain”是英特尔硬件RNG的代号。)
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visitthehelpcenter指导。关闭10年前。学习汇编应该选择NASM还是MASM?我想学习汇编,动机是逆向工程。这样当我反汇编一些可执行文件时,我可以通过查看反汇编代码来理解代码。更新:我想我不能让自己清楚。我知道那些是汇编程序,但要了解反汇编程序的输出,我需要了解汇编,这就是我问从哪里开始(使用MASM或NASM)的原因)
我正在ARM9处理器上实现FIR滤波器并尝试使用SMLAL指令。最初我实现了以下过滤器并且它工作得很好,除了这种方法使用太多的处理能力而无法在我们的应用程序中使用。uint32_tDDPDataAcq::filterSample_8k(uint32_tsample){//Thisroutineisbasedonthefir_double_zroutineoutlinebyGrantRGriffin//-www.dspguru.com/sw/opendsp/alglib.htminti=0;int64_taccum=0;constint32_t*p_h=hCoeff_8K;constin