Questions tagged «x86»

8
为什么要(不)细分?
我正在研究操作系统和x86体系结构,当我阅读有关分段和分页的内容时,我自然地很好奇现代OS如何处理内存管理。从我的发现中,Linux和大多数其他操作系统从本质上回避了分段,而支持分页。我发现这样做的一些原因是简单性和可移植性。 分段(x86或其他方式)有什么实际用途,我们是否会看到使用它的健壮操作系统,或者它们将继续支持基于分页的系统。 现在,我知道这是一个加载的问题,但是我很好奇如何使用新开发的操作系统来处理分段。支持分页是否有意义,以至于没有人会考虑采用一种“分段”的方法?如果是这样,为什么? 当我说“避免”分割时,我的意思是Linux仅在需要时使用它。用户和内核代码/数据段只有4个段。在阅读英特尔文档时,我感觉到细分的设计考虑了更强大的解决方案。然后我又在很多场合被告知x86可能过于复杂。 在链接到Linux Torvald最初针对Linux的“公告”后,我发现了这个有趣的轶事。他稍后在几篇文章中说: 简而言之,我想说移植是不可能的。它主要是用C语言编写的,但是大多数人不会称呼我写C语言。它使用了我能找到的386的所有可能的功能,因为它也是一个向我传授386的项目。如上所述,它使用了MMU ,用于分页(尚未到磁盘)和分段。正是这种细分使其真正依赖386(每个任务都有一个64Mb的代码和数据段-4Gb中最多64个任务。任何需要超过64Mb /任务的人-坚韧的cookie)。 我想我自己对x86的试验使我提出了这个问题。Linus没有StackOverflow,因此他只是实现了它来进行尝试。

3
x64寄存器名称中的“ R”代表什么?
我知道32位寄存器的名称就像16位寄存器一样,带有“ E”前缀以表示扩展。我一直认为这意味着从16位扩展到32位,尽管我从未见过明确声明。 我试图找出“ R”的含义,但是我的Google技术使我失败了。有人知道吗
27 architecture  x86 

5
是否有关于x86汇编的经典书籍?[关闭]
关闭。这个问题是题外话。它当前不接受答案。 想改善这个问题吗? 更新问题,使它成为软件工程堆栈交换的主题。 5年前关闭。 有很多关于汇编的书。但是,它们通常处理我不关心的ISA,例如MIPS或ARM。我不处理这些架构;我没有理由尝试学习它们。 但是x86汇编书籍似乎...不存在。 假设例如,我正在尝试构建一个玩具编译器,以生成Windows Portable可执行文件。 是否有一本书是事实上的标准,用于描述有关x86组装的最佳实践,设计方法和其他有用信息?那本书使它与众不同吗?
25 learning  books  assembly  x86 

3
为什么通常首选多线程来提高性能?
此问题是从Stack Overflow 迁移而来的,因为可以在Software Engineering Stack Exchange上回答。 迁移 6年前。 我有一个问题,那就是为什么程序员似乎总体上喜欢并发和多线程程序。 我在这里考虑2种主要方法: 一种基本上基于信号的异步方法,或者只是许多论文和语言(例如,新的C#5.0)所调用的一种异步方法,以及一个用于管理管道策略的“伴侣线程” 并发方法或多线程方法 我只是说,我正在考虑这里的硬件和最坏的情况,并且我自己已经测试了这两种范例,异步范例是赢家,因为我不明白为什么人们有90%的情况当他们想要加快工作速度或充分利用他们的资源时,谈论多线程。 我已经在一台旧计算机上使用Intel四核测试了多线程程序和异步程序,该英特尔四核在CPU内不提供内存控制器,内存完全由主板管理,在这种情况下,性能令人震惊。多线程应用程序,即使是数量相对较少的线程(例如3-4-5)也可能是一个问题,该应用程序没有响应,并且运行缓慢且令人不快。 另一方面,一种好的异步方法可能不会更快,但也并不坏,我的应用程序只是等待结果并且不会挂起,它具有响应能力,并且伸缩性更好。 我还发现,线程世界中的上下文更改在现实世界中并不是那么便宜,实际上它相当昂贵,尤其是当您有两个以上的线程需要循环和相互交换来计算时。 在现代CPU上,集成的内存控制器的情况并没有什么不同,但我的观点是x86 CPU基本上是一台串行计算机,并且该内存控制器的工作方式与在主板上带有外部内存控制器的旧计算机的工作方式相同。 。上下文切换仍然是我应用程序中的一个相关成本,并且集成了内存控制器或较新的CPU具有2个以上内核的事实对我来说并不便宜。 因为我所经历的并发方法在理论上是好的,但在实践中却不是那么好,由于硬件强加了内存模型,很难很好地利用这种范式,而且还引入了很多问题,从使用到使用我的数据结构连接到多个线程。 同样,这两种范式都不能提供任何安全性,而只是在某个时间点完成任务或工作时,从功能的角度来看,它们确实非常相似。 根据X86内存模型,为什么大多数人建议对C ++使用并发,而不仅仅是异步方法?另外,为什么不考虑环境切换可能比计算本身更昂贵的计算机的最坏情况呢?

7
x86汇编中NOP指令和align语句的目的
自从我上一次组装课以来已经有一年左右的时间了。在该课程中,我们将MASM与Irvine库一起使用,以使其易于编程。 在我们完成了大多数指令之后,他说NOP指令实际上什么也不做,不用担心使用它。无论如何,这大约是期中考试,他有一些示例代码无法正常运行,因此他告诉我们添加一条NOP指令,它可以正常工作。我问我下课后为什么做,实际上做了什么,他说他不知道。 有人知道吗
15 assembly  x86 

9
我了解堆栈指针是什么-但是它的作用是什么?
堆栈指针指向堆栈的顶部,该堆栈以我们所谓的“ LIFO”为基础存储数据。偷别人的比喻,就像是一堆盘子放在顶部放在盘子里。堆栈指针OTOH指向堆栈的顶部“盘”。至少对于x86如此。 但是,为什么计算机/程序“关心”堆栈指针指向的内容呢?换句话说,拥有堆栈指针并知道其指向服务的目的是什么? C程序员可以理解的解释将不胜感激。
11 stack  x86 
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.