标签: machine-code

68k 寄存器地址

这个问题是在乞求一堆“你为什么要这样做?” 回应。

我无法在68k 程序员参考手册 中找到此信息,但这可能是因为我不确定要搜索什么措辞。

这是 68kADD操作码的指令格式。

在此处输入图片说明

位 0-2 和 9-11 指定寄存器。68k 寄存器的二进制表示是什么?它们是“地址”吗?

是的,我知道我可以编写 68k 汇编程序并对其进行调试以找到此信息。我正在寻找参考。谢谢!

assembly 68000 instruction-set machine-code

5
推荐指数
1
解决办法
1113
查看次数

如何将 C 代码编译为原始的无操作系统二进制文件?

考虑到 C 是一种系统编程语言,如何将 C 代码编译为可以在没有操作系统的情况下调用的原始 x86 机器代码?(即:您可以假设我有一个引导扇区,它将原始机器代码从磁盘加载到内存中,然后直接跳转到第一条指令)。

现在,为了加分:理想情况下,我想使用 Visual Studio 2010 的编译器进行编译,因为我已经有了它。如果做不到这一点,那么完成任务的最佳方法是什么,而不必安装一堆依赖项或必须在整个系统中进行大规模的彻底配置更改?我会在 Windows 7 上进行编译。

c compiler-construction machine-code

5
推荐指数
1
解决办法
3790
查看次数

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

来自Intel 的 x86 手册,第 2 卷,第 3.1.1.2 节:指令汇总表中的操作码列(带有 VEX 前缀的指令)

NDSNDDDDS:指定 VEX.vvvv 字段对于寄存器操作数的编码有效:

  • VEX.NDS:VEX.vvvv 以指令语法对第一个源寄存器进行编码,其中源寄存器的内容将被保留。
  • VEX.NDD:VEX.vvvv 对 ModR/M:reg 字段无法编码的目标寄存器进行编码。
  • VEX.DDS:VEX.vvvv 以三操作数指令语法对第二个源寄存器进行编码,其中第一个源寄存器的内容将被结果覆盖。

我认为这与“非破坏性来源”有关,我认为这就是 NDS 所代表的意思。其他代表什么?这如何影响指令的编码?同样,为什么它们很重要 - 因为据我所知,AMD 手册不包含任何对这些术语的参考?

x86 assembly x86-64 intel machine-code

5
推荐指数
1
解决办法
739
查看次数

字节码如Java字节码和文件以及ELF等机器代码可执行文件有什么区别?

字节码二进制可执行文件(如Java类文件,Parrot字节码文件或CLR文件)和机器代码可执行文件(如ELF,Mach-O和PE)之间有何区别.

这两者之间有什么明显的区别?

比如ELF结构中的.text区域等于类文件的哪个部分?

或者它们都有标题,但ELF和PE标题包含Architecture,但Class文件不包含

Java类文件 Java类文件

精灵档案 ELF档案

PE文件 PE文件

executable bytecode elf machine-code .class-file

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

68000内部是如何表示指令的?

68000内部是如何表示指令的。我读过有不同类型的指令:单个有效操作字格式指令、简短和完整扩展字格式指令。单条有效的操作字指令似乎代表指令,该指令的低6位代表寻址方式和寄存器。这种寻址模式和寄存器是否会告诉您是否有一个简短的或完整的扩展字格式指令,该指令又代表该指令的操作数。你知道比 68000 编程参考手册更好的手册吗?

提前致谢

68000 instruction-set machine-code motorola addressing-mode

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

x86 汇编,堆栈推送指令

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

x86 assembly callstack machine-code opcode

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

JIT编译如何在运行时实际执行机器代码?

我理解JIT编译的工作原理(在阅读了这个SO问题之后的资源).但是,我仍然想知道它是如何在运行时实际执行机器代码的?

我没有深入的操作系统或编译器优化背景,也没有直接使用机器代码做任何事情,但我开始探索它.我已经开始在汇编中玩,看看像NASM这样的东西可以把你的汇编代码编译成机器代码(可执行文件),然后你可以从命令行"调用"它./my-executable.

但是JIT编译器在运行时实际上是如何做到的呢?是将流机器代码转换为stdin还是其他东西,或者它是如何工作的?如果你可以提供一个例子或一些伪代码来说明某些程序集(或那些沿着这些行的东西,而不是像C那样高的程度)可能看起来可以展示基本流程,那也是惊人的.

compiler-construction jit compilation llvm machine-code

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

Assembly和binary有什么区别?

我很难理解汇编和二进制之间的区别.我只需要了解链接二进制和汇编之间的关系.

binary assembly executable machine-code

4
推荐指数
3
解决办法
5220
查看次数

MIPS跳转指令编码:为什么左移,为什么保留PC的高4位?

在跳转指令中,

  1. 为什么要将26位地址移至28位?
  2. 为什么我们要将 PC 中最左边的 4 位添加到 28 位中?

assembly mips cpu-architecture machine-code

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

为什么 JavaScript 会被编译为机器代码?

我最近开始使用 ASP.NET 和一些 Javascript 进行 Web 开发,但有些事情让我很困惑。

我总是读到 JavaScript 过去是被解释的,直到 JIT 慢慢地把它编译成机器代码(这使得浏览器更快)。

这对我来说毫无意义。如果传统 JavaScript 应用程序一开始就不针对机器/CPU,那么 JavaScript 如何编译为本机机器代码?

我了解 Electron.js 应用程序是否使用 NodeJS 运行时编译为机器代码。我明白了。因为它本身编译为机器代码,并且据我了解,它不在浏览器中运行

如果传统的 JavaScript 应用程序在浏览器中运行,为什么必须将其编译为机器代码?浏览器负责运行代码,而不是CPU。CPU 本身运行浏览器。实际上,我根本不明白本机操作系统如何影响浏览器中发生的任何事情,反之亦然。似乎也是一个安全问题。

抱歉,如果这是一个愚蠢的问题,但我找不到任何超出“Javascript 使用 JIT”的资源

谢谢你!

劳伦

javascript jit compilation machine-code

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