问题标签 [low-level-code]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
6 回答
11834 浏览

java - 学习 Java 字节码和 JVM

在最近提出的一个问题中,我头脑简单的回答突出了我对 Java、JVM 以及代码如何编译和运行的许多误解。这使我产生了一种将我的理解降低到较低水平的愿望。我对像汇编这样的低级理解没有任何问题,但字节码和 JVM 让我感到困惑。面向对象的代码是如何在低层次上被分解的,我对此一无所知。我想知道是否有人对如何了解 JVM、字节码和 Java 的低级功能有任何建议。是否有任何实用程序可以让您直接编写和运行字节码,因为我相信亲身体验某事是加深对它的理解的最佳方式?此外,我们将不胜感激有关此主题的阅读建议。

编辑:次要问题。所以我有一个子问题,答案给了我一个有趣的想法来了解 jvm,仅以可读的语法编写像 Brainf**k 或 Ook 这样非常简单的语言的合理性是什么(也许我什至可以开发它最终支持oo)编译成字节码是?那会是一次很好的学习经历吗?

0 投票
4 回答
257 浏览

c - C 编程和 error_code 变量效率

我读过的大多数代码都使用int标准错误处理(从函数等返回值)。但是我想知道使用uint_8will a compiler 是否有任何好处——阅读:大多数架构上的大多数 C 编译器——使用立即地址模式生成指令——即将 1 字节整数嵌入到指令中? 我正在考虑的关键指令是函数返回后的比较,使用 uint_8 作为其返回类型。

我可能会错误地思考事情,因为引入 1 字节类型只会导致对齐问题——编译器喜欢将东西打包成 4 字节可能是完全理智的原因,这可能是每个人都只使用整数的原因——并且因为这是与堆栈相关的问题,而不是堆,所以没有真正的开销。

做正确的事是我的想法。但是,为了争论,可以说这是一种流行的廉价微处理器,用于智能手表,它配置有 1k 的内存,但在其指令集中确实有不同的寻址模式:D

另一个稍微专门化讨论的问题(x86)是:文字是:

同类型?或者编译器会在第二种情况下生成一个 8 字节的文字。如果是这样,它可以使用它来生成一个比较指令,该指令将文字作为立即值,并将返回的 int 作为寄存器引用。请参阅 CMP 指令类型。.

x86 指令集的另一个参考。

0 投票
3 回答
3035 浏览

audio - 在哪里可以找到低级声音编程理论教程

我是一名中级图形程序员。我想从头开始学习音频/声音处理理论。

就像“A 像素”及其组件 R、G、B、A 是图形编程的基本部分一样。我想知道类似的声音编程。

谁能给我指出好的链接?另外我想知道一些允许我操纵声音的库(最好是便携式的)。可以直接处理 mp3、amr 文件的东西。

我也不介意书籍推荐:)

0 投票
1 回答
2088 浏览

c - .rodata 搬迁相关问题

我正在尝试为没有虚拟内存(或者更准确地说是操作系统)的机器编写一个 C 程序,并且我在 .rodata 部分,或者更准确地说是那里的东西遇到了一些困难。出现的问题是,尽管在链接期间这些节位于明确定义的地址,但当程序开始执行时,它正在被重新定位。

例如:假设我的程序开始链接到从 0x1000 开始,当它被执行时,应该在 0x1000 的内容被重新定位在 0xff1000。

话虽这么说,我的问题是,通常进入 .rodata 的内容是由编译器(gcc)“硬编码”的,并且由于重定位和 gcc 对它们的地址进行硬编码,我有点丢失了内存中的 .rodata 常量,因此它们获得绝对偏移量而不是相对偏移量。

有没有一种方法可以让 .rodata 常量具有相对偏移量而不是绝对偏移量。相对,我的意思是相对于任何活动的进程寄存器?

0 投票
2 回答
4000 浏览

c - 使用 read() 获取用户输入而不是 scanf

我试图使用 read() 函数来获取用户输入,但我在文档中唯一能找到的是关于从文件中读取,这是在 Linux c 语言中。我还想使用 write() 向控制台显示一些内容。

有谁知道这是怎么做到的?

0 投票
4 回答
1359 浏览

assembly - 寻找低级编程语言的学习资料

我希望学习用于编写驱动程序和固件以及其他操作系统的裸机编程,但我终其一生都找不到任何好的学习材料来学习这些语言。我为 asm 找到的宝石很少而且相差甚远,而且我找不到任何关于直接十六进制编程的东西。当我说直接的十六进制时,我的意思是你可以在 Linux 内核的固件部分找到的那种东西。这是我在两个月的搜索中得到的最接近的结果:http ://www.omnimaga.org/index.php?topic=6272.0并且本教程的信息太少,并且没有根据我的知识进行跟进。

TL;DR:我想学习十六进制。在哪里?

注意:我确实意识到这将是一项多么困难、具有纪念意义和受虐狂的努力。你不必告诉我。在这个自我鞭笞的旅程中,我会比没有学习材料做得更好。

第二点:我已经对操作系统、内核和 I/O 设备的内部工作原理以及内存的工作原理和分配方式有了很多了解,并且我已经对平面组装有基本的了解。

我内心的极客是不安分的!

0 投票
1 回答
5976 浏览

arm - 使用 Qemu 进行 ARM 汇编

好吧,我已经在整个互联网上搜索了将使用 arm-linux-gnueabi-as 和 qemu 运行的代码。打印一个整数值。从字符串。例行公事会有所帮助。

0 投票
1 回答
924 浏览

assembly - 程序的机器代码指令

我们如何把程序指令 c = ab; 在机器代码指令中?我已经获得了操作码、a=80、b=81、c=82 的内存地址和程序计数器 = 30 hex。指令长 16 位,4 位操作码,4 位寄存器和 16 位内存地址。

我只需要知道它是如何开始的正式方式。这是因为我真的不明白我的讲师教什么。如果我能找到明确的方向,那么我有信心在没有讲师帮助的情况下做到这一点。

0 投票
3 回答
14217 浏览

c - 如何检查文件描述符是否已关闭?

在 POSIX 环境中,当使用系统调用来操作文本文件 ( open(), close(), read(), write()) 时,有没有办法检查我在使用时是否真的关闭了文件描述符close(file_descriptor)

示例

0 投票
1 回答
93 浏览

c - 什么是“完全错误捕获”?

仅使用低级 I/O 用 C 语言编写程序。

程序必须具有完整的错误捕获。特别是程序应该使用 perror() 来报告系统错误......

在我的程序中...

如果我为每次读/写尝试实现这样的代码,这是否会被视为“完全错误捕获”?

注意test()仅用于调试,稍后将被删除: