精华内容
下载资源
问答
  • OpCodes

    2012-11-19 16:05:00
    http://msdn.microsoft.com/en-US/library/system.reflection.emit.opcodes.unbox(v=vs.80).aspx 转载于:https://www.cnblogs.com/leon916/archive/2012/11/19/2777427.html
    http://msdn.microsoft.com/en-US/library/system.reflection.emit.opcodes.unbox(v=vs.80).aspx

    转载于:https://www.cnblogs.com/leon916/archive/2012/11/19/2777427.html

    展开全文
  • Dalvik opcodes

    2013-10-31 07:41:10
    Dalvik opcodes
  • Opcodes 说明

    2018-11-15 17:55:00
    在 rocket-chip 中对 opcodes 进行定制化的过程主要是在 riscv-tools/riscv-opcodes 目录中: . ├── encoding.h --- 基础编码工具 ├── LICENSE ├── Makefile ...

    在 rocket-chip 中对 opcodes 进行定制化的过程主要是在 riscv-tools/riscv-opcodes 目录中:

    .
    ├── encoding.h                 --- 基础编码工具
    ├── LICENSE
    ├── Makefile                   --- 编译脚本
    ├── opcodes                    --- opcodes 定义,下同
    ├── opcodes-custom
    ├── opcodes-pseudo
    ├── opcodes-rvc
    ├── opcodes-rvc-pseudo
    ├── parse-opcodes              ---  opcodes 自动化生成工具
    └── README.md                  ---  说明文档
    

    接下来解读下 Makefile 文件中的内容:

    SHELL := /bin/sh
    
    # 定义目标 encoding.h 目标文件位置
    ISASIM_H := ../riscv-isa-sim/riscv/encoding.h
    PK_H := ../riscv-pk/machine/encoding.h
    FESVR_H := ../riscv-fesvr/fesvr/encoding.h
    ENV_H := ../riscv-tests/env/encoding.h
    OPENOCD_H := ../riscv-openocd/src/target/riscv/encoding.h
    
    ALL_OPCODES := opcodes-pseudo opcodes opcodes-rvc opcodes-rvc-pseudo opcodes-custom
    
    install: $(ISASIM_H) $(PK_H) $(FESVR_H) $(ENV_H) $(OPENOCD_H) inst.chisel instr-table.tex priv-instr-table.tex
    
    # 安装所有指令码到 c 语言库,并拷贝 encoding.h 文件到目标目录
    $(ISASIM_H) $(PK_H) $(FESVR_H) $(ENV_H) $(OPENOCD_H): $(ALL_OPCODES) parse-opcodes encoding.h
        cp encoding.h $@
        cat opcodes opcodes-rvc-pseudo opcodes-rvc opcodes-custom | ./parse-opcodes -c >> $@
    
    # 安装所有的指令码到 Chisel 代码中,通过 parse-opcodes 脚本生成 Instructions 类
    inst.chisel: $(ALL_OPCODES) parse-opcodes
        cat opcodes opcodes-custom opcodes-pseudo | ./parse-opcodes -chisel > $@
    
    # 安装所有的指令码到 Go 代码中,通过 parse-opcodes 脚本生成 
    inst.go: opcodes opcodes-pseudo parse-opcodes
        cat opcodes opcodes-pseudo | ./parse-opcodes -go > $@
    
    instr-table.tex: $(ALL_OPCODES) parse-opcodes
        cat opcodes opcodes-pseudo | ./parse-opcodes -tex > $@
    
    priv-instr-table.tex: $(ALL_OPCODES) parse-opcodes
        cat opcodes opcodes-pseudo | ./parse-opcodes -privtex > $@
    
    .PHONY : install
    

    执行 make install 之后,在 riscv-fesvr/fesvr/encoding.h 文件中,存在机器码的定义过程,比如:

    #ifdef DECLARE_INSN
    DECLARE_INSN(beq, MATCH_BEQ, MASK_BEQ)
    DECLARE_INSN(bne, MATCH_BNE, MASK_BNE)
    DECLARE_INSN(blt, MATCH_BLT, MASK_BLT)
    DECLARE_INSN(bge, MATCH_BGE, MASK_BGE)
    DECLARE_INSN(bltu, MATCH_BLTU, MASK_BLTU)
    DECLARE_INSN(bgeu, MATCH_BGEU, MASK_BGEU)
    DECLARE_INSN(jalr, MATCH_JALR, MASK_JALR)
    DECLARE_INSN(jal, MATCH_JAL, MASK_JAL)
    DECLARE_INSN(lui, MATCH_LUI, MASK_LUI)
    DECLARE_INSN(auipc, MATCH_AUIPC, MASK_AUIPC)
    DECLARE_INSN(addi, MATCH_ADDI, MASK_ADDI)
    DECLARE_INSN(slli, MATCH_SLLI, MASK_SLLI)
    DECLARE_INSN(slti, MATCH_SLTI, MASK_SLTI)
    ...省略...
    #endif
    

    解析过程

    简单分析下 parse-opcodes 文件中生成 encoding.h 文件部分的实现:

    ...此前省略...
    def make_c(match,mask):
      print '/* Automatically generated by parse-opcodes.  */'
      print '#ifndef RISCV_ENCODING_H'
      print '#define RISCV_ENCODING_H'
    // 递归指令名称列表,组装 MATCH_*, MASK_*, CSR_*, CAUSE_* 等宏定义
      for name in namelist:
        name2 = name.upper().replace('.','_')
        print '#define MATCH_%s %s' % (name2, hex(match[name]))
        print '#define MASK_%s  %s' % (name2, hex(mask[name]))
      for num, name in csrs+csrs32:
        print '#define CSR_%s %s' % (name.upper(), hex(num))
      for num, name in causes:
        print '#define CAUSE_%s %s' % (name.upper().replace(' ', '_'), hex(num))
      print '#endif'
    
    // 定义 INSN 指令
      print '#ifdef DECLARE_INSN'
      for name in namelist:
        name2 = name.replace('.','_')
        print 'DECLARE_INSN(%s, MATCH_%s, MASK_%s)' % (name2, name2.upper(), name2.upper())
      print '#endif'
    
    // 声明 CSR 
      print '#ifdef DECLARE_CSR'
      for num, name in csrs+csrs32:
        print 'DECLARE_CSR(%s, CSR_%s)' % (name, name.upper())
      print '#endif'
    
    // 声明 CAUSE 
      print '#ifdef DECLARE_CAUSE'
      for num, name in causes:
        print 'DECLARE_CAUSE("%s", CAUSE_%s)' % (name, name.upper().replace(' ', '_'))
      print '#endif'
    ...此后省略...
    

    Opcodes 定义文件

    opcodes-rvc-pseudo 文件为例,其中包含了一些特定的指令:

    # these aren't really pseudo-ops, but they overlay other encodings,
    # so they are here to prevent parse-opcodes from barfing
    
    @c.nop      1..0=1 15..13=0 12=0      11..7=0      6..2=0
    @c.addi16sp 1..0=1 15..13=3 12=ignore 11..7=2      6..2=ignore
    @c.jr       1..0=2 15..13=4 12=0      11..7=ignore 6..2=0
    @c.jalr     1..0=2 15..13=4 12=1      11..7=ignore 6..2=0
    @c.ebreak   1..0=2 15..13=4 12=1      11..7=0      6..2=0
    
    # RV64C
    @c.ld      1..0=0 15..13=3 12=ignore 11..2=ignore # c.flw for RV32
    @c.sd      1..0=0 15..13=7 12=ignore 11..2=ignore # c.fsw for RV32
    @c.addiw   1..0=1 15..13=1 12=ignore 11..2=ignore # c.jal for RV32
    @c.ldsp    1..0=2 15..13=3 12=ignore 11..2=ignore # c.flwsp for RV32
    @c.sdsp    1..0=2 15..13=7 12=ignore 11..2=ignore # c.fswsp for RV32
    
    展开全文
  • Tera Online list of all opcodes
  • evm-opcodes:以太坊操作码和指令参考
  • Add RV128I opcodes

    2020-12-09 12:01:55
    <div><p>该提问来源于开源项目:riscv/riscv-opcodes</p></div>
  • Opcodes of intel

    2007-10-20 22:28:58
    Opcodes of intel文档,很适合学习反汇编的朋友
  • Intel Hex Opcodes and Mnemonics;intel 汇编指令手册;chm版本
  • 主要介绍了如何使用PHP Embed SAPI实现Opcodes查看器的相关资料,需要的朋友可以参考下
  • SOME OPCODES

    2020-12-26 06:27:03
    <div><p>Source: SNIFFING <p>Some addtional info: <p>CMSG_OPEN_ITEM 0x146C //RESPONSE SMSG_? 1F41 CMSG_SPLIT_ITEM 0x140a / / RESPONSE SMSG_? 0x1d69 when make them together/</p><p>该提问来源于开源项目&#...
  • 转载自鸟哥 深入理解PHP原理之Opcodes
    展开全文
  • php opcodes运行原理

    2018-01-25 00:08:00
    谈下php的运行原理--Opcodes。 比如以下一段简单的代码: <?php echo '周伯通‘; ?> 执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend) 1.Scanning(Lexing) ,将PHP代码转换...

    谈下php的运行原理--Opcodes。

    比如以下一段简单的代码:

    <?php
        echo '周伯通‘;
    ?>

    执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)

    1.Scanning(Lexing) ,将PHP代码转换为语言片段(Tokens)
    2.Parsing, 将Tokens转换成简单而有意义的表达式
    3.Compilation, 将表达式编译成Opocdes
    4.Execution, 顺次执行Opcodes,每次一条,从而实现PHP脚本的功能。

    所以当开启OPcache的时候,php在一次请求中已经将Opcodes进行了缓存,那么下次请求的时候,就是跳过前三步,直接运行OPcache里对应的Opcodes,所以大大提升了PHP运行的性能。

    开启opcache方法:

    首先输入命令 php -m 查看有没有开启 OPcache 拓展。

    如果已经开启,那么就可以开始配置php.ini。

    // 开启opcache
    opcache.enable=1
    // 是否开启代码检测,开发环境中应不开启,然后可以写一个artisan命令去运行opcache_reset()方法去重启opcache缓存
    opcache.validate_timestamps=0
    // 如果开启代码检测,每隔多久检测一个代码是否改变
    opcache.revalidate_freq=0
    // 最大加速文件数,linux下可以通过find . -type f -print | grep php | wc -l命令查看项目有的文件数,该值应该大于项目下的文件数
    opcache.max_accelerated_files=8000
    // opcache预先申请的内存,用来存opcache缓存
    opcache.memory_consumption=192
    // 重启字符串缓冲区
    opcache.interned_strings_buffer=16
    // 这实际上是提供了一个更快的机制,在单个请求结束时调用代码中的解构器,以加快响应和回收php工作,以便更快地为下一个传入请求做好准备。
    opcache.fast_shutdown=1

     

    转载于:https://www.cnblogs.com/phpper/p/8344190.html

    展开全文
  • PHP使用vld扩展查看opcodes 需要分析PHP代码的性能,或者说实现同样功能的代码到底哪个更好呢?或者说想知道底层的实现可以使用VLD查看opcode。 下载安装vld扩展 该扩展以收录在 PECL 下载对应的版本安装 修改 ...
  • 一.php opcodes的由来(如果你只想知道如何解php opcodes就直接跳过这步) 1.PHP内核-Zend引擎的详解:https://www.php.cn/php-weizijiaocheng-355597.html 2.VLD扩展使用指南(VLD介绍):...
  • OPCODES学习网址

    千次阅读 2010-07-08 20:56:00
     先看老罗的缤纷天地中OPCODES的解析,写得相当好。老罗的缤纷天地 http://www.luocong.com/(有OPCODES解析)x86机器码对照表http://ref.x86asm.net/index.htmlThe Svin的 OpCode教程(中文版本上传到我资源中去了...
  • PHP运行原理之Opcodes

    2018-01-24 16:22:00
    在我之前的博客...这里就要提到php的运行原理了--Opcodes。 比如一段简单的PHP代码: <?php echo 'Johnson‘; ?> PHP执行这段代码会经过如下4个步骤(确切的来说,应该是PHP的语言引擎Zend)...
  • 随机lua操作码 随机lua二进制中字节码的定义,并编译lua compile_lua.sh-下载...rand_opcodes.lua-随机分割lua源代码中的lopcodes.h / lopcodes.c定义 对于需要编译android / ios / windows平台的lua,请自行处理。
  • Safe opcodes 1.14.0

    2020-12-26 04:15:49
    <div><p>This is the same as #193 from but with my patch for rust-1.14.0 compatibility. I didn't check every opcode constant, but generally 's changes look good. should I do some automated ...
  • 8086 Opcodes.pdf

    2020-05-15 23:36:27
    8086操作码 opcode 查看mov add 指令二进制等 assembly 汇编语言 资料
  • 80x86 Opcodes

    千次阅读 2008-08-23 14:19:00
    Instructions and opcodes oo : Function 00 : If mmm = 110, then a displacement follows the operation; otherwise, no displacement is used 01 : An 8-bit signed displacement follows the opcode 1
  • Intel80x86 Opcodes大全.rar

    2007-11-07 09:40:30
    Intel80x86 Opcodes大全.rar
  • [Android] Dalvik opcodes

    千次阅读 2012-10-11 13:53:47
    Android太过于开放了,太不安全了。一个APK文件,可以用工具反编译后得到smali文件,如果可以看懂smali文件的...以下是转载的内容,Dalvik opcodes,对于理解smali文件有很大帮助。 Dalvik opcodes Author: Gabo

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 9,976
精华内容 3,990
关键字:

OpCodes