タグ

x86に関するrydotのブックマーク (9)

  • いまどきの☆あせんぶりーらんげーじ

    いまどきの☆あせんぶりーらんげーじ 概要 今のCPUは複雑すぎるのでコンパイラのほうが人間より賢いとか嘘である。 基を抑えればそんなことないので、皆さんコンパイラに打ち勝ちましょう。 以下では、パイプライン化されてて、スーパースカラなマシンをいまどきの☆アーキテクチャとしている。(つってももう20年前くらいの話なんじゃないか…) 今でもスーパースカラじゃないRISCとかあるよ!!とかの意見は、自分のブログに書いておいてください。 あと、x86をいまどきのアーキテクチャと呼ぶのは抵抗あるけど、深追いするならx86が一番面白いと思うので、x86限定の話題も遠慮しないで書く。あと、アセンブリの記法はAT&Tです。 前提知識 x86アセンブリ 参考文献 これを読めばこの文書を読む必要は無い。 The microarchitecture of Intel and AMD CPU’s: An opt

    rydot
    rydot 2016/02/27
  • Intel® Intrinsics Guide

    Using Intel.com Search You can easily search the entire Intel.com site in several ways. Brand Name: Core i9 Document Number: 123456 Code Name: Emerald Rapids Special Operators: “Ice Lake”, Ice AND Lake, Ice OR Lake, Ice* Quick Links You can also try the quick links below to see results for most popular searches. Product Information Support Drivers & Software

    Intel® Intrinsics Guide
  • [Debug] ptrace によるデバッグ - th0x4c 備忘録

    #include <sys/ptrace.h> long ptrace(enum __ptrace_request request, pid_t pid, void *addr, void *data); request にアタッチしたプロセスに何を行うかを指定する。 例えば、以下が指定できる。(参考: man ptrace) PTRACE_ATTACH pid で指定したプロセスにアタッチする。アタッチしたプロセスは子プロセスとしてトレースできるようにする。(引数 addr と data は無視される。) PTRACE_PEEKTEXT, PTRACE_PEEKDATA メモリの addr の位置を参照する。(引数 data は無視される。) PTRACE_PEEKUSR USER 領域のオフセット addr の位置を参照する。(引数 data は無視される。) PTRACE_POKET

  • Fortranが書きたくないなら機械語を埋め込めばいいじゃないっ! | 月と燃素と、ひと匙の砂糖

    Fortranが書きたくない!! わたしは大学で天気とか地震とか海流といった「地球物理」と呼ばれるジャンルを学んでいるのですが、このジャンルではコンピュータをガンガン回して計算しまくります。気象庁が毎日やってる天気予報もそうですし、「地球シミュレータ」でエルニーニョや地球温暖化の予測とかをやっているのもそうです。 で、そういう学科なので、コンピュータの実習があるのですが、なぜか今でもFortranを教えています。 たしかにFortranには、LAPACKのような優れた数値計算ライブラリがあったり、スパコンで書く時はコンパイラのサポートが充実してたりします。なので、そういう特定の用途には悪くない言語だと思うのですが、デスクトップPCで十分扱えるようなデータサイズで、そもそも計算速度はさして重要ではなくてデータ解析手法を学ぶ実習で使うのには辛すぎます。陽には書きたくありません。1でも書かないと

  • 80 bit float number problem

    x86における 浮動小数点演算の精度の制御と、 80bit 浮動小数点演算問題 たけおか update: 2023/NOV/02 初出: 2010/NOV/20 0.はじめのはじめに みんな大好き Intel x86, AMD 64の浮動小数点演算のアーキテクチャは、 8087時代からの80bit演算に起因し、IEEE 754から逸脱するという欠点があった。 だが、今では、 gcc は、暗黙のうちに、SIMD(SSE,AVXなど)演算器を使用するコードを 生成するようになり、 SIMDユニットにて浮動小数点演算することで、 80bit演算由来の問題が、解消されるようになっている。 ではあるものの、この文書は、延々と80bit起因の問題について述べている。 現在も、8087由来の、x86伝統の内部80bit演算はCPU内には健在である。 80bit演算の害を体験したい場合は、 gccのオプシ

  • x86_64だと浮動小数点演算の精度が低下する » tune web

    64bit OSで動かすと32bitの時と処理結果が異なるプログラムで悩んだメモです。 調べていくとfloatを使った浮動小数点演算で誤差が出ることがわかりました。分からなかったのが、IEEE754でfloatの演算精度は32bitと規定されているのになぜ同じソースから作ったプログラムで結果が違うのかということです。 x86では浮動小数点演算にx87を使うのですが、この演算精度は32bitや64bitではなく、80bitで行われるそうです。この辺の話は 浮動小数点演算ではまった話 – bkブログとかBK通信に詳しく載ってます。要約すると32bitの精度で誤差が生じる計算が含まれていても”たまたま”うまく計算できることがある ということです。 たまたま精度よく計算できるプログラムをx86_64に持っていってコンパイルしようとします。このとき、x86_64では必ずSSEが使えるため、コンパイラ

    rydot
    rydot 2012/11/22
  • 浮動小数点演算ではまった話 - bkブログ

    浮動小数点演算ではまった話 浮動小数点演算のありがちな問題ではまりました。 いろいろ調べているうちに x86 特有のちょっとおもしろい 現象に遭遇したので紹介したいと思います。 パーセンテージの計算 簡単な C のプログラムでパーセンテージを計算しようと思い、 次のようなコードを書きました。 int x, y; ... int a = (double)x / y * 100; int a = x * 100 / y としないのは、 x が大きい場合に x * 100 が オーバーフローを起こす (INT_MAX を越える) ためです。 このコードは一見、期待通りに動いていたのですが、 しばらく使っていると、手元の環境では x = 53, y = 100 のときに a は 53 ではなく 52 になることに気づきました。 これは次の理由によります。 式の最初の (double)53 / 10

  • Assembly Programming on x86-64 Linux

    はじめに だれでも64ビットのコンピュータを所有する時代になってきました。最近の PC では WindowsXP や WindowsVistaといった32ビットのOSが使われているものの、Core2Duo を代表として、すべて amd64 や intel64 といった 64bitに対応した CPU が搭載されています。昔、インテルの 80386 や 80486 という 32bitCPU は10年近く MS-DOS や Windows3.x といった16bitのOSを使うための高速な8086として使われていました。Windows95の時代になって、やっと32bitの機能が一般的に使われ始めました。2009年現在でも64bitに対応した Windows はサーバ用として一部で活躍しているだけではないでしょうか。Linux という無料で使える OS でも、すでに64bit版が安定して使える

    rydot
    rydot 2012/05/12
  • Windows実行ファイル「EXE」の謎に迫る一覧

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

    Windows実行ファイル「EXE」の謎に迫る一覧
  • 1