タグ

asmに関するfa11enprinceのブックマーク (5)

  • introduction to x86-asm

     x86アセンブリ言語入門 昔に書いたのを発掘し, 若干手直しして出しました. 内容の古いところや間違ってるところがあればご指摘ください. 64bit環境についてはx64 アセンブリ言語プログラミングを参照してください. なおこのページではごく簡単なコードを書けるようになること, デバッグ時に知っておけばよいこともあるだろう程度の知識の取得を目指します. 高速化手法自体については触れません. レジスタについて 基用語 最初の一歩 Cとの連係 Cとの連係 その2 Cとの連係 その3 Windows DLL 少し応用 gasの場合は 実際に書くならこんなことも 簡易命令一覧 Intel最適化マニュアルを読もう

  • LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage

    Linux kernelを直接JavaScript上で動かした. つまり,JSLinuxのようにEmulatorをJavaScriptで作成し, その上でLinuxを動かすのではなく, JavaScriptで書かれたLinuxを生成し,それを動かす,ということである. LKL.js Architecture リポジトリは以下の通り. https://github.com/retrage/linux/tree/retrage/em-v2 なお lkl.js Demo にデモを用意した. SharedArrayBufferを有効にして試してみてほしい. Linux Kernel Library (LKL) ここでは,Linux kernelをLibrary OSの形態の1つであるAnykernelにする Linux Kernel Library (LKL)を利用する. LKLはLinux ke

    LKL.js: Linux kernelを直接JavaScript上で動かす - Blog posts by @retrage
    fa11enprince
    fa11enprince 2018/07/23
    emscripten 謎技術だ
  • 熱血!アセンブラ入門 読書会(9) #hotasm - by shigemk2

    X86アセンブラ/GASでの文法 - Wikibooks おさらい H8は可変長命令 命令の長さをケチるためにreturn 0の場合はsubを使っている。movだと4バイト H8は16ビットCPU 00fe1400 <_null>: fe1400: 54 70 rts 00fe1402 <_return_zero>: fe1402: 19 00 sub.w r0,r0 fe1404: 54 70 rts 00fe1406 <_return_one>: fe1406: 79 00 00 01 mov.w #0x1,r0 fe140a: 54 70 rts 00fe140c <_return_int_size>: fe140c: 79 00 00 02 mov.w #0x2,r0 ! 2バイト fe1410: 54 70 rts 00fe1412 <_return_pointer_size>:

    熱血!アセンブラ入門 読書会(9) #hotasm - by shigemk2
  • マイコンのテクニック アルゴリズム

    マイコン系 プログラムのテクニック アルゴリズム 2000/1月再着工 現在工事中 チャタリング取り 割算を使わない整数の平方根の算出 その他関数近似 10進 100進 割算 DDA ステップモータの回し方 MOD n の平均 プログラムの流れ Win95で斜め楕円の描画 楕円をベジェスプラインで近似する 楕円の周長 直線,円系 の アルゴリズム 今までニフテイとかに投稿した内容をまとめています。推考していないので ボロボロとミスがあるようです。 論理演算の利用 AND OR 演算を利用すると分岐無しに色々な計算が出来ます 分岐無しにすると処理時間が固定になり便利な事が多いですね 最近のCPUは分岐が少ない方が速い事も多いようです /************************************************************ 符号無し同士の加算をし、結果がオーバ

  • プログラミングノート - x86

    movl 3(%esi,%ebx,2), %eax 整数演算 ロード/ストア mov eax, [4] mov eax, [ebx] mov eax, [ebx+4] mov eax, [ecx*2+4] mov eax, [ebx+ecx] mov eax, [ebx+ecx+4] mov eax, [ebx+ecx*2] mov eax, [ebx+ecx*2+4] mov eax, [rip+4] レジスタ (eax, ebx, ecx の部分) は汎用レジスタどれでも指定できる。 シフト (*2 の部分) は 2, 4, 8 のいずれか。 オフセット (+4 の部分) は符号付き 8 ビットまたは 32 ビット。 64 ビットでは rip 相対アドレッシングが可能。 ただし単純にオフセット (符号付き 32 ビット) を加算する形式のみ。 32 ビットでは eip 相対は不可。 c

  • 1