タグ

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

タグの絞り込みを解除

x64に関するumitanukiのブックマーク (2)

  • x86/x64のマシン語の長さを計算するコードとSECCONハッカソン - お前の血は何色だ!! 4

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

    x86/x64のマシン語の長さを計算するコードとSECCONハッカソン - お前の血は何色だ!! 4
  • 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