如何从计算机体系结构的角度来执行应用程序

时间:2014-01-11 00:15:41

标签: linux hardware computer-architecture microprocessors

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

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

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

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

谢谢

2 个答案:

答案 0 :(得分:2)

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

答案 1 :(得分:2)

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

  • 获取mem / reg location 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的工作原理以及每个计算设备的工作原理。