並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 17 件 / 17件

新着順 人気順

アセンブリの検索結果1 - 17 件 / 17件

  • x86-64機械語入門

    この記事はx86-64の機械語を書けるようになるためのガイドとなることを目指します。読者はアセンブリー言語について既にある程度知っていることを想定します。 情報源 x86-64の機械語のオフィシャルなガイドはIntelのSoftware Developer ManualまたはAMDのAMD64 Architecture Programmer's Manualです。 Intel SDM: Intel® 64 and IA-32 Architectures Software Developer Manuals AMD64 Architecture Programmer's Manual, Volumes 1-5 このほか、Cから呼び出される関数を定義したり、Cの関数を呼び出すためには、呼び出し規約の知識も必要です。使用される呼び出し規約はOSに依存し、Unix系では主にSystem V ABI

      x86-64機械語入門
    • ARM入門/arm introduction

      2020/08/08 ARM入門勉強会の発表資料です。 https://connpass.com/event/180812/

        ARM入門/arm introduction
      • アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)

        GNU Assembler互換(サブセット)のアセンブラをGo言語でフルスクラッチで作ってみました。 開発22日目で自作Goコンパイラ(をセルフホストしたときに出力される20万行のアセンブリ)をアセンブルすることに成功しました。 どうやって作ったかというと、小さいコードを GNU Assembler (以下 as) に食わせて出力されたバイナリを観察する、を繰り返して中のロジックを推定し再現しました。as の実装は見ていません。(一瞬見たけど巨大すぎて何もわからなかった) アセンブラ自作は、やってみるとコンパイラ自作よりだいぶ簡単でハマりポイントも少ないので、学習テーマとしてはおすすめです。2箇所ほど難所(命令エンコーディングのルールを理解するのと、ジャンプ命令の最適化)がありましたがそれ以外はさくさく楽しく作れました。 作ってみた結果、アセンブリ言語の理解が深まったのはもちろんのこと、E

          アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
        • Go言語低レイヤー入門 Hello world が 画面に表示されるまで (GoConforenceTokyo2021)

          Go言語低レイヤー入門 Hello world が 画面に表示されるまで @DQNEO (ドキュネオ) Go Conference Tokyo 2021 2021-04-24

            Go言語低レイヤー入門 Hello world が 画面に表示されるまで (GoConforenceTokyo2021)
          • ハードウェアの知識が無い人向けのアセンブリ言語の話(draft)

            本記事は書きかけなので内容(タイトルすらも)は随時書き換わっていきます。ドラフトのうちは内容の正確性や文書全体としての整合性についても荒っぽい部分が多々あります。ご容赦ください。 はじめに 本記事はソフトウェア開発者がハードウェアに近い低レイヤといわれる領域に入門するとき、とくにアセンブリ言語に出会ったときにつまずきがちなことを紹介します。主な対象読者はJavaScriptやPythonなどのスクリプト言語などによるアプリ開発からソフトウェア開発に入った、それより下のレイヤになじみのない人です。 筆者は常々アセンブリ言語は技術的にものすごく難しいわけではないものの、学習につまずく人が非常に多いという印象を持っています。その主な原因の一つは、みなさんが普段慣れ親しんでいる人間に使いやすいように作られた高級プログラミング言語(以下高級言語)と、機械に解釈させやすいように作られているアセンブリ言

              ハードウェアの知識が無い人向けのアセンブリ言語の話(draft)
            • PlayStation Programming with MIPS Assembly and C

              This course is a deep dive into the world of PlayStation programming! We'll explore the PS1 hardware, understand its sub-components, and learn how to code games using MIPS assembler & the C programming language. We'll also learn how to use a PS1 SDK library paired with a modern development toolchain to be more productive and push fast polygons out of our console. We are about to enter the 5th gene

                PlayStation Programming with MIPS Assembly and C
              • GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER

                今回は、表題の通り x86/x86-64 の GNU/Linux でシステムコールをアセンブラから呼んでみる。 システムコールは、OS (ディストリビューション) のコアとなるカーネルがユーザ空間のプログラムに向けて提供しているインターフェースのこと。 なお、アセンブラの実装に関しては以下の二つを試した。 NASM (Netwide Assembler) GAS (GNU Assembler) アセンブラには INTEL 記法と AT&T 記法という二つのシンタックスがある。 NASM はデフォルトで INTEL 記法を、GAS はデフォルトで AT&T 記法を使うことになる。 使った環境は次の通り。 $ uname -sr Linux 4.15.0-65-generic $ nasm -v NASM version 2.13.02 $ as -v GNU assembler versio

                  GNU/Linux (x86/x86-64) のシステムコールをアセンブラから呼んでみる - CUBE SUGAR CONTAINER
                • .NET Framework 4.5.2/4.6/4.6.1のサポートが2022年4月26日に終了/1年の猶予の間に.NET Framework 4.6.2および.NET Framework 4.8への更新を

                    .NET Framework 4.5.2/4.6/4.6.1のサポートが2022年4月26日に終了/1年の猶予の間に.NET Framework 4.6.2および.NET Framework 4.8への更新を
                  • こわくないLLVM入門! - Qiita

                    対象読者 LLVMを勉強し始めたけど何からして良いのかわからない方 アセンブリがちょっとわかる 目標 LLVMの基本的な文法がわかるようになる 環境 Mac Mojave 10.14.6 LLVM 8.0.0 clang 8.0.0 (trunk 348837) LLVMってなに...? LLVMは一言で言えば、プログラミング言語を作成する為の基盤です。プログラミング言語はコンパイラによってバイナリに変換され実行することができます。それを言い換えれば、自分が考えたプログラミング言語のコンパイラを作ることで自作プログラミング言語を作れます。 そして、コンパイラは通常フロントエンド、ミドルエンド、バックエンドに分けられ、各プロセスで様々な処理をしています。特にミドルエンド、バックエンドでは中間言語や各アーキテクチャに対するたくさんの最適化を施さなければなりません。この最適化を預けてフロントエン

                      こわくないLLVM入門! - Qiita
                    • RISC-VでC言語のポインターを理解する! ポインターの動作と処理を詳細に解説した書籍が発売/『RISC-Vから学ぶC言語 ポインタ理解のためのアセンブリ入門』【Book Watch/ニュース】

                        RISC-VでC言語のポインターを理解する! ポインターの動作と処理を詳細に解説した書籍が発売/『RISC-Vから学ぶC言語 ポインタ理解のためのアセンブリ入門』【Book Watch/ニュース】
                      • 『低レイヤを知りたい人のためのCコンパイラ作成入門』を使ってやってみた、縛り実況と初見実況

                        Kernel/VM探検隊は、カーネルやVM、およびその他なんでもIT技術の話題ジャンルについて誰でも何でも発表してワイワイ盛り上がろうという会です。hsjoihs氏は、『低レイヤを知りたい人のためのCコンパイラ作成入門』を用いた縛り実況、初見実況について発表しました。 縛り実況、初見実況と呼ばれるタイプのゲーム実況が大好き hsjoihs氏(以下、hsjoihs):プレゼンその2をやります。 プレゼンその2、「Rui Ueyama compiler book any% 縛り実況(C-to-ELF category)」というタイトルで発表をしたいと思います。自己紹介はさっきやったので飛ばします。 みなさん、ゲーム実況は好きですか? 私は、ゲーム実況が大好きです。ゲーム実況がきっかけで大学の進路が決まったぐらいには大好きです。 司会者:へぇ。 hsjoihs:その中でも特に好きなのが、縛り実況

                          『低レイヤを知りたい人のためのCコンパイラ作成入門』を使ってやってみた、縛り実況と初見実況
                        • システムコールとは何なのか - Qiita

                          なぜシステムコールについて気にするのか システムコールとはOSが提供する機能をアプリケーションが利用する仕組みのことですが、システムコールについて知ることはアプリケーションの働きを理解する上で重要です。 なぜならアプリケーションの動作の中で、重要なもののほぼ全てはシステムコールを利用して実現されているからです。 例えば、ネットワークを利用した通信、ファイルへの入出力、新しいプロセスの生成、プロセス間通信、コンテナの生成などは、システムコールを使用することで実現されています。 逆にシステムコールを使わずにアプリケーションが出来ることと言えば、CPU上での計算とメモリへの入出力くらいでしょう。 この記事で解説する内容 この記事で解説する内容は、システムコールの一般的な性質や仕組みについてです。 そもそもシステムコールとは何なのか、どのような仕組みで実現されているのかというところを解説します。

                            システムコールとは何なのか - Qiita
                          • Rustで自作プログラミング言語を自作x86_64アセンブラでセルフホスティングした記録

                            この記事は言語実装 Advent Calendar 2022の23日目の記事です。 導入 2021年、私は llrl という自作プログラミング言語のセルフホスティングに取り組みました。 セルフホスティングには成功し、生成された処理系の実行ファイルのバイナリが完全一致するところまで辿り着きましたが、この言語処理系のバックエンドは「LLVMを使う」で終わっていたので、バックエンドの実装にもっと目を向けたいと思いました。そこで2022年は、この言語処理系に 新たにx86_64を直接ターゲットとするバックエンドを追加し、LLVMを用いずにセルフホスティングできるようにしました。 本記事はこの取り組みの振り返りとなります。 自作プログラミング言語の特徴とバックエンドの要件 llrlには大きな特徴が2つあります。 Hindley-Milnerベースの型推論による静的型付け (+型クラス) Lisp-l

                              Rustで自作プログラミング言語を自作x86_64アセンブラでセルフホスティングした記録
                            • How to Read Assembly Language

                              UPDATE: This article now has an ARM64 port. Why, in 2021, does anyone need to learn about assembly language? First, reading assembly language is the way to know exactly what your program is doing. Why, exactly, is that C++ program 1 MiB (say) instead of 100 KiB? Is it possible to squeeze some more performance out of that function that gets called all the time? For C++ in particular, it is easy to

                              • 📕 RustでRui Ueyama先生の低レイヤを知りたい人のためのCコンパイラ作成入門をやってみる1(環境構築から四則演算まで) | Happy developing

                                • .NET のアセンブリ

                                  アセンブリは、.NET ベースのアプリケーションの配置、バージョン管理、再利用、アクティベーション スコープ、およびセキュリティ権限の基本単位です。 アセンブリは、相互に連携して 1 つの論理的な機能単位を形成するように構築された型やリソースの集合です。 アセンブリは、実行可能 ( .exe) ファイルまたはダイナミック リンク ライブラリ ( .dll) ファイルの形を取る、.NET アプリケーションの構成要素です。 それらは、型の実装に関して必要な情報を共通言語ランタイムに提供します。 .NET と .NET Framework では、1 つまたは複数のソース コード ファイルからアセンブリをビルドできます。 .NET Framework では、アセンブリに 1 つまたは複数のモジュールを含めることができます。 これを使うと、より大規模なプロジェクトの計画が可能になり、複数の開発者が別

                                    .NET のアセンブリ
                                  • 自作言語でセルフホストしてみた - Qiita

                                    はじめに 自作言語でセルフホストできたので,やったこと,考えたこと,得たこと,思ったことなどをまとめました. きっかけなど 「低レイヤを知りたい人のためのCコンパイラ作成入門」がまとまっててうれしい x86_64などのプロセッサで直接動作するアセンブリを生成してみたかった セルフホストできる程度の言語のコンパイラを実装したことがなかった 自作言語を一通り設計・実装したことがなかった 気軽に遊べる言語がほしかった 関数呼び出しで括弧を使わない世界線のRustの雰囲気を感じたかった GitLabの操作に慣れておきたかった 現実逃避 ...などなど コンパイラの名前はnecoです.HaxeのNekoと被るのでnecoにしています.言語の名前は決まってないけど拡張子は.necoにしています.necoは なんちゃら compiler の略ですと言いたいけれども略称はまだ決まってないです. コメントを

                                      自作言語でセルフホストしてみた - Qiita
                                    1