问题标签 [low-level]

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 投票
3 回答
528 浏览

blackberry - How to create a BlackBerry App that access low level hardware?

I've written some BlackBerry apps, but now i'm trying to write one that must access the hardware (keyboard) in some low level way, and I can't seem to find a way to do it, nor any help to it in the 'official' boards.

The thing is, I need to know when, at any time, the '$' key is pressed in the blackberry keyboard, so my app (or resident service) can catch it, stop the '$' char from displaying, and if the user presses a vowel next, then add an accent to that vowel... and if it presses another key, just send back the '$' char + the other char.

i.e. '$' + 'a' = á

In other words, I need to create an app or service that converts the '$' key into an accent key, just like typical non-US PC keyboards works.

Now here's the problem: The whole Blackberry OS works under a Java Virtual Machine (Kind of making the JVM the actual OS). So as you can imagine, every app written for it is written in Java.

There's obviously a set of special blackberry api libraries into their Java implementation so the developer is able to access particular Blackberry functions and features... however there doesn't seem to be a thing that I can use to achieve my particular task.

But then maybe there is, and I haven't found it, since I'm still new to Blackberry Programming.

So, in that note, any help or comment will be greatly appreciated.

-Gabriel Alonso.

0 投票
3 回答
801 浏览

c++ - 有没有可以用来代替脚本的低级语言?

我是一个“高级”脚本编写人员。我所有的代码都是基于类的 PHP 或 JavaScript。但是,我想知道对于“低级”编译语言(如 C 或 C++)是否有任何形式的有用解释器项目(听起来很奇怪吧?)。

这一切都发生在我偶然发现http://g-wan.com/并且对您可以设置 C 代码以作为服务器脚本运行的事实而着迷时。但是,该项目几乎没有用,因为它由一个人运行并且是封闭源代码。

那么,是否有任何“低级”语言可以通过在运行时编译它们来使它们更容易运行。或者这只是一个等待发生的严重事故,这解释了为什么这是我能找到的唯一项目?

能够为 C 脚本转储 PHP/Ruby/Python 将真正加快我们的网站速度。

0 投票
2 回答
1315 浏览

ios - 开发人员可以访问的最底层的官方触摸输入 API 是什么?(苹果手机)

开发人员可以访问的最底层的官方触摸输入 API 是什么?(苹果手机)

0 投票
5 回答
366 浏览

c++ - 需要高级低级编程的书籍和网站建议

