タグ

asmに関するumitanukiのブックマーク (14)

  • http://homepage1.nifty.com/herumi/index.html

  • ついカッとなって実行バイナリにパッチ - memologue

    とある都合で、ソフトウェア開発の際にソースコードの提供されていないツールを使うことになりました。x86なLinux上で動く、ちょっとしたtoolchainです。が、そのツールの処理速度が遅く、入力サイズに対して、結果が出てくるまでの時間がどうもO(N^2)かそれよりひどい。遅くてイライラするので、昨晩ついカッとなってパッチを当てました。そのメモです。また、ありがちな事態(?)な気もするので、みなさんどうしてるのかなー的なお伺いも兼ねて。 ボトルネックの特定 そのツール(以下A)の実行バイナリはstripされておらず.symtabが残っていました。のでまず、どこが遅いのかgoogle-perftoolsをLD_PRELOADしてそのソフトウェアを実行し、実行プロファイルを取りました。すると、嬉しいことにある一つの関数(以下F)で全体の90%以上の時間を消費していることがわかりました。関数Fは

    ついカッとなって実行バイナリにパッチ - memologue
  • x86/x64のマシン語の長さを計算するコードとSECCONハッカソン - お前の血は何色だ!! 4

    x86 と x64 のマシン語は可変長です。 ふつーはそれほど意識する必要はないのですが、 トランポリンフックやライブパッチを作る人だと、マシン語コードの長さを取得したい時があります。 たとえば、トランポリンを作るときに、破壊するバイト数を計算したり、 破壊してしまったメモリをうまくつなぎあわせて処理の効率化を測る場合には、必要になります。 まぁ、まれによくある。といった感じでしょうか? まれによくある程度なので、あんまりライブラリが整備されていないように思えます。 逆アセンブラであれば、用途は満たしますが、ソースコードがやや大きくなってしまったり、 ライセンスがあまり自由でないライセンスだったりするみたいです。 で、 それなら俺が作ってやんよってことで作ってみました。 でけた oplen https://github.com/rti7743/oplen x86とx64のマシン語サイズを求

    x86/x64のマシン語の長さを計算するコードとSECCONハッカソン - お前の血は何色だ!! 4
  • C/C++ with GCC: Statically add resource files to executable/library

    Does anybody have an idea how to statically compile any resource file right into the executable or the shared library file using GCC? For example I'd like to add image files that never change (and if they do, I'd have to replace the file anyway) and wouldn't want them to lie around in the file system. If this is possible (and I think it is because Visual C++ for Windows can do this, too), how can

    C/C++ with GCC: Statically add resource files to executable/library
  • x86/x64最適化勉強会3に参加・発表してきました #x86opti - nokunoの日記

    というわけでバイナリアンに混じって発表してきました.x86/x64最適化勉強会3 : ATND nokuno C++でMicro Thread / Fiber / Coroutineを実装してみた 〜 espを強引に入れ替える〜久しぶりにゲーム開発の話をしました.楽しかった!Implementing MicroThread / Coroutine via esp-swap for Danmaku Shooting Games View more presentations from Yoh Okuno takehiro_t 分岐予測時代のswitch-caseif文は頻度の低いものから検査するほうが速い場合がある? 青木和麻呂 暗号実装最適化 − 暗号実装屋の不毛な戦いCamellia暗号の開発者 @NTTno title LEA命令を使った最適化 GCD(最大公約数)の最適化 herum

  • ハンド (逆) アセンブルのための x86 ニーモニックの覚え方 - @a4lg のそろそろ技術的日記

    バイナリ列を見て x86 のコードかな〜とニヨニヨできる人に、x86 のコードであること、だけじゃなく実際のコード列も読めるようになってほしい!そんな願いから、今回は hex dump のバイト列を見つめてハンド逆アセンブルできるようになるための、効率良い覚え方を紹介します。 今回は、32-bit x86 について解説するよ。 まとめて覚えておきたい 8 つの命令、add, sub, adc, sbb, and, or, xor, cmp (00h〜3Dh) これらの命令は近い所に配置されていて、しかも命令のルールがほとんど同じです。 つまり、ほとんど同じように覚えることができるのです。opcode map 上では次の領域が相当します。 0 1 2 3 4 5 6 7 8 9 A B C D E F 0 ■ ■ ■ ■ ■ ■ ←add ■ ■ ■ ■ ■ ■ ←or 1 ■ ■ ■ ■

    ハンド (逆) アセンブルのための x86 ニーモニックの覚え方 - @a4lg のそろそろ技術的日記
  • x86x64 SSE4.2 POPCNT

    参考: https://github.com/ruby-llvm/ruby-llvm/tree/master/samples https://github.com/Kmotiko/DummyCCompiler http://kschiess.github.io/parslet/ https://github.com/ruby-llvm/ruby-llvm https://github.com/cuzic/llvm-kitsunesan

    x86x64 SSE4.2 POPCNT
  • SSE4.2の文字列処理命令の紹介に関する補足(アイランとページ境界)

    x86/x64最適化勉強会1 なんとか無事終了. ustがうまくいったりいかなかったり, 運営が手間取ったりと申し訳ない. 主催するというのはたいへんだなあ. 名前だけはwebなりでよく見かけていたけど会ったことなかった方々に会えたので満足. でもこれまた初めてお会いした@takehiro_tさんとは殆どしゃべれなかった. 残念. 個人的にはw_oさんのベンチマークの結果から理由を探していく部分が興味深かった. 反省点 : 発表の間は5分マージンを入れておく. タイマーあるとよさげ. とりあえずいくつかの資料へのリンク(uploadされれば随時更新). herumi : 条件分岐とcmovとmaxps m_asama : IA32/Intel64におけるキャッシュ利用最適化 sinya8282 : 開発中のJIT版grepの苦労話 TAKESAKO : ビットを数える herumi

  • http://www.x86-64.org/documentation/abi.pdf

    System V Application Binary Interface AMD64 Architecture Processor Supplement Draft Version 0.99.5 Edited by Michael Matz1 , Jan Hubiˇcka2 , Andreas Jaeger3 , Mark Mitchell4 September 3, 2010 1matz@suse.de 2jh@suse.cz 3aj@suse.de 4mark@codesourcery.com AMD64 ABI Draft 0.99.5 – September 3, 2010 – 15:28 Contents 1 Introduction 9 2 Software Installation 10 3 Low Level System Information 11 3.1 Mach

  • gccのx86インラインアセンブリに関して

    GCCでインラインアセンブリを使用 する方法と留意点等 for x86  (1999〜2006年10回改訂、2006年1月22日と2011年3月22日に注意を追加、最終更新日2011年3月22日) 文: A. SAITOH <s-akira at users.sourceforge.net>  home ※システム名、CPU名は一般に開発会社の登録商標です。 以下の情報はあまり過度に信用しないで下さい。より正確な情報は、asやgccのinfoから得て下さい。 個々のプロセッサ命令の解説はここでは述べません。そのような技術資料は、インテルやAMDのウェブ サイトのdeveloper向けのページからpdf形式で入手できます。 以下の文及びプログラム例の運用結果に関して、筆者は一切責任を負いません。 参考文献 [0] D. Stancevic, K. Scheibler, J. Leto, Li

  • アセンブラコードで見るC++ Composer XEの強力な最適化機能 2ページ | OSDN Magazine

    このなかでも、特に注目したい機能が自動ベクトル化と自動並列化機能、ハイパフォーマンス最適化機能である。 連続した同一の演算処理をSSEで実行する「自動ベクトル化」 インテルCPUには、「ストリーミングSIMD拡張命令(SSE)」と呼ばれる演算命令が備えられている。SSEはXMMレジスタと呼ばれる専用レジスタを使用して各種演算を実行する機能で、FPU(浮動小数点処理ユニット)の代わりとして利用できるだけでなく、複数データに対する演算を同時に実行することが可能だ。XMMレジスタのサイズは128ビットなので、たとえば8バイトの倍精度浮動小数点データなら2個、4バイトの単精度浮動小数点データなら4個、1バイトのデータであれば16個を同時に処理できる。このように複数のデータを一括して処理する演算は「ベクトル処理」などとも呼ばれ、このような処理を行う命令は「パックド命令」などと呼ばれている。多くのデー

  • 【ARM】DQ9で学ぶARMアセンブル【逆汗】

    1 :名無しさん@お腹いっぱい。:2009/08/26(水) 09:07:21 ID:W/+sz/ts ・この際だから、DQ9を教材にして、ARMの勉強をしようという奇特な人たちの集うスレですw ・ソースは各自用意のこと。逆アセツールはARM用のならなんでもいいですが、 ttp://hp.vector.co.jp/authors/VA018359/ndsdis/ndsdis2_v110.zip がNDS専用になってて便利です ・ソースの一部(スニペット)貼るのはいいですが、1レスに入るくらいにして、それについてきちんと 論評なり解説なりしてください。要は「引用」にしてください ・「まるっとソースをzipでうp」とかはヤヴァいです。昔、PC-8001だかのROMを逆アセしたソースを 出版して訴えられたバカがいますw 繰り返しますが、ソースは各自用意のこと 2 :名無しさん@お腹いっぱい。:2

    umitanuki
    umitanuki 2010/05/08
    奇特な人々
  • Jun's Homepage

    What's new. Blender 2.8 - 4.x の使い方(2019-08-03 - 2023-12-23) 開発状況をウォッチしていたBlender 2.8 が公開されたので、別サブドメインでモバイル用のサイトとして「Blender 2.8 の使い方 (01), (02), (03), (04), (05), (06), (07), (08), (09), (10), (11), (12), (13), (14), (15), (16), (17) (18) (19) 」を始めました。 Raspberry Pi メモ(55) (2022/11/30,2022/12/08) 64ビット版のUbuntu 22.04LTS を Raspberry Pi 4B にインストールして、システムコンテナのLXC気で使うための解説です。 Raspberry Pi メモ(54) (2021/

  • x86_64 Assembly Language Programming

    レジスタの使い方は次の通りです. レジスタ用途保存 rax戻り値不要 rcx1番目の整数型引数不要 rdx2番目の整数型引数不要 r83番目の整数型引数不要 r94番目の整数型引数不要 r10, r11-必要なら呼び出し元(caller)で保存 r12〜r15, rdi, rsi, rbx, rbp, rsp-必要なら呼び出し側(callee)で保存 xm01番目の浮動小数型引数 / 戻り値不要 xm12番目の浮動小数型引数不要 xm23番目の浮動小数型引数不要 xm34番目の浮動小数型引数不要 xm4, xm5-必要なら呼び出し元(caller)で保存 xm6〜xm15-必要なら呼び出し側(callee)で保存 スタックは常に16byteアラインメントされています. ただし関数呼び出し直後は戻りアドレス(8byte)がpushされているため, 8(mod 1

  • 1