当我拆开.text使用一些二进制文件的部分objdump(与两个AT&T和Intel语法),有时会看到指令用.s后缀,例如:cmpb.s %bh,%ch,sbbl.s %edi,%edi,或adcb.s %bl,%dh.
请问.s后缀有一个有效/有用的意思(也许甚至还不如一个后缀),或这是拆卸一些数据/填充,如果它是一个指令序列的假象?谢谢.
我试图解决的问题是我想动态计算给定其地址(从GDB内)的指令长度,并将set该长度作为变量的值.挑战在于我不希望在控制台上打印任何无关的输出(例如,拆卸的指令等).
我的常规方法是做x/2i ADDR,然后减去两个地址.我想自动实现同样的事情; 但是,我不想在控制台上打印任何东西.如果我可以禁用控制台输出,那么我可以通过执行此操作x/2i ADDR,然后执行此操作$_ - ADDR.
我还没有找到一种方法来禁用GDB中的命令输出.如果你知道这样的话请告诉我!但是,我发现了interpreter-execGDB/MI.快速测试表明,x/2i在GDB/MI上工作,并且$_MI解释器计算的值与控制台解释器共享.不幸的是,这种方法也吐出了很多输出.
有没有人知道如何计算指令的长度而不显示任何内容,或者如何禁用输出interpreter-exec,从而允许我实现我的目标?谢谢.