标签: opcode

PowerPC 操作码表?

我有兴趣为自己的学习目的开发 PowerPC 模拟器。我已经找到了大量有关 PowerPC 汇编编程的资源,但是经过一段时间的查找,我还没有能够在任何地方找到指令/操作码映射表。当然,我需要操作码才能编写模拟器。我在哪里可以找到一个?

assembly powerpc instruction-set opcode disassembly

4
推荐指数
1
解决办法
1万
查看次数

如何根据实模式偏移和寻址确定x86机器操作码值?

我试图将原始机器代码字节写为0和1到文本文件中,并通过BIOS执行它.

然而,我有一些问题需要理解寻址,乘法,偏移,寻址,操作数和指令在组合安排中的作用,即MOV AL, 07和之间的区别MOV BL, AL.

我的意思是它在Assembly中是有意义的,但在机器代码中,获取参数的想法变得非常困难.

所以我想知道的是:我怎样才能更好地理解这一点?我发现没有教程可以准确地解释/描述组合相关中的指令或数据传递,MMIO,寻址模式,算术等之间的连接中的0和1.

在这个网站http://ref.x86asm.net/coder32.html#x00它尝试,但我不明白这一点.

示例:假设我想将5移入AL ...我是否将二进制文件中的文字'5'指定为使用AL/MOV指令链接的二进制前缀中的操作码的一部分,或者我是否每个都有一个固定的二进制代码教学,无论价值多少?这就是我想知道的...如何解释如何编写机器代码.

binary assembly binaryfiles opcode offset

4
推荐指数
1
解决办法
3617
查看次数

x86 汇编,堆栈推送指令

我刚刚发现 push 指令可以有一个立即数 byte 、 word 、 dword 参数,并且每个参数都有不同的操作码。我正在阅读的书中没有示例,所以我不明白汇编程序如何区分这三种类型。例如,如果我编写push 12h汇编器将如何解释它以及堆栈上实际会发生什么?

x86 assembly callstack machine-code opcode

4
推荐指数
1
解决办法
4548
查看次数

有没有办法通过 6502 的操作码以编程方式确定寻址模式?

即不同的寻址模式是否以某种方式编码在操作码中?可以通过编程方式提取它们还是这些信息仅存在于 6502 的文档中?我正在编写一个模拟器,我不关心性能。如果可能的话,最好有一个接受操作码并返回寻址模式的函数。

到目前为止,我还没有发现任何迹象表明代码中存在某种模式,除了所有零页指令似乎都设置了第三位之外。

6502 emulation opcode addressing-mode

4
推荐指数
1
解决办法
1060
查看次数

什么是EXT_NOP和EXT_STMT,PHP操作码

我试图通过仅针对我的实现执行本机php函数来了解更深入的PHP内部信息。

但是在每个操作码转储中,我都会看到以下两个操作码:

EXT_NOPhttp : //php.net/manual/tr/internals2.opcodes.ext-nop.php

EXT_STMThttp : //php.net/manual/tr/internals2.opcodes.ext-stmt.php

如您在文档中所见,没有详细的解释。

即使在文档中给出的以下示例中,我的转储也不同于文档的特殊化。我真的很想知道为什么每个垃圾场都有这两个摊位吗?它们的功能是什么?

<?php
/*
 * no operation
 * opcode number: 0
 */
function A(){}; 
?>
Run Code Online (Sandbox Code Playgroud)

环保化:

LXC
Linux web 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u5 (2015-10-09) x86_64 GNU/Linux  
PHP 5.6.15-1~dotdeb+7.1 (cli) (built: Nov  3 2015 16:29:58) 
Copyright (c) 1997-2015 The PHP Group
Zend Engine v2.6.0, Copyright (c) 1998-2015 Zend Technologies
    with Zend OPcache v7.0.6-dev, Copyright (c) 1999-2015, by Zend Technologies
    with Xdebug v2.3.3, Copyright (c) 2002-2015, by …
Run Code Online (Sandbox Code Playgroud)

php xdebug opcode php-opcode

4
推荐指数
1
解决办法
292
查看次数

为什么objdump为这个汇编语言指令显示一个空操作码?

我有以下汇编代码:

global _start
section .text
_start:

add byte [eax], al
Run Code Online (Sandbox Code Playgroud)

