标签: opcode

汇编:什么是语义NOP?

我想知道汇编中的"语义NOP"是什么?

security assembly opcode

8
推荐指数
1
解决办法
382
查看次数

操作码(APC/XCache),Zend,Doctrine和Autoloaders

我试图使用APC或XCache作为操作码来缓存我的php页面.我正在使用它与Zend和Doctrine,它与自动加载器有问题.

如果我尝试使用APC,我会得到以下结果:

Fatal error: spl_autoload() [<a href='function.spl-autoload'>function.spl-autoload</a>]: 
  Class Doctrine_Event could not be loaded in 
  C:\\[mydir]\\library\\doctrine\\Doctrine\\Record.php on line 777
Run Code Online (Sandbox Code Playgroud)

如果我尝试使用XCache,我会得到以下内容:

PHP Fatal error: Cannot redeclare class Zend_Registry in 
  C:\\[mydir]\\library\\zendframework\\Zend\\Registry.php on line 0
Run Code Online (Sandbox Code Playgroud)

我正在Windows机器上运行Zend 1.9.1,Doctrine 1.1.

我的引导程序如下:

set_include_path(dirname(__FILE__).'/../library/zendframework'
. PATH_SEPARATOR . dirname(__FILE__).'/../library/doctrine'.....

require 'Zend/Loader/Autoloader.php';

$loader = Zend_Loader_Autoloader::getInstance();
$loader->suppressNotFoundWarnings(false);
$loader->setFallbackAutoloader(true);
Run Code Online (Sandbox Code Playgroud)

从我所读到的,使用APC或xcache几乎是性能必须的,但我似乎无法让它工作.有任何想法吗?

doctrine zend-framework apc opcode xcache

7
推荐指数
1
解决办法
5970
查看次数

x86指令集路线图

经过长时间的高级编程后,我只是触摸了x86指令集的表面.大约20年来,我第一次阅读x86汇编编程,从我的谷歌搜索中我得到了大量的指令集引用; 从那些将新一代处理器(286,386,486 ......)与其他添加更新x86指令的处理器混合在一起的处理器.更不用说AMD的变化.

由于我打算构建一个引导装载程序,我首先想到的是完全符合'标准x86',但我无法弄清楚它的位置,甚至它是否存在于任何地方.

甚至英特尔的文档似乎都遵循相同的路径,就像另一个人说的那样,"我们需要x86指令集标准化,操作码的演变是混乱的".

持有标准化旗帜并不是我的想法.我只想看看路,了解哪里是安全的行走地点.如果有人可以提供帮助,我会非常感激!

x86 assembly opcode

7
推荐指数
1
解决办法
907
查看次数

什么相当于PPC的rdtsc操作码?

我有一个具有以下代码的汇编程序.此代码可编译为intel处理器.但是,当我使用PPC(交叉)编译器时,我收到一个错误,即操作码无法识别.我试图找出PPC架构是否有等效的操作码.

.file   "assembly.s"
.text
.globl func64
.type   func64,@function
func64:
    rdtsc
    ret

.size   func64,.Lfe1-func64
.globl func
.type   func,@function
func:
    rdtsc
    ret
Run Code Online (Sandbox Code Playgroud)

powerpc opcode rdtsc

7
推荐指数
1
解决办法
1916
查看次数

为什么`OpCode.Value`有"错误的"字节序?

事实:

  1. CIL指令rethrow的操作码的正确编码是双字节序列FE 1A.

  2. OpCodes.Rethrow.Value(有类型short)0xFE1A在我的little-endian机器上有价值.

  3. BitConverter 转换为/从字节序列转换时,尊重机器的字节顺序.

  4. 在我的little-endian机器上,BitConverter.GetBytes(OpCodes.Rethrow.Value)产生字节序列1A FE.

这意味着,OpCode.Value使用little-endian机器序列化BitConverter不会产生正确的操作码编码; 字节顺序颠倒过来.

问题:

  • 记录的字节顺序OpCode.Value(如果是,在哪里?),还是"实现细节"?

  • 上面的大端机器上的步骤4是否也会导致错误的字节排序?也就是说,将OpCodes.Rethrow.Value0x1AFE一个big-endian的机器上?

.net cil reflection.emit endianness opcode

7
推荐指数
1
解决办法
451
查看次数

在IL代码中,为什么在给定的情况下没有nop操作码?为什么在给定的情况下有一个br.s操作码?

假设我有以下代码:

public class Class1
{
    private Class2 obj;

    public void MethodA()
    {
        var class2 = new Class2();
        class2.PropertyI = 2;
        obj = MethodB(class2);
    }

    public Class2 MethodB(Class2 class2)
    {
        return class2;
    }
}

public class Class2
{
    public int PropertyI { get; set; }
}
Run Code Online (Sandbox Code Playgroud)

使用Visual Studio 2010作为.NET 2.0程序集进行编译生成的IL代码如下:

.method public hidebysig instance void MethodA() cil managed
{
    .maxstack 3
    .locals init (
        [0] class ClassLibrary1.Class2 class2)
    L_0000: nop 
    L_0001: newobj instance void ClassLibrary1.Class2::.ctor()
    L_0006: stloc.0 
    L_0007: ldloc.0 
    L_0008: ldc.i4.2 …
Run Code Online (Sandbox Code Playgroud)

.net cil opcode .net-2.0

7
推荐指数
1
解决办法
1024
查看次数

获取装配说明的大小

我需要从内存中的一个小代码段逐个读取指令,我必须找出内存中指令的大小.

以下只是解释我的问题的原始反汇编代码的示例:

 (gdb) disas /r 0x400281,+8
 Dump of assembler code from 0x400281 to 0x400289:
    0x0000000000400281:  48 89 c7       movq   %rax, %rdi
    0x0000000000400284:  b0 00          movb   $0, %al
    0x0000000000400286:  e8 f2 48 00 00 callq  0x10001f30a
 End of assembler dump.
Run Code Online (Sandbox Code Playgroud)

我知道第一条指令的存储器地址(在这种情况下p = 0x0000000000400281),我可以从p读取每个存储器地址.问题是我不知道*(p + offset)的值是否是操作码,我知道每个操作码的大小信息都不固定.

那么,我可以得到每个汇编指令的大小吗?或者我可以知道我读的值是操作码还是信息?

x86 assembly machine-code opcode disassembly

7
推荐指数
2
解决办法
4389
查看次数

BND RET在x86中的含义

突然遇到这个奇怪的指令时,我正在对CRT库(特别是SEH序言)进行一些分解bnd ret。任何人都可以f2c3(ret opcode)之前解释前缀的含义吗?

x86 assembly return opcode disassembly

7
推荐指数
1
解决办法
1611
查看次数

方法的最后一条指令可能有哪些OpCode?

在.net中可以作为方法的最后一条指令存在的可能的OpCode是什么.

目前我知道它可以

但它有可能成为任何其他操作码吗?如果是这样,什么代码(更喜欢c#)会产生它们?

"最后"我指的是"方法体中定义的最终OpCode"

.net c# il cil opcode

6
推荐指数
1
解决办法
336
查看次数

Perl - 操作码的操作码?

有没有办法创建perl源代码,如果我有操作码?

例如

perl -MO=Concise -e "print 123"
Run Code Online (Sandbox Code Playgroud)

将输出操作码:

6  <@> leave[1 ref] vKP/REFC ->(end)
1     <0> enter ->2
2     <;> nextstate(main 1 -e:1) v:{ ->3
5     <@> print vK ->6
3        <0> pushmark s ->4
4        <$> const[IV 123] s ->5
Run Code Online (Sandbox Code Playgroud)

我想以某种方式扭转这种局面.

perl reversing opcode

6
推荐指数
1
解决办法
377
查看次数