タグ

アセンブリ言語に関するYasuyukiMiuraのブックマーク (37)

  • アセンブラへの道 coding(42) - Qiita

    事例(case study) アセンブラで覗くコンピュータの質 https://qiita.com/shm_ut/items/d27e6b80a5561a74d20f 前書き(preface Cコンパイラで生成したコードを、アセンブラで書き直したことがある。 コンパイラの最適化がまだ進んでいないころ、 Microsoft Cでコンパイルすると、NOPが結構入っていた。 単にNOPを外すだけでなく、マクロで簡潔にしてみた。 通信エミュレータで、NOPがなくなるとタイミングがずれてうまく動かないことが分かった。 ああ、Cコンパイラの作り方を覚えようと思った。 Cコンパイラは電総研(産総研)言語システム研究室の研究生で滞在した頃、Small Cコンパイラを写経し、Pascalで書かれたコンパイラをC言語に移植し、OBJという抽象データ型の言語のシンタックスチェッカをC言語で作成した。 C言語を

    アセンブラへの道 coding(42) - Qiita
  • 熱血/大熱血!アセンブラ入門 サポートページ

  • Microsoft,タイプセーフなオペレーティングシステム Verve を発表

    Spring BootによるAPIバックエンド構築実践ガイド 第2版 何千人もの開発者が、InfoQのミニブック「Practical Guide to Building an API Back End with Spring Boot」から、Spring Bootを使ったREST API構築の基礎を学んだ。このでは、出版時に新しくリリースされたバージョンである Spring Boot 2 を使用している。しかし、Spring Boot3が最近リリースされ、重要な変...

    Microsoft,タイプセーフなオペレーティングシステム Verve を発表
  • Wataru's memo(2010-01-04)

    ● [Thoughts][Hardware] 新春 機械語入門講座・その2 前回、機械語習得のためには、まずは目的とするプロセッサのプログラマーズ・マニュアルとハードウェア・マニュアルを手元に用意することが肝要とお話しました。何度も繰り返している通り、データシートというものは「分かる人が分かる」ようにしか書かれていません。ですから、初心者が挑戦する際には挫折がつきものなのですが、かと言って敬遠していては、一生データシートを読めるようにはなりません。 大切なことは、膨大なマニュアルの一箇所でも良いから「ここは理解できた」という経験を地道に重ねていくことです。この鍛錬を1年、3年と気長に続けていけば、必ずやデータシートから必要な情報を自在に抽出できるようになります。しかし・・しかし、現実は厳しい。学校や教科書は「データシートの読み方」を教えてはくれないからです。そのくせ、社会人として現場に放り

  • Wataru's memo(2010-01-01)

    ● [Thoughts][Hard] 新春 機械語入門講座・その1 明けましておめでとうございます。元旦より、読者の方から催促のエールを頂きましたので、急遽予定を変更し、「新春 機械語入門講座」を開講したいと思います (“物を探せ” は、この講座終了後に続く)。 機械語習得の第一段階 まず最初に、「機械語を理解できたよ、母さん!」とは具体的にどういう境地を指すのか、この点を明らかにしておきましょう。諸説あるとは思いますが、私の考える機械語習得に関する第一段階は次のようなものです。 未知のプロセッサーであっても、データシートさえ入手できれば、ハンドアセンブルできる ハンドアセンブルとは、これも今や死語になっていますが、アセンブリ言語のソースリストを "手作業で" 機械語に変換することを意味します。この作業を遂行するためには、データシートに記載されたオペコードマップとアドレッシングモード、レ

  • Wataru's memo(2009-12-05)

    ● [Thoughts][Hard] 物を探せ 機械語はなぜ難しいのか 先日「"割り込み処理" は既に死語と化している」と書きましたが、若い人達はアセンブリ言語や機械語の学習を放棄している訳ではありません。数は少ないかもしれませんが、スクリプト言語からプログラミングに目覚め、やがてコンピュータ内部の仕組みに興味を持ち、ついには機械語を学ぼうとする人達は間違いなく存在します。だからこそ、専門雑誌は定期的に「コンピュータの仕組み」に関する特集を組んできましたし、関連する書籍も多数出版されてきたのでしょう。 それでは、このような特集が組まれ書籍が出版されるたびに、彼らの疑問は解消し、コンピュータ内部への理解は深まったのでしょうか?残念ながら、そうではないようです。"理解" するということは、単純に知識が増えることではありません。ある "閾値" を超える必要がある。閾値を超えて、初めて新しい "

  • IBM Developer

    IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.

    IBM Developer
  • Sassy - 0.2

    Sassy is a portable assembler for x86 processors written in R5RS Scheme with the addition of a few SRFIs.

  • Assembly Programming Linux

    Linux でアセンブリプログラミング copyright (C) 2000-2003 Jun Mizutani (mizutani.jun@nifty.ne.jp) はじめに. アセンブラを使って Linux のプログラミングで遊んでみます.アセンブラには NASM を使用して,カーネルを直接利用することにします. いまさらアセンブラでプログラムを作成することは,時代錯誤と感じる人も 多いかもしれません.「アセンブラでプログラミングなんて職人芸でしょう」 と思うかもしれません. 20年前では趣味のプログラミングは BASIC か アセンブラしか選択肢がありません でしたが,今ではPerl, Ruby からアセンブラまでの間に非常に多くの言語があって, アセンブラは普通では不要な最下層の知識となっていると思います. 10BaseT のツイストペアケーブルのインピーダンス

  • GCC Inline Assembler

    "asm"と"__asm__"は、基的には同じであるが、"__asm__"は使用している言語の予約語/関数等とぶつかる場合使用します。またはANSI C互換のコードをつくっている場合、"asm"キーワードが使用できなくなるので"__asm__"を使います。 /* keyword asm と同じ関数*/ function asm(void){ } /* asmが使用できないので__asm__を使用 */ function inline(){ __asm__("asm code"); }

  • oklab -

    最近ではコンピューター、ウェブ、モバイルでゲームを楽しめるようになりました。これらのゲームプログラミングについて学びましょう。 ゲームプログラミングの特徴 ゲームプログラミングは比較的新しいジャンルです。 ゲーム開発に使用される言語は、C#、C++JavaScriptSwiftRubyです。ゲームでは通常のアプリケーションと異なり複雑なビジュアルを操作するパフォーマンスと速度が要求されますので、プログラム言語もそれに特化している言語がおすすめです。 ゲームプログラミングは今後も人気の職種です。習得してステップアップを目指しましょう。 Oracle PLのプログラミング言語について学びましょう。 Oracle PLの特徴 SQL、T-SQLと同様にOracle PLもデータベースを処理するための言語です。違いとしてはOracle PLは世界最大のデータベースのひとつであるOracle

  • ホワット・ア・ワンダフル・ワールド 伊東家の食卓 : 80386 以降のリアルモードでメモリ空間 4 G をフルに使う裏技

    mixi で syd さんに教えてもらいました.こんな裏技があったとは… ja.wikipedia リアルモード Intel 80386では、プロテクトモードに移行した後、セグメントリミットを設定した後にリアルモードに復帰すると、命令にプレフィックスをつけることでそのセグメントリミットまでの実メモリ空間にアクセスすることが可能になるバグと思われるものもあり、この状態を Unreal mode と呼ぶことがある。この仕様は以降のすべてのCPUで有効となっている。 日語ではこれ以外にほとんど情報が無いなぁ… ちなみに syd さんは, 高校のころ,東大の TSG とかいうコンピュータサークルがこの裏技に関する記事を書いていたのを見て知ったそうです.ほえー東大すごす. 具体的には,こういうコードで unreal mode に以降できるのだそう.初めて読む 486 と OS 自作入門を参考にしつ

    YasuyukiMiura
    YasuyukiMiura 2007/07/18
    unrealモードという隠しモードがあるとのこと
  • GCC x86 Inline Assembler

    ■内容 GCC x86 Inline Assembler コンパイル インライン・アセンブラーの書き方 構文 (参考)インテル系のアセンブラーの構文 レジスター 数値 例 グローバル変数 ローカル変数 拡張インライン・アセンブラー 構文 制約文字 拡張インラインアセンブラー レジスターの自動割当て レジスターの指定 関数呼出し アセンブラー関数 C 関数 参考 Top ■GCC x86 Inline Assembler GCC を使った、x86 (インテル)系のアセンブラーの書き方です。 GCC の使い方については、「Eclipse CDT」を参考にしてください。 ■コンパイル アセンブル・リストを出力するために、-S オプションをつけると、拡張子が ".s" のアセンブラー・ソース・ファイルを出力できます。ただし、このオプションをつけると、オブジェクトモジュール(拡張子 ".o"

  • Assembly Programming on Linux Zaurus

    Linux Zaurusでアセンブリプログラミング copyright (C) 2003 Jun Mizutani (mizutani.jun@nifty.ne.jp) はじめに PC Linux (i386 CPU) の Linuxでアセンブリプログラミングと同じように、 シャープのSLシリーズを使ったアセンブリプログラミングを解説していく予定です。 アセンブラは GNU binutils に入っている GNU as を使います。 binutilsのipkパッケージを用意しました。 Sharp Linux Zaurus には、ARM系のCPUであるインテル製の Intel(R) XScale(TM) を使用しています。 インテルのサイト に XScale に関するいろいろな文書が公開されていますが、ARMコアのアーキテクチャや命令セットに関する資料は 置いてないようです。アセンブリ言語

  • Gnu Assembler

    通常Intel系のアセンブラは、Intel Syntaxと呼ばれる文法を使用していますが、GNU AssemblerはAT&T Syntaxを使用しています。そして、AT&T System V/386アセンブラの文法は、インテル アセンブラの文法と非常に異なっています。BSD kernelのアセンブラ部分はAT&T Syntaxが使われているので、これらの違いについて説明しておきます。 なお現在の、GNU AssemblerはIntel Syntaxもサポートしており、Intel ModeとAT&T Mode双方の変更が可能となります。 '.intel_syntax'ディレクティブを指定する事によりIntel Mode '.att_syntax'ディレクティブを指定する事によりAT&T Mode

  • VimでGASのシンタックスハイライト - ボクノス

    僕がGASプログラミングするときはasmx86_64.vimを愛用してます。 ダウンロード数200ちょっとと激しくマイナーですが、64ビットアセンブリ、C言語マクロ等にも対応していて超高機能です。 asmx86_64 - Syntax highlighting for x86_64 asm including gcc preprocessor : vim online コメント部分でハイライトされない箇所があったので、修正。 syn region asmComment start="# " skip="\\$" end="$" syn region asmComment start="#\t" skip="\\$" end="$" 290行目あたりに追加。 えぇ感じ。

    VimでGASのシンタックスハイライト - ボクノス
  • Using as

    Using as This file is a user guide to the gnu assembler as version 2.17. This document is distributed under the terms of the GNU Free Documentation License. A copy of the license is included in the section entitled “GNU Free Documentation License”.

  • 起動するまでの長い道のり IPL編(5) CPU解説の巻 - Outlandish Watch

    前回まで実際のソースコードを元に不器用に説明したけど、いい加減CPUの説明抜きで話を進めるのが非常に辛いと分かったので、必要最低限解説しておこうと思う。 メモリ・レジスタ関連 メモリ・レジスタ 一般的なCPUには全てメモリとレジスタがある。メモリは言うまでもなくデータやプログラムを置く記憶領域で、レジスタは以前説明したとおり作業用の「手」だ。メモリから取り出した値を持ったり、値を加工するために持ったりする。非常に小さく、ほとんど1〜4バイトしかない。また、計算や処理には使わない実行制御用の特殊なレジスタもたくさん存在する。 プログラムカウンタ CPUはメモリに置かれたプログラムのコードを順次実行していく。そのために、メモリ上のどの命令を現在実行しているのかを覚えていなければならない。CPUにはそのための専用のレジスタがあり、プログラムカウンタと呼ばれる。486やPentiumなどのいわゆる

    起動するまでの長い道のり IPL編(5) CPU解説の巻 - Outlandish Watch
  • gas - Lavender PukiWiki

    レジスタ † 32bit: %eax, %ebx, %ecx, %edx, %edi, %esi, %ebp, %esp 16bit: %ax, %bx, %cx, %dx, %di, %si, %bp, %sp 8bit: %ah, %al, %bh, %bl, %ch, %cl, %dh, %dl segment:%cs, %ds, %ss, %es, %fs, %gs ctrl: %cr0, %cr2, %cr3 debug: %db0, %db1, %db2, %db3, %db6, %db7 test: %tr6, %tr7 floating point register stack: %st or %st(0), %st(1), %st(2), %st(3), %st(4), %st(5), %st(6), %st(7) ↑ 書き方 † 即値 $をつける. レジスタ %をつける

  • about gas

    その他 gasに移植することを予定しているのなら, MASM形式で有効なfadd (=faddp st,st(1) )やfmulは 使わない方がいいです. 混乱する原因となります(経験者は語る). ;for MASM CLIP macro reg, X local L1 cmp reg, X jb L1 mov reg, X-1 L1: endm localというのはこの命令内でのみ有効と言う意味です. //for gas #define CLIP(reg, X) \ cmpl $X, %reg;\ jb 1f;\ movl $X-1, %reg;\ 1: 1fというのはすぐ次のラベルへの前方参照という意味です. すぐ前のラベルへの参照は1bと書きます. 細かい分岐がたくさんあるときにラベル名を考えなくてすむので便利です. 残念ながらNAS

    YasuyukiMiura
    YasuyukiMiura 2007/06/08
    intel形式とgas形式の比較表