问题标签 [machine-language]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
1952 浏览

c++ - C/C++ 程序是在 CPU 上运行还是在内核上运行?

我已经编程了好几年了,但有一件事我从来没有完全理解过:

有两种类型的编程语言。编译的和解释的,而编译的首先需要编译成解释语言,然后才能执行。

例如,C/C++ 需要先编译成机器语言,然后才能执行。

我的问题来了:谁真正运行编译的 C/C++ Windows/Linux 程序?它是由 CPU 直接解释,还是 OS Kernel 执行它并将命令传递给 CPU?

如果 CPU 直接执行它,Windows Kernel 怎么会拒绝一些调用呢?否则,这是否意味着内核也理解机器语言,或者非内核 C/C++ 程序不能编译为机器语言?

0 投票
1 回答
149 浏览

execution - 机器语言是如何运行的?

这个问题实际上与任何编程语言都没有关系,我认为它与那里的每一种编程语言都有关。

因此,开发人员将代码输入到 IDE 或类似的东西中。IDE 直接或间接地(可能涉及许多步骤:A 将其转换为 B 将其转换为 C 将其转换为 D 等)转换为机器语言(这只是一堆数字)。机器语言是如何解释和运行的?我的意思是,代码最终是否必须归结为某种机械的东西,或者它将如何运行?如果芯片运行代码,什么运行芯片?那是什么?那是什么?不停地不停地。

0 投票
2 回答
334 浏览

network-protocols - 通过 Internet 传输的数据是什么语言?

澄清一下,我是一个新手程序员,有一个非常基本的问题。如果处理器只理解机器语言,那么高级语言在呈现给处理器之前需要“翻译”或“解释”。我的问题是通过互联网发送的数据是什么语言的?它是以机器语言还是高级语言发送的?

我试图了解计算机如何相互通信以及如何在位/字节级别在它们之间传输数据。

提前致谢。

0 投票
1 回答
421 浏览

binary - MIPS 存储位的混乱,

嗨,我试图将一点存储到临时文件中。登记。我这样做正确吗?当我在做的时候,我想看看有多少个 1 是十进制数(0-16)的二进制形式,我这样做对吗?这是重要的代码块,其余的工作正常(只是输出,什么不是)

0 投票
3 回答
3858 浏览

loops - 用汇编语言打印 * 的三角形 (LC-3)

我正在尝试根据 N 的值打印一个星号三角形。我在这里的代码将只打印一整行 N *。我正在寻找的最终结果是:

我现在拥有的代码

谁能帮我完成这个?

0 投票
1 回答
755 浏览

assembly - 装配中的特定时间延迟

在我正在上的一堂职业课中,我们使用如下子程序作为时间延迟。

其中 (1000) 和 (FFFF) 是流动的、十六进制的 4 位数值。

我希望有人能帮我用这个程序准确地计时。(例如:10 秒)如果可能,请提供一个方程式供我和我的班级使用。

0 投票
1 回答
2942 浏览

string - 如何输入包含 1 到 50 个字符的字符串。(汇编)

我完成了问题的第一部分,即制作一个反向字符串程序,但现在我需要修改程序,以便用户可以输入一个包含 1 到 50 个字符的字符串。我不确定如何做到这一点,并想知道是否有人可以帮忙。这是在汇编语言顺便说一句

0 投票
2 回答
3554 浏览

assembly - 就地反转字符串 - NASM x86 汇编代码

我正在尝试在 NASM 中编写代码以将字符串反转到位,但我不断收到段错误。我发现一些人提出了类似的问题,但回答对我没有帮助。

继承人的代码:

0 投票
1 回答
853 浏览

assembly - SICXE 程序集中的反转整数列表

我的任务要求我列出一个数字列表,然后使用 SICXE 将它们以相反的顺序排列。我的问题出现在我实际上不知道如何检查反转是否确实发生的地方,所以我实际上无法判断我的程序是否按我想要的方式工作。我可以阅读转储并知道我的原始列表在哪里,但我不明白我应该在哪里看到反向列表以查看我所做的是否真的有效。我实际上无法在这里找到受人尊敬的名单。我假设它应该从 15F 开始,因为这是 BETA 以 10 个保留字开头的地方。但是由于那里没有任何显示,我认为这意味着我做错了什么,但我实际上不确定我是否正确。如果我是我应该如何解决我的问题?我将包括 .lst 文件以及 sic.log 文件。

.lst 文件

sic.log 文件

0 投票
1 回答
126 浏览

assembly - 了解在机器级别执行功能

我正在学习基于语言的安全性课程,我必须逐步了解当函数正确执行时堆栈中发生了什么,以便稍后我可以学习如何防止漏洞利用。到目前为止,我已经很好地理解了从堆栈中推送和弹出的内容以及 ESP、EBP 如何移动以跟踪帧。另外,我知道 EIP 保存在堆栈中。

我不知道函数中的代码在哪里实际执行以获得结果(我假设内存中的其他地方,堆?)如果我给出一个简单函数的演练,有人可以解释丢失的位(我'将用问题标记这些部分)。假设一个简单的函数:

在 main() 中使用 add(3,4) 调用;

在新函数初始化时,堆栈(从最低地址到最高地址)具有指向顶部的 ESP 和指向新帧的底部的 EBP。下面是main()。

现在,参数从右到左被压入堆栈。该函数调用将 EIP 的内容保存在堆栈上。【这是函数返回后要执行的下一条指令的地址?】

现在是 Prolog 部分:旧的 EBP 地址被压入堆栈,并使 EBP 指向 ESP。最后,局部变量被压入堆栈[这些只是它们的值存储的地址吗?]

Epilog 是为当前帧展开堆栈的时间。ESP 移至 EBP,因此(通常)无法访问局部变量。旧的 EBP 从堆栈中弹出,并指向其原始地址。ESP 指向保存的 EIP,这是调用 add(3,4) 之前的位置。

在我学习的解释中,最后一部分是返回指令将保存的 EIP 值弹出回 EIP 寄存器。[当然这不是函数中的 return 语句,而是机器级别的 ret 指令,对吧?]

最后一个问题,有人能解释一下函数中的代码在执行时发生了什么,以及调用、序言和结语发生在什么时候?或者提供一个清晰解释的好链接?

提前致谢(可以这么说:)