Questions tagged «low-level»

有关系统低级方面的问题:靠近底层细节和硬件的编程。

2
您如何处理代码中的抽象理解?
在查看新的代码库时,我喜欢从下至上的方法开始。 我在其中理解一个文件,然后移至下一个抽象。 但是很多时候我发现自己忘记了底层抽象在做什么。 因此,在这一点上,我发现自己陷入了无尽的循环,回到我以前完全理解的文件,然后尝试重新学习它们。同时尝试弄乱彼此之间相互联系的许多其他抽象。 是否有更好的策略来应对这种情况? 我是否应该忘记较低级别的细节,并将其视为既定知识?但是即使如此,很多时候仍需要对底层抽象有一个先前的了解,以了解当前抽象在做什么。

8
逆向工程:它真正有什么好处?[关闭]
很难说出这里的要求。这个问题是模棱两可,含糊,不完整,过于宽泛或夸张的,不能以当前的形式合理地回答。如需帮助澄清此问题以便可以重新打开, 请访问帮助中心。 7年前关闭。 我有一些无辜/初学者的问题: 逆向工程有什么用? 作为程序员,我应该学习逆向工程的技巧吗? 对于有经验的程序员有什么好处?

7
使用C而不是Assembly有哪些优点/缺点?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我目前正在研究电信和电子领域的工程学,我们已经从微处理器编程的汇编程序迁移到了C语言。我怀疑这是个好主意。与汇编相比,C有哪些优缺点? 我看到的优点/缺点是: 优点: 我可以说C语法比汇编器语法更容易学习。 使用C可以更轻松地制作更复杂的程序。 学习C比学习汇编器更有效率,因为围绕C的开发工作比汇编器要多。 缺点: 汇编器是比C更底层的编程语言,因此它非常适合直接对硬件进行编程。 暗示您可以使用内存,中断,微寄存器等的灵活性更高。
15 c  low-level  assembly 

5
高级与低级编程。我真的必须选择吗?[关闭]
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 8年前关闭。 每隔一段时间,我都会被问到我最喜欢的最低或最高水平的访谈。在我看来,隐性信息是他们既是专业,又想知道我要往哪个方向发展。麻烦的是,我似乎都喜欢。低水平是极具挑战性的,通常需要大量深奥的知识。高层次是所有性感事物发生的地方:人们直接使用的应用程序,可以容易地以所有人都可以访问的方式展示(展示)的结果,然后您可以使用真正的高级工具并与新技术进行交互。 我真的很想同时做这两个事情,即使这意味着要在两者之间交替工作(我怀疑有些工作可以让我同时做这两个事情),但是我猜测这个行业对专家的奖励要比对通才的奖励更大。如果我从不选择一个,真的会在职业上有问题吗?从某种意义上说,如果我要辞掉一份工作去做另一件事,那么我就不会经历任何“摩擦”(假设我处于合理的循环中),这是否可行?在这里你能做到既存在就业机会? 我真的必须选择一个吗?

5
如今,哪些语言用于底层编程?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 6年前关闭。 当我听到诸如驱动程序,嵌入式系统,操作系统等的底层编程时,我会立即想到C甚至C ++。但主要是C。 但是,其他哪些语言也可以用于此类任务?今天,我的意思是,不是已经被使用。

4
每个C程序员必须注意哪些安全风险/漏洞?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 4年前关闭。 与硬件的密切联系存在许多安全风险,这与使用高级编程语言经过测试和验证的API形成对比。与诸如Java之类的语言相比,用C引起缓冲区溢出要容易得多。 每个C程序员都应该意识到哪些风险或漏洞(例如缓冲区溢出)(与C程序员相关的IE漏洞)?这些可能导致什么问题?如何避免它们,以及导致这些错误在程序中发生的常见错误是什么?

4
将原始字节写入文件是否有危险?[关闭]
已关闭。这个问题需要更加集中。它当前不接受答案。 想改善这个问题吗?更新问题,使其仅通过编辑此帖子来关注一个问题。 5年前关闭。 我正在解决Pearls编程中的一个问题-具体来说,是一个程序的实现,该程序对最多包含10,000,000个整数的文件进行排序(第1栏,问题3)。由于这本书没有指定数据应如何存储在文件中,因此我正在考虑将整数存储为原始字节(还有其他一些约束使原始字节成为不错的选择)。我以前从未在如此低的水平上工作过,所以我想知道是否有什么危险值得我注意。例如,当我将原始字节写入文件时,是否需要担心意外使用某种文件结束序列? 编辑: 我现在意识到我的问题有多广泛。我的意思确实是更具灾难性的问题,例如意外覆盖磁盘上的其他文件。抱歉,我本来不清楚。
12 low-level  byte 

