Questions tagged «machine-code»

9
学习机器语言编程方面的资源?[关闭]
按照目前的情况,这个问题不适合我们的问答形式。我们希望答案会得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我是一名学生,从Java到C ++,再到C,都热衷于编程和热爱编程。我退回到了准系统,并认为可以进一步深入到Assembly。 但是,令我惊讶的是,很多人说它不如C快,而且没有用。他们建议学习如何编程内核或编写C编译器。我的梦想是学习以二进制方式(机器代码)编程,或者以裸机编程(以物理方式编程微控制器),或者编写BIOS或引导加载程序或类似性质的东西。 经过大量研究后,我听到的唯一可能是十六进制编辑器是我在这个时代和时代所能找到的最接近机器语言的东西。还有其他我不知道的事情吗?是否有任何资源可用于学习机器代码编程?最好在8位微控制器/微处理器上。 这个问题与我的相似,但是我首先对实践学习感兴趣,然后对理论有所了解。

4
为什么不能轻松地反编译本机代码?
使用基于字节码的虚拟机语言(例如Java,VB.NET,C#,ActionScript 3.0等),有时您会听到,只需从Internet下载一些反编译器,并在其中运行字节码一次,这是多么容易,并且通常,您会在几秒钟内想到与原始源代码相差不大的内容。据说这种语言特别容易受到攻击。 最近,我开始想知道,为什么您至少不了解本机二进制代码最初是用哪种语言编写的(以及尝试将其反编译成哪种语言),却为什么对本机二进制代码却听不懂呢。很长一段时间以来,我发现这仅仅是因为本地机器语言比典型的字节码疯狂得多,而且更加复杂。 但是字节码是什么样的?看起来像这样: 1000: 2A 40 F0 14 1001: 2A 50 F1 27 1002: 4F 00 F0 F1 1003: C9 00 00 F2 本地机器代码是什么样(十六进制)?当然,它看起来像这样: 1000: 2A 40 F0 14 1001: 2A 50 F1 27 1002: 4F 00 F0 F1 1003: C9 00 00 F2 指令来自类似的思维框架: 1000: mov EAX, 20 …

3
为什么可执行文件依赖于操作系统而不依赖于CPU?
如果我编写C程序并将其编译为.exe文件,则该.exe文件包含对CPU的原始机器指令。(我认为)。 如果是这样,我怎么可能在运行现代Windows版本的任何计算机上运行编译的文件?每个CPU系列都有不同的指令集。那么.exe,无论使用哪种物理CPU,任何运行适当操作系统的计算机都可以理解我文件中的指令? 同样,通常在某些应用程序“下载”页面上的网站上,您可以下载Windows,Linux和Mac(对于每个操作系统,对于86和64位计算机,通常为两次下载)。为什么每个CPU系列的下载量都没有增加?

4
如何为ATM或电视等机器构建软件?
作为一个初学者,我只使用基于计算机的应用程序进行编程,但是自从我开始编程以来,我就经常遇到一个问题,我无法正确回答。 机器不是自己行动,这是程序员的工作,他告诉机器人做什么和何时做,但是我的好奇心在于计算机。我将在本文中以ATM软件为例,但请记住,还有很多其他名称,例如洗衣机显示器,电视,手机等。 这些机器的软件究竟是如何构建的?我想这与基于计算机的编程不可能完全相同。他们使用哪种语言来使这些工作正常工作,以及如何完成工作?有专门从事这种编程的程序员吗?使这些机器变成现实的过程是什么?

6
“用C语言编写一个汇编程序。” 为什么要用高级语言编写用于低级语言的机器代码翻译器?
我的微处理器班老师给了我们一个作业,说: “用C语言编写一个汇编程序。” -我亲爱的教授 所以对我来说似乎有点不合逻辑。 如果我没搞错,汇编语言是从机器代码到高级语言之旅的第一步。我的意思是C是比汇编语言更高级的语言。那么,用C编写汇编语言有什么意义呢?在没有C语言的情况下,他们过去在做什么?他们是用机器代码编写汇编程序吗? 对我来说,用高级语言为低级语言编写机器代码翻译器没有任何意义。 假设我们已经创建了一个全新的微处理器架构,该架构甚至没有C编译器。用C编写的汇编程序能否模拟新架构?我的意思是没用吗? 顺便说一下,我知道GNU汇编器和Netwide汇编器是用C编写的。我也想知道为什么它们是用C编写的? 最后,这是我们的教授提供给我们的简单汇编程序的示例源代码: // to compile, gcc assembler.c -o assembler // No error check is provided. // Variable names cannot start with 0-9. // hexadecimals are twos complement. // first address of the code section is zero, data section follows the code section. //fout …


1
机器代码JIT和执行禁用位
如果CPU / OS具有“执行禁用”位,运行时生成的机器代码(例如JIT的输出)如何由CPU实际执行? 据我所知,许多现代处理器和操作系统包括用于支持NX位,(包括Intel和ARM),这防止了机器代码被存储在任何地址其它不是从正在执行的编译的二进制的代码部分。显然,这是一个不错的安全优势,因为它可以防止外壳代码注入攻击。 但是,如何动态生成机器代码的JIT引擎(如LLVM)如何解决这一问题?
10 machine-code  jit  llvm 

5
编译器作者实际上是否需要“理解”机器代码?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 6年前关闭。 可能是一个奇怪的问题。 一个编写C ++编译器(或任何非VM语言)的人:是否需要能够读写原始机器语言?这是如何运作的? 编辑:我专门指的是编译为机器代码的编译器,而不是其他某种编程语言。
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.