並び順

ブックマーク数

期間指定

  • から
  • まで

1 - 23 件 / 23件

新着順 人気順

アセンブラの検索結果1 - 23 件 / 23件

タグ検索の該当結果が少ないため、タイトル検索結果を表示しています。

アセンブラに関するエントリは23件あります。 プログラミングprogrammingRust などが関連タグです。 人気エントリには 『6502 アセンブラ プログラミング入門 / 新山 祐介』などがあります。
  • 6502 アセンブラ プログラミング入門 / 新山 祐介

    概要: この記事では 8ビット CPU 6502 を 使ったアセンブラプログラミングを紹介する。 「アセンブラプログラミング」とは、プログラミング言語を使わず、 CPU のネイティブ命令列を直接書くプログラミング方法である。 6502 はいまから約50年前に開発され、 ファミコンや Apple II など多くのハードウェアで利用された。 しかし、その原理は今日のコンピュータとほとんど変わっていない。 ここでは 6502 のプログラミングを通して、コンピュータの本質を学ぶ。 6502 プログラミング入門 コンピュータの原理 レジスタとは 16進数とは 6502エミュレータを使った演習 メモリに値を格納する メモリの値を増加させながらループする アセンブラを使ったプログラミング 最初のプログラム (改良版) アセンブラを使ったジャンプ命令 差分アドレッシング 条件分岐 条件分岐 その2 16ビ

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

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

        アセンブラをゼロから作って自作コンパイラをアセンブルするまで(日記)
      • 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
        • コンパイラとは?構造や自作方法、おすすめのコンバイラの選び方を解説!インタプリタやアセンブラとの違いとは? | A-STAR(エースター)

          コンパイラとは?構造や自作方法、おすすめのコンバイラの選び方を解説!インタプリタやアセンブラとの違いとは? スキル言語 Twitter facebook LINE はじめに プログラミングに携わるとコンパイルするという言葉をよく見かけます。 コンパイルという言葉に馴染みがなければ壁にぶつかるかもしれません。 今回は、コンパイラはどういうものなのか、コンパイラは何ができるのかなどについての紹介です。 コンパイラとは プログラミング言語に携わるとコンパイルやインタプリタ、アセンブラは、外せない用語です。 どの単語もざっくりいえばソースコードの実行方法になります。 コンパイラとは、人間と機械の間に立ってお互いの言葉を通訳する役割です。 コンパイラは、ソースコードを読み込んでコンピューターが理解できるように機械語へ翻訳します。 機械語をソースコードに変換する場合は、コンパイラではなく、逆コンパイラ

          • Shinjuku.rs#15 Rustでつくるx86アセンブラ

            Making JIT assembler for x86-64 written in Rust.

              Shinjuku.rs#15 Rustでつくるx86アセンブラ
            • ESP32のアセンブラを読み解く

              はじめに 前回の記事ではESP32を対象に、C/C++からインライン・アセンブラを使用する手順を説明しました。今回はもう少し踏み込んで、アセンブラの練習にお勧めの方法と、調べてもわかりづらい重要なポイントを説明していきます。 前提条件 XtensaコアのESP32シリーズ (ESP32/ESP32-S2/ESP32-S3) を使用していること。 ArduinoIDEまたはVSCode+PlatformIOでESP32用のプログラムを実行できること。 C/C++をある程度読書きできること。 ※ ESP32-C3などはXtensaコアではないため、本記事の対象から外れます。 アセンブラコードのサンプルを手に入れる アセンブラを書くためには、どんな命令が用意されているかを把握しておく必要があります。それには 前回の記事 の冒頭で入手をお勧めした Instruction Set Architect

                ESP32のアセンブラを読み解く
              • JITアセンブラXbyakを使ってみる(その1) - Qiita

                その1:Xbyakの概要←イマココ その2:数値計算屋のハマりどころ その3:AAarch64向けの環境構築 その4:Xbyakからの関数呼び出し その5:Xbyakにおけるデバッグ はじめに Xbyak(カイビャック)は、光成滋生さんによるJITアセンブラです。Intelによる深層学習ライブラリoneDNNのエンジン部分の実装に使われたり、AArch64版のXbyakであるXbyak_aarch64が富士通のリポジトリとして公開されたりと、ベンダーによる公式採用が増えています。なんかすごそうなので使ってみましょう、という記事です。 Xbyakの準備 Xbyakは、JITアセンブラです。C++ヘッダオンリーなので、インクルードするだけで使えます。git submoduleとして使うのが良いと思います。 まずは適当なリポジトリxbyak_testを作りましょう。

                  JITアセンブラXbyakを使ってみる(その1) - Qiita
                • Rustによる言語内x86_64アセンブラのAPIデザインと実装

                  概要 Rustでx86_64アセンブラを実装しました。JITコンパイラの実装での利用を想定しているため、アセンブリコードを文字列として入力に取るのではなく、 静的に型付けされたRustプログラム上にアセンブリコードを記述できるライブラリ として実装しています。例えばフィボナッチ数を計算するアセンブリコードを以下のように記述し、付属のJITエンジンを用いて実行できます: fn fib_object() -> io::Result<Object> { let mut w = Writer::new(); let fib = w.get_label("fib"); let l1 = w.issue_label(); let l2 = w.issue_label(); w.define(fib, true); w.cmpl(Edi, 1i8)?; w.jle(Short(l2))?; w.movl

                    Rustによる言語内x86_64アセンブラのAPIデザインと実装
                  • Rustのゼロコスト抽象化の効果をアセンブラで確認

                    これは Rust その3 Advent Calendar 2019 の24日目のエントリです。 Rustのゼロコスト抽象化が期待どおりに働いていることを、コンパイラが出力した機械語(アセンブリコード)で確認します。 ゼロコスト抽象化とは ゼロコスト抽象化(zero-cost abstraction)とは、Rustが持つ抽象化のしくみが実行時の追加コストなしに動作することです。 ここでいう追加コストとは、メモリ使用量の増加や実行速度の低下などの、いわゆるオーバーヘッドを指します。 では抽象化とはなんでしょうか? プログラミングにおける抽象化とは、共通な部分を抽出し、その詳細をブラックボックス化することです。 これにより仕様変更に強く、再利用性の高いソフトウェアを開発できます。 Rustが提供する抽象化のしくみには、たとえば以下のようなものがあります。 ポリモーフィズム:いくつかの型に共通する

                    • TIS、アセンブラからCOBOLへ変換する「アセンブラマイグレーションサービス」を提供開始

                      CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

                        TIS、アセンブラからCOBOLへ変換する「アセンブラマイグレーションサービス」を提供開始
                      • RubyでオレオレVMとアセンブラとコード生成器を2週間で作ってライフゲームを動かした話 - memo486

                        Qiita に引っ越しました。 qiita.com

                          RubyでオレオレVMとアセンブラとコード生成器を2週間で作ってライフゲームを動かした話 - memo486
                        • Rustで自作プログラミング言語を自作x86_64アセンブラでセルフホスティングした記録

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

                            Rustで自作プログラミング言語を自作x86_64アセンブラでセルフホスティングした記録
                          • 週刊Railsウォッチ: ruby-spacyで自然言語処理、Ruby製x86-64アセンブラ、『タイムゾーン呪いの書』ほか(20210713後編)|TechRacho by BPS株式会社

                            週刊Railsウォッチについて 各記事冒頭には🔗でパーマリンクを置いてあります: 社内やTwitterでの議論などにどうぞ 「つっつきボイス」はRailsウォッチ公開前ドラフトを(鍋のように)社内有志でつっついたときの会話の再構成です👄 お気づきの点がありましたら@hachi8833までメンションをいただければ確認・対応いたします🙇 TechRachoではRubyやRailsなどの最新情報記事を平日に公開しています。TechRacho記事をいち早くお読みになりたい方はTwitterにて@techrachoのフォローをお願いします。また、タグやカテゴリごとにRSSフィードを購読することもできます(例:週刊Railsウォッチタグ) 🔗Ruby 🔗 ruby-spacy: 自然言語処理ライブラリspaCyのRuby版 自然言語処理ライブラリspaCyをRubyでも使えるようにしたいと思

                              週刊Railsウォッチ: ruby-spacyで自然言語処理、Ruby製x86-64アセンブラ、『タイムゾーン呪いの書』ほか(20210713後編)|TechRacho by BPS株式会社
                            • 初心者向け・アセンブラで学ぶ「コンピュータの動作原理」の基礎 - paiza times

                              Gerd AltmannによるPixabayからの画像 こんにちは。倉内です。 皆さんは「コンピュータがなぜ動くのか」を考えたことはありますか? もちろん動作原理を知らなくてもコンピュータを使うことはできますが、ITエンジニアとしてメモリやCPU、入出力装置、それらの役割と仕組みなどハードウェア部分の理解を深めておいて損はありません。 とはいえ情報系以外の専攻ですと体系的に学ぶ機会はなかなかありませんし、テキスト片手に独学するのも結難しい分野で「いつか勉強しよう…」と思いつつ手をつけられていない方も多いですよね。 そこで今回は、paizaラーニングに新しく登場した「情報処理入門 アセンブラ言語編」の動画講座を使って分かりやすく解説していきます! コンピュータの動作と「アセンブラ」の役割 コンピュータは簡単に表すとこのような構成になっていて、特に重要なのがCPUとメモリの役割です。 CPUや

                                初心者向け・アセンブラで学ぶ「コンピュータの動作原理」の基礎 - paiza times
                              • TIS、アセンブラ言語をCOBOL言語に変換する「アセンブラマイグレーションサービス」を提供

                                  TIS、アセンブラ言語をCOBOL言語に変換する「アセンブラマイグレーションサービス」を提供
                                • SoftwareDesign on Twitter: "CPUのしくみを勉強して、それからアセンブラ、C、へと抽象化をすすめて、OS、シェルスクリプト、ライブラリ、通信まわり、オブジェクト指向系のプログラミング言語、Web系のプログラミング言語、と下から積み上げていったほうがいいかなと。おおざっぱですが。 #入門書"

                                  CPUのしくみを勉強して、それからアセンブラ、C、へと抽象化をすすめて、OS、シェルスクリプト、ライブラリ、通信まわり、オブジェクト指向系のプログラミング言語、Web系のプログラミング言語、と下から積み上げていったほうがいいかなと。おおざっぱですが。 #入門書

                                    SoftwareDesign on Twitter: "CPUのしくみを勉強して、それからアセンブラ、C、へと抽象化をすすめて、OS、シェルスクリプト、ライブラリ、通信まわり、オブジェクト指向系のプログラミング言語、Web系のプログラミング言語、と下から積み上げていったほうがいいかなと。おおざっぱですが。 #入門書"
                                  • とほほの8ビットアセンブラ入門 - とほほのWWW入門

                                    JavaScript, PHP, Ruby, Python, Rust, Scala, Go... などいろいろな高級言語がありますが、これらはすべて 機械語(マシン語) で実行されます。Rust, Go などのコンパイル型言語はプログラムが機械語に翻訳(コンパイル)されて実行されます。PHP, Ruby, Python などのインタープリタ型言語はインタープリタがプログラムを実行しますが、インタープリタ自体が機械語に翻訳(コンパイル)されています。 下記が機械語のサンプルです。要は16進数(コンピュータ的には2進数)の羅列です。 1F 0F 48 65 6C 6C 6F 20 57 6F 72 6C 64 21 00 06 02 02 06 03 E8 38 18 00 32 00 32 01 06 01 00 03 00 02 05 03 00 12 02 12 03 15 01 02

                                    • x64用主要アセンブラの構文差異クイズ

                                      初めに これはx64用JITアセンブラXbyakや静的アセンブラs_xbyakを開発するときに、各種アセンブラの差異についてはまったり調べたりしたことをまとめるにあたり、せっかくなのでクイズ形式にしたものです。 中級以降は主にAVX-512に関するかなりマニアックで瑣末な知識です。何を聞かれてるのか分からなくても殆どの場合、何の問題もありません。 前置き ここで扱うアセンブラは GAS (GNU Assembler) 2.38 Netwide Assembler (NASM) 2.16 Microsoft Macro Assembler 14.35.32217.1 です。MASMはWindows専用、GASは主にLinuxで扱われますが、Windowsでもmingwなどで使えます。NASMはwin64, elf64, macho64 (Intel macOS)用のオブジェクトコードを生成で

                                        x64用主要アセンブラの構文差異クイズ
                                      • TIS、アセンブラシステムの保守開発支援・プログラム解析を行う「アセンブラお助けサービス」を提供

                                          TIS、アセンブラシステムの保守開発支援・プログラム解析を行う「アセンブラお助けサービス」を提供
                                        • アセンブラを理解したいのならアセンブラを学べ(INT 21Hもあるよ) - Qiita

                                          1 はじめに つい先日、こんな記事がバズっているのを見ました。 C言語を理解したいのならアセンブラを学べ(ただしINT 21Hは出てこない) - Qiita 21世紀も1/5が終わろうとし、平成もまさに終わらんとするときに「INT 21H」なんて用語を見るとは夢想だにしませんでした。 あまりにも懐かしすぎたので、勢いで8086の開発環境を作って、適当なプログラムを動かしてみました。 本稿のゴールは下記の通りです。 FreeDOS(オープンソースのMS-DOS互換OS)の環境を構築し、JWasm(マクロアセンブラ互換)及び関連ツールを動かせるようにする 簡単なプログラムを書いてアセンブルし、実行できるようにする プログラムの中でINT 21Hを使う(※超重要) DEBUG.COM(デバッガ)を実行して、CPUの動作を1ステップずつ追う ※本稿は元記事インスパイア・リスペクト・オマージュ及びそ

                                            アセンブラを理解したいのならアセンブラを学べ(INT 21Hもあるよ) - Qiita
                                          • Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)

                                            TL;DR 本記事は Nand to Tetris のアセンブラ実装についての解説です。Nand to Tetrisをやったことがない人でも概要とアセンブラの実装内容を理解できるように記述しています。アセンブラの実装は以下に配置しています。 Nand to Tetris とは Nand to Tetrisとは日本語では『コンピュータシステムの理論と実装』というタイトルの書籍で出版されているコンピュータサイエンスの教材です(原題: Build a Modern Computer from First Principles: From Nand to Tetris)。イスラエルにあるヘブライ大学のコンピュータサイエンス学部の教授であるNoam Nisan氏とShimon Schocken氏によって作成され、CSの教材として世界で高い評価を受けています。Courseraでも著者による動画のコース

                                              Nand to Tetrisで学ぶコンピュータの仕組み(Goによるアセンブラの実装)
                                            • 分子アセンブラ - Wikipedia

                                              分子アセンブラ(ぶんしアセンブラ、英語: Molecular assembler)は、環境中の原子を材料として分子を組み立てる想像上の機械。 概要[編集] K・エリック・ドレクスラーによって提唱された究極のボトムアップ方式のナノマシンの製造方法で、現在主流のトップダウン方式とは全く異なる[1]。 メッセンジャーRNAからの命令を受けて蛋白質を作るためのアミノ酸を合成する細胞は一種の分子アセンブラとの見方も出来るが、分子アセンブラとはあくまでも人工物を対象としている点が異なる。SFでは定番の手法で自動的に修復する機械などが描かれる。従来は想像の産物に過ぎないと見られていたが、近年では複数のグループが実現に向けて基礎的な研究を続けるが、その実現性を疑問視する意見も散見される[1]。 また、仮に実現したとしても人の介在しない状況で自己増殖したり(グレイグー)、自然界では分解の困難な有害物質を合成

                                              • ESP32でC/C++からアセンブラを使用する

                                                はじめに C/C++でマイコン向けのソフトウェアを書いていると、処理速度を高めるための工夫が必要な場面に遭遇する事があることと思います。…ありませんか?私はしょっちゅうあります。 コードの無駄を省きに省き、最適化を重ねて絞りに絞ったコード…しかしあと一歩足りない…。 そんな時、解決策の候補の一つとしてアセンブラを加えてみるのはどうでしょうか。 ここではESP32を対象に、C/C++のソースからアセンブラを使用する方法について説明します。 前提条件 XtensaコアのESP32シリーズ (ESP32/ESP32-S2/ESP32-S3) を使用していること。 ArduinoIDEまたはVSCode+PlatformIOでESP32用のプログラムを実行できること。 C/C++をある程度読書きできること。 ※ ESP32-C3などはXtensaコアではないため、本記事の対象から外れます。 まず公

                                                  ESP32でC/C++からアセンブラを使用する
                                                1

                                                新着記事