首页 文章
  • 0 votes
     answers
     views

    将二进制机器代码转换为MIPS汇编指令

    我很感激这个问题的一些帮助 . 下面的32位数字代表MIPS指令 . 识别不同的字段并说明它是哪条指令 . 给出可以转换成该指令的汇编程序源代码 . 001000 | 10001 | 10010 | 0000000000001111 我将这些位分开,我知道前6位是操作码,给定操作码就意味着Addi . 最后16位是我转换为15的立即值 . 我需要帮助寄存器并将二进制转换为寄存器号 . 我到处寻找,...
  • 1 votes
     answers
     views

    MIPS流水线寄存器长度(IF / ID,ID / EX,EX / MEM,MEM / WB)

    我目前正在攻读我的计算机体系结构考试,并且在 sub (在时钟通勤之前)的第3阶段之后发现了一个问题,要求说明(我会假设一点一点)mips管道架构中包含的值给出以下内容说明 . add $t0,$t1,$t2 sub $t3,$t3,$t5 beq $t6,$t0,16 add $t0,$t1,$t3 我不是要求解决这个问题但是经过一些研究后我没有取得太大的成功包围我所以我要求一些帮助/建...
  • 5 votes
     answers
     views

    为什么ia32 / x64操作码将文档0x66和0xF2映射为操作码0x0F38F1(CRC32)的双重必需前缀?

    在英特尔64和IA-32架构软件开发人员手册中,行F表A-4附录A.3卷2C(订单号326018-045US 2013年1月)的独特之处在于它具有前缀子行,用于两个组合前缀:0x66和0xF2 . 与此相关的唯一操作码是0x0F38F1(CRC32) . 对于前缀0xF2,源操作数是Ey(存储器或通用寄存器; 32位或64位),对于前缀0x66和0xF2,源操作数是Ew(存储器或通用寄存器;总是1...
  • 4 votes
     answers
     views

    在编码VEX指令时,NDS,NDD和DDS代表什么?

    来自Intel's x86 manuals, Vol2,第3.1.1.2节:指令汇总表中的操作码列(带有VEX前缀的指令) NDS,NDD,DDS:指定VEX.vvvv字段对寄存器操作数的编码有效:VEX.NDS:VEX.vvvv以指令语法对第一个源寄存器进行编码,其中源寄存器的内容将被保留 . VEX.NDD:VEX.vvvv对无法由ModR / M:reg字段编码的目标寄存器进行编码 . ...
  • 4 votes
     answers
     views

    指令长度

    我正在查看汇编中的不同指令,我对如何决定不同操作数和操作码的长度感到困惑 . 这是你应该从经验中得知的东西,还是有办法找出哪个操作数/运算符组合占用了多少字节? 例如: push %ebp ; takes up one byte mov %esp, %ebp ; takes up two bytes 所以问题是: 在看到给定的指令后,如何推断出其操作码需要多少字节?
  • 25 votes
     answers
     views

    同构和“不受限制”的自我修改代码lisp是否真的可以自我修改?

    我将继续承认我对Lisp的了解非常少 . 但是我对这门语言非常感兴趣,并计划在不久的将来开始认真学习它 . 我对这些问题的理解无疑是有缺陷的,所以如果我说出任何有些错误的东西,请评论并纠正我而不是贬低 . Truly Homoiconic and Self-modifiable languages 我正在寻找支持Homoiconicity(代码与数据具有相同表示)和 unrestricted 自修...
  • -4 votes
     answers
     views

    机器代码怎么去特定的处理器? [关闭]

    我们知道每个 processor 都有自己的指令集(ex-8085处理器有自己的INSTRUCTION SET) . 因此,要使用该处理器执行任何指令,指令必须是其指令集之一(意味着我们只能执行该指令) 8085处理器,属于8085指令集) . 所以这里我的问题是如果我们编写任何程序(假设我们使用c语言编写程序)然后在使用编译器编译之后(因为我们知道编译器生成可在机器ex..gcc或turbo c...
  • 9 votes
     answers
     views

    同质性水平[关闭]

    这是我previous question的后续行动 . 我不相信Lisp代码与Von Neumann架构上的机器代码一样是Homoiconic . 对我来说似乎很明显,在这两种情况下代码都表示为数据,但似乎很明显,你可以在机器代码中比在Lisp中更自由地利用这个属性 . 在使用机器代码时,自我修改代码非常容易,它总是偶然发生,通常是偶然的,并且(根据我的经验)是搞笑的结果 . 在编写一个简单的“打...
  • -1 votes
     answers
     views

    我怎么弄清楚osx上的movq%rax,%rdi的字节码? [重复]

    这个问题在这里已有答案: x64 instruction encoding and the ModRM byte 2个答案 我看了一下ref.x86asm.net手册,虽然它有很多信息,但我可以知道如何解释寄存器 . 我正在使用64位代码并有一个附近的行,lldb向我显示以下内容: 48 89 e5 movq%rsp,%rbp 我从上面的语句中得知89是move命令 . rsp是源码,rbp...
  • 6 votes
     answers
     views

    如何强制NASM将[1 rax * 2]编码为disp32索引* 2而不是disp8基本索引?

    为了有效地做到x = x*10 + 1,它可能是最佳使用方式 lea eax, [rax + rax*4] ; x*=5 lea eax, [1 + rax*2] ; x = x*2 + 1 3-component LEA has higher latency关于现代英特尔CPU,例如3个周期与Sandybridge系列的1个周期相比,所以 disp32 + index2 i...

热门问题