この記事は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
本記事は書きかけなので内容(タイトルすらも)は随時書き換わっていきます。ドラフトのうちは内容の正確性や文書全体としての整合性についても荒っぽい部分が多々あります。ご容赦ください。 はじめに 本記事はソフトウェア開発者がハードウェアに近い低レイヤといわれる領域に入門するとき、とくにアセンブリ言語に出会ったときにつまずきがちなことを紹介します。主な対象読者はJavaScriptやPythonなどのスクリプト言語などによるアプリ開発からソフトウェア開発に入った、それより下のレイヤになじみのない人です。 筆者は常々アセンブリ言語は技術的にものすごく難しいわけではないものの、学習につまずく人が非常に多いという印象を持っています。その主な原因の一つは、みなさんが普段慣れ親しんでいる人間に使いやすいように作られた高級プログラミング言語(以下高級言語)と、機械に解釈させやすいように作られているアセンブリ言
この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除
僕は組み込み系エンジニア*1として通算10年ほど働いていますが、 今日ほどこの業界の人手不足を感じたことはありません。 とにかく人がいない・・・より正確に言うなら、「即戦力になる経験者が少ない」のです。 2018年2月時点での求人倍率は4.77倍です。 今、カネで奪い合いになる「人気職種」 (溝上 憲文) | プレジデントオンライン 転職求人倍率職種のトップは「インターネット専門職」(Webエンジニア含む)の5.66倍、続いて「組込・制御ソフトウエア開発エンジニア」の4.77倍、建設エンジニアの4.22倍だ。 システムエンジニア全体の中でも年収は低いほうではないし(参考記事:組み込みエンジニアの年収ってどれくらい? | アトオシ)、特別待遇が悪い職種というわけでもないのですが、何故ここまで人がいないのでしょうか? 組み込み系エンジニアとは ソフトウェア/ハードウェア両方の知識が必要とされる
Z80。 任天堂の初代ファミコンに搭載されていた8ビットのマイクロプロセッサーで、80年代の半ばまで、パソコンにも使われていたCPUだ。 CPUが8ビット、16ビット、32ビット、64ビット、と進化していく中で、2008年からはパソコンでも64ビットが普及するようになり、今や一般社会では64ビットが主流になっている。 日進月歩のCPUの歴史の中で、8ビットは原始時代とまではいわないが、時代の主流からは取り残されたものであることには違いない。 未だにメイン基板でZ80を使っているのが、パチンコ業界なのだが、Z80でプログラムを書けるプログラマーがどんどん高齢化しているのが実情でもある。 「メイン基板のプログラマーは若くて40代。50過ぎのプログラマーもいますよ。8ビットの狭い領域で開発するのに、皆ひいひいいっていますが、8ビットでは若くて優秀な技術者なんか集まりっこない。サブ基板は
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く