亲爱的社区成员, 我将在coursera.org上学习计算机体系结构课程。该课程提出了一个应用程序转换为在微处理器上执行指令的想法。扩展这个想法,我想知道如何处理诸如文字处理器之类的应用程序或像emacs这样简单的应用程序。
我的意思是当您启动应用程序,开始键入,删除单词或行,保存并退出应用程序时会发生什么。
是否可以在程序启动时,在输入模式等中查看执行的指令。如何查看每条指令的执行,操作数,内存和缓存访问?
如果问题似乎不完整,请添加缺失的部分以使其更有趣。
谢谢
答案 0 :(得分:2)
我不知道具体的课程是否足以满足您的需求。但是,为了简化,可执行文件是一组用于PC上物理处理器的指令。定义了程序中每个函数的机器代码(程序集),您可以在运行时查看它在各种调试器中访问的内存。这是非常有趣的,我建议你,如果你已经熟悉至少一种编程语言继续“编译器”,然后再尝试直接学习装配。 Coursera有一个相对的教训https://www.coursera.org/course/compilers,这似乎很有趣。
答案 1 :(得分:2)
我们将操作视为“将光标移动一个字母”,“滚动到下一行”或“输入字母'a'”。计算机 MUCH 更简单。它适用于纯数学,并调用在寄存器或内存中加载和存储数据。所以“移动光标”实际上是一个很长的链条:
一个简单的事情是看看将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的工作原理以及每个计算设备的工作原理。