この記事でお題にするのはCPUレジスタ上の整数除算です。以下、単に除算とも書きます。 除算は非常に高コストな演算なため、コンパイラは最適化によって、できるだけ整数除算を別の計算に置き換えようとします。 最適化ができる場合の一つとして、割る数が定数である場合があります。頭のいいコンパイラは、除算を乗算とビットシフト等を駆使した演算に置き換えます。この記事では、そういった最適化の背景にある理屈を部分的に解説します。 計算機環境としてはモダンなx86 CPUを仮定します。したがってレジスタは32/64ビットであり、負数は2の補数表現になっています。ある程度は他の命令セットでも通用する話になっているかもしれません。 そもそも整数の除算とは プログラミングにおける整数の除算の定義について確認します。整数$n$を整数$d$で割るとき $$ n = q \times d + r $$ が成り立つように除
はじめに 学校で習わないが(習う学校もある)、現実に必要になるプログラミング技術に、低レイヤプログラミングなどと呼ばれるものがある 厳密な定義は聞いたことがないし、おそらく存在しないとは思うが、大体のみんなの共通認識として、 「高級プログラミング言語を使わないプログラムを書き、OSで抽象化されないデバイスの機能を使う」といったような認識があると思う。 筆者の経験から言わせてもらうならば、低レイヤプログラミングに関する知識は、プログラミングにおいてあらゆる場面で、常に、少しずつ役立てられる知識だと言えると思う。 普段はRubyやPHPなどを書いてる人であったとしても、メモリが足りなくなった場合や、デバッガを使っている場合、性能が足りなくなった場合など、 厳しい環境におかれた時に低レイヤプログラミングに関する知識が必ず役に立つ場面が来ると信じている。 また、役に立つかどうかは置いておいても、「
イスラエルのセキュリティ企業CTS Labsが、AMDのCPU「Ryzen」とサーバー向けCPU「EPYC」に13もの脆弱性があることを発表しました。しかし、AMDに対策の猶予を与えることなく脆弱性情報を公開した手法については批判もあり、そもそも現実的な脅威があるのか疑問という意見や、「株価下落を望んでいるだけでは?」という冷ややかな声も上がっています。 AMDFLAWS https://amdflaws.com/ 新興のセキュリティ企業CTS Labsが、AMDのCPUに内在する脆弱性に関する情報を公開しました。CTS Labsによると、脆弱性は大きく4種類に分類され、それぞれ「RYZENFALL」「FALLOUT」「CHIMERA」「MASTERKEY」と名付けられています。 RYZENFALLは、保護されたメモリ領域にアクセスしてAMD Secure Processorの特権を取得す
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く