問題タブ [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.
blackberry - 低レベルのハードウェアにアクセスする BlackBerry アプリを作成するには?
私はいくつかの BlackBerry アプリを作成しましたが、現在、低レベルの方法でハードウェア (キーボード) にアクセスする必要があるアプリを作成しようとしています。 「公式」ボードで。
問題は、Blackberry キーボードで「$」キーがいつ押されたかをいつでも知る必要があるため、アプリ (または常駐サービス) がそれをキャッチして、「$」文字の表示を停止し、ユーザーは次に母音を押し、その母音にアクセントを追加します...そして別のキーを押すと、「$」文字+他の文字を送り返すだけです。
つまり、'$' + 'a' = á
つまり、一般的な非 US PC キーボードが機能するのと同じように、「$」キーをアクセント キーに変換するアプリまたはサービスを作成する必要があります。
ここで問題があります。Blackberry OS 全体が Java 仮想マシンの下で動作します (JVM を実際の OS にするようなものです)。ご想像のとおり、このアプリ用に作成されたすべてのアプリは Java で作成されています。
開発者が特定の Blackberry 機能と機能にアクセスできるように、Java 実装に特別な Blackberry API ライブラリのセットがあることは明らかですが、特定のタスクを達成するために使用できるものはないようです。
しかし、私はまだ Blackberry プログラミングに慣れていないので、まだ見つかっていません。
そのため、そのメモでは、どんな助けやコメントも大歓迎です。
――ガブリエル・アロンソ。
c++ - スクリプトの代わりに使用できる低水準言語はありますか?
私は「高レベル」のスクリプト担当者です。私のコードはすべて、クラスベースの PHP または JavaScript です。ただし、C や C++ などの「低レベル」のコンパイル済み言語用の便利なインタープリター プロジェクトの形式があるかどうかを知りたいです (変に聞こえますか?)。
これはすべて、私がhttp://g-wan.com/に出くわし、サーバー スクリプトとして実行するように C コードをセットアップできるという事実に魅了されたときに思いつきました。ただし、そのプロジェクトは 1 人の人物によって実行され、ソースがクローズドであるため、ほとんど役に立ちません。
それで、実行時にコンパイルすることで簡単に実行できるようにする「低レベル」言語用のものはありますか。それとも、これが起こるのを待っているただの悪い事故ですか?
PHP/Ruby/Python for C スクリプトをダンプできると、サイトの速度が大幅に向上します。
ios - 開発者からアクセスできる最も低レベルの公式タッチ入力APIは何ですか?(iPhone)
開発者からアクセスできる最も低レベルの公式タッチ入力APIは何ですか?(iPhone)
c++ - 高度な低レベル プログラミングに関する本と Web サイトの提案が必要
低レベルプログラミングの高度な詳細をすべて学びたいので、できるようになりたいです
ありがとう..
assembly - アセンブリを学習するには、32 ビットと 64 ビットのどちらから始める必要がありますか?
私は本当にアセンブリを学びたいと思っています。私は c/c++ がかなり得意ですが、下位レベルで何が起こっているのかをよりよく理解したいと思っています。
以前にアセンブリ関連の質問があったことは承知していますが、私の状況に特有の方向性を探しているだけです:
Windows 7 を実行していますが、アセンブリの作業を開始する方法について混乱しています。Windows 7 を実行しているため、x64 から開始する必要がありますか? 「最初は 32 ビットから始めてください」と言う人もいますが、これを行うにはどうすればよいですか? 「32」または「64」ビットのアセンブリを作成する能力と、オペレーティング システムとの関係は何ですか。実際、「n ビット」アセンブリとはどういう意味ですか?n は数字です??
編集:
アセンブリを開始するのに役立つリンクをいくつか示します。始めたばかりの人は、役に立つかもしれません。組み立ての旅を続けながら、このリストを更新し続けます:)
注: 学んできたので、masm32 を使用したプログラミングに集中することにしました。したがって、以下のリソースのほとんどはそれに焦点を当てています。
- x86 タグ wiki (ビギナー ガイド、リファレンス マニュアル、ABI ドキュメントなど)
- www.masm32.com
- X86 アセンブリ WikiBook
- X86 Dissassembly WikiBook (いくつかの規則を理解するのに最適で、高レベルのコードをアセンブリに変換する方法の基本)
- WinAsm IDE (masm32 とうまく連携)
- はじめに: Windows 用のアセンブリ(すべてのコード例は masm32 用です)
- 割り込み一覧
- アセンブリ チュートリアル(主要な概念を理解するのに役立ちます)
- x86 組み立てガイド
Agner Fog のソフトウェア最適化リソースには、さまざまなプラットフォーム (Windows と Linux/OS X) での呼び出し規則に関するいくつかの優れた情報や、特定のことを効率的に行う方法の多くの例が含まれています。まったくの初心者向けではありませんが、中級者から上級者向けです。
(彼はまた、Intel および AMD CPU の各命令の詳細なパフォーマンス情報を提供しており、深刻なパフォーマンスのマイクロ最適化に最適です。一部の初心者は、CPU がどのように機能するか、およびなぜ何かを行うのかについて考え始めるために、その一部を調べたいと思うかもしれません。別の方法ではありません。)
assembly - アセンブリ-.data、.code、およびレジスタ...?
それで今朝、私は組み立てについて混乱した質問を投稿しました、そして私はいくつかの素晴らしい本物の助けを受け取りました、それは本当に感謝しています。
そして今、私は組み立てを始め、それがどのように機能するかを理解し始めています。
私が理解していると思うことには、スタック、割り込み、バイナリ/ 16進数、そして一般的にほとんどの基本的な操作(jmp、push、movなど)が含まれます。
私が理解するのに苦労していて助けを求めている概念は以下のとおりです-あなたが以下のいずれかに取り組むことができればそれは大きな助けになるでしょう:
- .dataセクションで正確に何が起こっていますか?これらの変数は宣言していますか?
- もしそうなら、後でコードセクションで変数を宣言できますか?そうでない場合は、なぜですか?もしそうなら、どのように、そしてなぜデータセクションを使用するのですか?
- レジスターとは何ですか?変数と比較してどうですか?つまり、それが小さな情報を格納する場所であることを知っています...しかし、それは私には変数のように聞こえます。
- 配列を作成するにはどうすればよいですか?私はこれが一種のランダムに見えることを知っていますが、私はこのようなことをどのように行うのか興味があります。
- 各レジスターの用途に関する一般的な慣行のリストはどこかにありますか?私はまだ完全には理解していませんが、たとえば、プロシージャからの「戻り値」を格納するために特定のレジスタを使用する必要があると言う人がいます-そのようなプラクティスの包括的または少なくとも有益なリストはありますか?
- 私がアセンブリを学んでいる理由の1つは、高水準コードの背後で何が起こっているのかをよりよく理解することです。そのことを念頭に置いて、C ++でプログラミングしているときは、スタックとヒープについてよく考えます。アセンブリでは、スタックが何であるかを知っています-「ヒープ」はどこにありますか?
いくつかの情報:私はIDEとしてWinAsmでmasm32を使用しており、Windows7で作業しています。c++/javaなどの高級言語でのプログラミングの経験が豊富です。
編集:いつものように非常に有益な、みんなの助けに感謝します!素晴らしいもの!最後にもう1つ、スタックポインタとベースポインタ、またはESPとEBPの違いは何でしょうか。誰かが私を助けることができますか?
編集:私は今それを手に入れていると思います...ESPは常にスタックの一番上を指します。ただし、EBPは好きな場所に向けることができます。ESPは自動的に処理されますが、EBPを使用して好きなことを行うことができます。例えば:
このシナリオでは、EBPは4を保持しているアドレスを指しますが、ESPは2を保持しているアドレスを指します。
実際のアプリケーションでは、6、5、および4が関数の引数である可能性がありますが、3および2はその関数内のローカル変数である可能性があります。
assembly - 読み取り、条件付き書き込み vs. 書き込み
平均してどちらが速いですか?値を確認してから、必要に応じて代入するか、単に代入しますか? または、C++ 用語で:
また
if() 条件が 50% の確率で真であると仮定します。答えは、ほとんどの場合、アーキテクチャに大きく依存します。低レベルの考慮事項を表明してください。書き込みは常にキャッシュラインを汚します - そうですか?したがって、書き込みを回避することで、0.5 ケースのキャッシュ フラッシュを回避できます。しかし、十分にスマートなキャッシュは、些細な書き込みを検出し、それ自体を汚さない可能性があります。ただし、無条件の書き込みは常に正確に 1 回のメモリ操作であり、読み書きは平均して 1.5 回の操作です。
免責事項: これは好奇心の問題であり、私が実際に直面している問題ではありません。
programming-languages - なぜあなたは表現力の低い言語を使うのですか?
私は Python プログラマーで、Ruby と PHP も少し知っています。私は Java について何か有意義なことを行うには十分な知識がありません。また、C、C++、またはその他の低レベル言語についてもまったく知りません。「ハードウェアは安いが、コーダーは高いので速度を気にする人はいない」という議論はすべて聞いたことがありますが、ここで議論を起こすつもりはありません。低レベルのプログラミング言語 (C 言語であろうとアセンブリであろうと) のコミュニティについて 2 つのことを理解したいと思います。
- それでも使用することを選択した主な理由は何ですか(仕事の要件、速度、デスクトップと Web など) ?
- ゲームの後半になっても、時間を取って C++ (金銭的に言えば) などを学習する価値はありますか? それともメリットがありますか?
また、理由を選択するときは、動的型付けと静的型付けの利点/欠点を考慮してください。私は主に Web 用のプログラムを作成していますが、Web しか知らないという事実もあり、そのことを十分には考慮していません。
.net - ファイルの断片化状態をプログラムで判断する
特定のファイルの断片化ステータス (つまり、このファイルが占有する個別の断片の量) を判断することはできますか? もしそうなら、これは.netを使ってどのように行うことができますか?
動機は次のとおりです。私のアプリケーションはデータを FileStream に保持し、そのサイズをオンデマンドで変更します。これにより、最終的にファイルが断片化されます。ファイルの断片化状態を監視し、それに基づいて、ファイルをコピーして新しいファイルに置き換える必要があるかどうかを判断します (したがって、MFT を変更せずに「最適化」します)。