4
低暂停GC背后的算法是什么?
某些语言(例如Java)引入了低暂停GC。 这些GC可以完成大部分工作,而不会暂停整个世界。这显然是一个相当棘手的问题,因为它需要在线程修改内存时对其进行分析,从而导致可以在进程开始时使用该数据,而在完成时不再使用该数据,或者似乎是垃圾的数据,但是因为参考已移动到内存中,并且从未出现在GC所寻找的位置。 因此,基本上来说,其背后的算法是什么? 研究论文或真正技术文章的链接将被视为有效答案,因为该主题确实是技术性的。

8
作为程序员学习计算机体系结构
按照目前的情况,这个问题并不适合我们的问答形式。我们希望答案得到事实,参考或专业知识的支持,但是这个问题可能会引起辩论,争论,民意调查或扩展讨论。如果您认为此问题可以解决并且可以重新提出,请访问帮助中心以获取指导。 7年前关闭。 我通常会在SO和其他地方(教师,书籍作者等)碰到大师,他们会说一些类似的话"This will cause alignment issues"或其他低级技巧。 我想了解所有relevant与编程有关的花絮。现在通常当我看到低级书籍(例如计算机体系结构书籍)时,它们太低级了,并且适合那些主要关注计算机体系结构而不是软件设计的人们。 您是否对与程序员相关的入门书籍有一些建议?

4
LLVM低级别是哪种方式?
以何种方式(S)是LLVM(低级虚拟机)的低等级?(在撰写本文时,我在其网站上未找到缩写“ LLVM”的这种扩展,但在Wikipedia上却发现了这种扩展。) 它是为(编译器基础结构)设计的目的而被称为“低级”,还是因为它比其他工具在“低级”上工作? 作为(某种)“说明”,LLVM是否比JVM和CLR低,或者仅设计用于“低级”用途?

7
从C中学到了哪些高级语言无法学习的原理?[关闭]
已关闭。这个问题是基于观点的。它当前不接受答案。 想改善这个问题吗?更新问题,以便通过编辑此帖子以事实和引用的形式回答。 3年前关闭。 我相信C是学习编程背后原理的好语言。对于那些与高级语言(如Ruby)“相去甚远”的低级语言,您打算学什么?
11 c  low-level 


3
为什么编译器通常只为安装它们的平台生成可执行文件?
我是C ++开发人员,为了更好地理解跨平台开发,我试图更好地了解编译器的一些实现细节以及它们如何精确创建OS特定的二进制文件。在研究过程中,我意识到,至少有一段时间,您为特定平台下载的大多数编译器仅针对该平台编译了二进制文件。因此,如果您下载了Windows编译器exe附带的IDE,则该编译器将只能针对x86-x64 Windows应用程序而非Linux或Mac应用程序编译程序。 现在,我了解到不同的平台需要不同的二进制格式,但是为什么说Windows上的可视C ++编译器很难生成Linux二进制可执行文件呢?只要您具有运行CPU的汇编指令以及特定于OS的库,您是否不应该能够在任何计算机上为任何平台编译可执行文件?

5
声明一个volatile变量是什么意思?
许多低级程序使用volatile关键字来进行内存映射的类型等,但是我对其在后台真正执行操作感到困惑。换句话说,当编译器没有“优化”内存地址时,这意味着什么?
9 c++  c  low-level 

4
内存管理,用于在C ++中的线程之间快速传递消息
假设有两个线程,它们通过彼此异步发送数据消息进行通信。每个线程都有某种消息队列。 我的问题很低:可以期望什么是管理内存的最有效方法?我可以想到几种解决方案: 发件人通过创建对象new。接听电话delete。 内存池(用于将内存传输回发送方) 垃圾收集(例如Boehm GC) (如果对象足够小)按值复制以避免完全分配堆 1)是最明显的解决方案,因此我将其用于原型。很有可能它已经足够好了。但是与我的特定问题无关,我想知道如果要针对性能进行优化,哪种技术最有前途。 我希望从理论上讲池化是最好的,尤其是因为您可以使用有关线程之间信息流的更多知识。但是,我担心这也是最难解决的问题。很多调整... :-( 此后,垃圾收集应该很容易添加(在解决方案1之后),我希望它表现的很好。因此,我想如果1)效率太低,这是最实用的解决方案。 如果对象又小又简单,则按值复制可能是最快的。但是,我担心这会在受支持的消息的实施方面造成不必要的限制,因此我想避免这种情况。
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.