【问题标题】:how an application gets executed from computer architecture point of view从计算机体系结构的角度来看应用程序是如何执行的
【发布时间】:2014-01-11 00:15:41
【问题描述】:

尊敬的社区成员, 我正在 coursera.org 上学习计算机体系结构课程 该课程介绍了应用程序转换为在微处理器上执行指令的想法。扩展这个想法,我想知道诸如文字处理器之类的应用程序或像 emacs 这样简单的应用程序是如何执行的。

我的意思是当您启动应用程序、开始键入、删除一个单词或一行、保存并退出应用程序时会发生什么。

是否可以看到程序启动时执行的指令,在打字模式等。如何查看每条指令的执行,它的操作数,内存和缓存访问?

如果问题看起来不完整,请添加缺失的部分以使其更有趣。

谢谢

【问题讨论】:

  • 在那个层面上真的真的真的真的真的很无聊。
  • 这就是为什么我们必须了解它才能重新思考并使其变得更好。你不同意吗?
  • 不,我没有。它不需要更有趣。它做它需要做的事情。
  • “它做了它需要做的事情”但是如何?我认为这不是魔法
  • 不,这不是魔法。非常非常无聊。

标签: linux hardware computer-architecture microprocessors


【解决方案1】:

我们将操作视为“将光标移动一个字母”、“滚动到下一行”或“输入字母 'a'”。计算机要简单得多。它以纯数学方式工作,并调用在寄存器或内存中加载和存储数据。所以“移动光标”真的是一个很长很长的链条:

  • 获取内存/注册位置 X
  • 为其添加一些价值,更新原始位置
  • 重复....
  • 现在所有参数都准备好了,调用系统调用来更新屏幕

一个简单的事情是查看从 C 语言代码转换为 ASM 然后转换为机器语言需要什么。请记住,即使是组装也比实际驱动机器的 0 和 1 更高。

将以下内容翻译成他们在课堂上使用的任何 ASM:

int result = 1;
int i;

for (i = 100; i > 0; i++)
{
    result *= i;
}

printf("%d\n", result);

是的,这是愚蠢的代码。但是看看在 ASM 中重新创建它所需的代码量。现在,跟踪该 ASM 的机器代码定义并将 ASM 转换为二进制文件。这很快就变得单调了。但是,一旦您了解它的工作原理,您就会了解 VMWare 的工作原理以及每个计算设备的工作原理。

【讨论】:

    【解决方案2】:

    我不知道具体的 coursera 课程是否足以满足你的需求。但是,为了简化起见,可执行文件是一组用于您的 PC 上的物理处理器的指令。定义了程序中每个函数的机器代码(程序集),您可以在运行时在各种调试器中看到它以及它访问的内存。这很有趣,我应该建议您,如果您已经熟悉至少一种编程语言,请在尝试直接学习汇编之前继续“编译器”。 Coursera 有一个相关的课程https://www.coursera.org/course/compilers,看起来很有趣。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2016-04-13
      • 1970-01-01
      • 1970-01-01
      • 2015-05-18
      • 1970-01-01
      • 1970-01-01
      • 2017-06-14
      • 2014-07-06
      相关资源
      最近更新 更多