タグ

関連タグで絞り込む (1)

タグの絞り込みを解除

x86に関するclonedのブックマーク (2)

  • x86カルトクイズ(解答編) (mitsunari@cybozu labs)

    問題編はこちらのx86カルトクイズです. Q1 [乗算の削減] lea eax, [eax + eax*8] lea eax, [eax + eax*4] 45 = 9 * 5 = (8 + 1) * (4 + 1)を利用する.乗算命令が速くなったとはいえ,まだadd/sub/shift/leaの組み合わせを使った方が速いことが多い. Q2 [条件分岐の削減] cdq xor eax, edx sub eax, edx 条件分岐は可能な限り使わない.次の二つの恒等式 -x = x ^ (-1) - (-1) x = x ^ 0 - 0 と unsigned int m = (x < 0) ? -1 : 0 を組み合わせることで絶対値を unsigned int m = x >> 31; return x ^ m - m; と実現する.ここでmを取得する部分は mov edx, eax sa

  • x86カルトクイズ (mitsunari@cybozu labs)

    x86の解説をいざ始めてみると,どうもblogという媒体はやりにくいので別ページで進めることにしました.すいません.まとめ直すまでしばらくお待ちください.あと基的なことばかり続いたので,ちょっとマニアックネタに走ってみます. というわけで突然ですがクイズです.そこそこ高い難易度に設定したつもりですが,いかがでしょう.初心者の方は全然分からなくても大丈夫です.あえて曖昧な記述をしている部分もあります.後半の答えは凄いものがあるといいなあ.あと,難問奇問募集中. 以下は断りがない限り, 環境は32bit OS上のPentium4以降のx86 CPU 関数の呼び出し規約は__cdecl 配列は16byte alignmentされていて複数の配列はオーバーラップしていない ループは4の倍数と仮定してよい ものとします.CPUに依存する場合は明記してください. Q1(5点) 符号なしeaxの値を4

    cloned
    cloned 2007/10/08
    わからん
  • 1