编译和链接后,我尝试看到操作码:

$ objdump -d eax.o

eax.o:     file format elf32-i386


Disassembly of section .text:

00000000 <_start>:
        ...
$
Run Code Online (Sandbox Code Playgroud)

为什么我得到一个空操作码?

x86 assembly opcode objdump disassembly

4
推荐指数
1
解决办法
398
查看次数

x86 XOR操作码差异

http://ref.x86asm.net/coder32.html我发现两个匹配语句的操作码

xor eax,eax

1)操作码31 XOR r/m16/32 r16/32

2)操作码33 XOR r16/32 r/m16/32

两者都指操作数1和操作数2的32位寄存器.那么,XORing两个32位寄存器的这种特殊情况有什么不同吗?

x86 assembly bit-manipulation xor opcode

4
推荐指数
1
解决办法
429
查看次数

Reflection.Emit中的短格式操作码出错

我正在制作一种与hlsl非常相似但只支持像素着色器的小语言.此语言使用reflection.emit构建实现相同功能的点网络程序集.我正在测试我的分支指令"if"的实现,并且在我的一个单元测试中(一个大的if if inner if else)失败并出现以下错误消息:

System.NotSupportedException:位置上的非法单字节分支:32.请求的分支是:132.

在我的案例OpCodes.Br_S中,我已经将问题追溯到使用简短格式指令.解决方案很简单,我用OpCodes.Br替换了OpCodes.Br_S但是我对这个解决方案有几个问题:

此解决方案对生成的代码的性能有影响吗?如果我想为单个字节正确生成Br_S而对于其他情况需要Br,我该怎么做?这里的问题是我正在使用访问者模式和像"if"这样的分支指令我必须首先输出Br或Br_s,此时我无法知道剩下的代码是否需要多个单字节跳到标签.为了更好地说明我的问题,这是我为以下语句生成的代码:

我的语言:

int a = -1; if (1>1) { a=1; } else if(2>2) { a=2; }

IL:

.method public virtual final instance int32 Main() cil managed {

.maxstack 4
.locals init (
    [0] int32 num)
L_0000: ldc.i4.m1 
L_0001: stloc.0 
L_0002: ldc.i4.1 
L_0003: ldc.i4.1 
L_0004: ble.s L_000a
L_0006: ldc.i4.1 
L_0007: stloc.0 
L_0008: br.s L_0010
L_000a: ldc.i4.2 
L_000b: ldc.i4.2 
L_000c: ble.s L_0010
L_000e: ldc.i4.2 
L_000f: stloc.0 
L_0010: ldloc.0 
L_0011: ret 
Run Code Online (Sandbox Code Playgroud)

}

int a …

c# reflection.emit hlsl opcode

3
推荐指数
1
解决办法
1572
查看次数

在NASM生成的列表文件中,操作码括号中的括号是什么意思?

在查看由NASM生成的列表文件时,我发现有三种操作码:

  1. 没有括号.
  2. 圆括号.
  3. 用方括号.

他们是什么意思?什么时候使用它们?

这是展示以上所有内容的列表文件的示例:

 1                                  section .text
 2                                      extern printf
 3                                      extern fgets
 4 00000000 313233                  str3:   db "123"
 5                                  main:
 6 00000003 68[00000000]                push    str1
 7 00000008 68[09000000]                push    str2
 8 0000000D 68[00000000]                push    str3
 9 00000012 E8(00000000)                call    func1
10 00000017 E8(04000000)                call    func2
11 0000001C E80B000000                  call    func3
12 00000021 E8(00000000)                call    printf
13 00000026 E8(00000000)                call    fgets
14 0000002B C3                          ret
15                                  
16 0000002C 90                      func3:  nop
17 0000002D C3                          ret
18                                  
19                                  
20 …
Run Code Online (Sandbox Code Playgroud)

assembly nasm opcode instructions

3
推荐指数
2
解决办法
1718
查看次数

x86处理器增加IP寄存器的数量是多少?

所有x86 cpu都有指令指针寄存器,它保存下一条要执行的指令的偏移量(地址).如果没有分支或跳转,那么下一条获取指令的递增(或递减)的典型量是多少?我认为这可能是32位典型指令的大小?

cpu x86 opcode

3
推荐指数
1
解决办法
774
查看次数