我想学习低级编程的所有高级细节,所以我希望能够

  • 学习高级c/c++
  • 使用和不使用内联汇编优化我的代码
  • 了解 exe、dll、线程、进程的内部结构
  • 有效利用 SSE、3DNow、MMX 等技术
  • 调试和反汇编可执行文件/库并了解里面发生了什么
  • x86、MIPS、ARM、PowerPC等不同cpu/平台的差异/特性
  • 我的第一个目标是基于 x86 Windows 的系统。之后,出现了基于 linux 的平台。嵌入式系统紧随其后。任何书籍、网站、教程、论坛、社区都可以直接给我正在寻找的东西。
    谢谢..

    0 投票
    5 回答
    37160 浏览

    assembly - 要学习汇编 - 我应该从 32 位还是 64 位开始?

    我真的很想学习汇编。我非常擅长 c/c++,但希望更好地了解较低级别的情况。

    我意识到以前曾提出过与装配相关的问题,但我只是在寻找一些特别适合我的情况的方向:

    我正在运行 Windows 7,并且对如何开始使用程序集感到困惑。我是否必须从 x64 开始,因为我正在运行 Windows 7?有人说“先从 32 位开始”——我该怎么做呢?我的操作系统与我为“32”或“64”位编写程序集的能力有什么关系。实际上,“n 位”汇编是什么意思,其中 n 是一个数字?


    编辑:

    以下是一些帮助我开始组装的链接;其他刚入门的人可能会发现它们很有帮助。当我继续我的组装之旅时,我会不断更新这个列表:)

    注意:正如我一直在学习的那样,我决定专注于使用 masm32 进行编程。因此,以下大部分资源都集中在这一点上。

    • 标记 wiki(初学者指南、参考手册、ABI 文档等。)
    • www.masm32.com
    • X86 组装维基书
    • X86 Dissassembly WikiBook(非常适合理解一些约定,以及高级代码如何转换为汇编的基础知识)
    • WinAsm IDE(与 masm32 配合得很好)
    • 简介:Windows 程序集(所有代码示例均适用于 masm32)
    • 中断列表
    • 装配教程(非常有助于理解核心概念)
    • x86 组装指南
    • Agner Fog 的软件优化资源,包括一些关于在不同平台(Windows 与 Linux/OS X)上调用约定的好东西,以及许多如何有效地做特定事情的例子。不适合初学者,但适合中高级读者。

      (他还为 Intel 和 AMD CPU 的每条指令提供了详细的性能信息,非常适合进行认真的性能微优化。一些初学者可能想看看其中的一些内容,以开始思考 CPU 的工作原理,以及为什么你可能会做某事方式而不是另一种方式。)

    0 投票
    2 回答
    45329 浏览

    assembly - 汇编 - .data、.code 和寄存器...?

    所以今天早上我发布了一个关于装配的困惑问题,我得到了一些非常真诚的帮助,我真的很感激。

    现在我开始着手组装并开始了解它是如何工作的。

    我觉得我理解的东西包括堆栈、中断、二进制/十六进制,以及大多数基本操作的一般情况(jmp、push、mov 等)。

    我正在努力理解并希望得到帮助的概念如下 - 如果您能解决以下任何问题,这将是一个巨大的帮助:

    1. .data 部分到底发生了什么?是我们声明的那些变量吗?
    2. 如果是这样,我们可以稍后在代码部分声明变量吗?如果不是,为什么不呢?如果是这样,那么我们如何以及为什么使用数据部分?
    3. 什么是寄存器?它与变量相比如何?我的意思是我知道这是一个存储一小部分信息的位置……但这对我来说听起来就像一个变量。
    4. 如何制作数组?我知道这似乎有点随机,但我很好奇我将如何去做这样的事情。
    5. 是否有一个关于每个寄存器应该用于什么的常见做法列表?我仍然没有完全理解它们,但注意到有些人说,例如,应该使用某个寄存器来存储来自过程的“返回值”——是否有一个全面的或至少是信息丰富的此类做法列表?
    6. 我学习汇编的原因之一是为了更好地理解我的高级代码背后发生了什么。考虑到这一点——当我用 C++ 编程时,我经常考虑堆栈和堆。在汇编中,我知道堆栈是什么——“堆”在哪里?

    一些信息:我将 masm32 与 WinAsm 一起用作 IDE,并且我正在使用 Windows 7。我以前有很多使用高级语言(如 c++/java)进行编程的经验。


    编辑:感谢大家的帮助,像往常一样提供丰富的信息!好东西!最后一件事——我想知道堆栈指针和基指针或 ESP 和 EBP 之间有什么区别。有人可以帮我吗?

    编辑:我想我现在明白了...... ESP 总是指向堆栈的顶部。但是,您可以将 EBP 指向任何您想要的位置。ESP 是自动处理的,但您可以使用 EBP 做任何您想做的事情。例如:

    在这种情况下,EBP 现在指向持有 4 的地址,但 ESP 现在指向持有 2 的地址。

    在实际应用中,6、5 和 4 可能是函数参数,而 3 和 2 可能是该函数中的局部变量。

    0 投票
    4 回答
    2635 浏览

    assembly - 为什么每当我尝试使用中断时,我的 masm32 程序就会崩溃?

    这是代码:

    结果:http: //img705.imageshack.us/img705/3738/resultom.png

    “test.exe 已停止工作” - 当它到达中断时总是正确的。

    这是我试图使用的中断。它应该简单地退出程序。我尝试过的其他方法包括字符输入/输出等。没有任何效果。

    我在 Windows 7 上,使用带有 WinAsm IDE 的 masm32。

    有很多很酷的事情似乎我应该能够用中断来做......但是,每当我尝试使用中断时它就会崩溃 - 总是以同样的方式。

    这似乎相关并且可能有用:DOS Interrupt in masm x86 assembly crashing

    ......但我真的无法从中弄清楚任何事情。

    有什么建议么?

    0 投票
    7 回答
    1079 浏览

    assembly - 读取然后条件写入与写入

    平均而言,哪个更快 - 检查值然后,如果需要,分配,还是简单地分配?或者,用 C++ 术语来说:

    或者

    假设 if() 条件以 50% 的概率为真。答案很可能是高度依赖于架构的——请说出您的低级考虑。写总是弄脏缓存线——对吧?因此,通过避免写入,我们可以避免 0.5 种情况下的缓存刷新。但是一个足够聪明的缓存可能会检测到一个微不足道的写入,而不是它本身。但是无条件写入总是恰好是一次内存操作,而读写平均是 1.5 次操作。

    免责声明:这是一个好奇的问题,而不是我实际面临的问题。

    0 投票
    7 回答
    408 浏览

    programming-languages - 为什么您使用表达力较差的语言,我也应该使用吗?

    我是一名 Python 程序员,也懂一点 Ruby 和 PHP。我对 Java 的了解还不够,无法做任何有意义的事情,而且我当然不知道 C、C++ 或其他低级语言。我听说过所有“谁在乎速度,因为硬件便宜,但编码器很贵”的论点,我不想在这里引发争论。我想了解关于低级编程语言社区的两件事(无论是 C 还是汇编):

    1. 您选择仍然使用它的主要原因是什么(工作要求、速度、桌面与网络等)
    2. 我仍然值得花时间在游戏后期学习 C++(从金钱上讲)或其他东西,还是我会受益?

    此外,在选择原因时,请考虑动态类型与静态类型的优缺点。我主要为网络编程,但没有充分考虑到这一点,因为部分原因是网络就是我所知道的一切。

    0 投票
    1 回答
    330 浏览

    .net - 以编程方式确定文件的碎片状态

    是否可以确定特定文件的碎片状态(即该文件占用的不同碎片的数量)?如果是这样,如何使用.net 来完成?

    动机是这样的:我的应用程序将数据保存在 FileStream 中,按需更改其大小。这最终会导致文件碎片化。我想监视文件的碎片状态,并在此基础上决定是否应该复制文件并用新文件替换文件(从而在不更改 MFT 的情况下对其进行“碎片整理”)。