Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
furandon_pig
1,666 views
x86 CPUにejectコマンドを組み込みたい!
Software
◦
Read more
0
Save
Share
Embed
Embed presentation
Download
Download to read offline
1
/ 10
2
/ 10
3
/ 10
4
/ 10
5
/ 10
6
/ 10
7
/ 10
8
/ 10
9
/ 10
10
/ 10
More Related Content
PDF
Gentooサークル新歓コンパのご案内
by
Takuto Matsuu
PDF
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
by
zgock
PPTX
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
PDF
15分で知るVagrant (NSEG 2013-08-24)
by
hiro345
PDF
Pdp11 on-fpga
by
magoroku Yamamoto
PDF
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
by
Kenichiro MATOHARA
PDF
BHyVeってなんや
by
Takuya ASADA
PDF
Pdp11onfpga
by
xylnao
Gentooサークル新歓コンパのご案内
by
Takuto Matsuu
openSUSEで最強仮想環境をつくろう - ゲーミングから仮想通貨まで - OSC名古屋2017セミナー資料
by
zgock
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
15分で知るVagrant (NSEG 2013-08-24)
by
hiro345
Pdp11 on-fpga
by
magoroku Yamamoto
マウスを使わないでキーボードで快適に生活する方法(GNU Screen/tmux/byobu/awesome)
by
Kenichiro MATOHARA
BHyVeってなんや
by
Takuya ASADA
Pdp11onfpga
by
xylnao
What's hot
PDF
Eucalyptus on OpenStack
by
irix_jp
PDF
Cuis Smalltalkの紹介
by
Masashi Umezawa
ODP
Gentoo Linuxの紹介
by
University of Tsukuba Linux User Group
PDF
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
ODP
Bhyve Internals
by
Takuya ASADA
PPTX
今時のLinuxにおけるGPUエンコード事情
by
zgock
PDF
Xenとzfsで作る家庭内VDIサーバ
by
zgock
PDF
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
by
tokuhy
PDF
BHyVe: The BSD Hypervisor
by
Takuya ASADA
PDF
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
by
shimadah
PDF
謎PCとの付き合い方(LILO東海道 2015/5発表分)
by
shimadah
ODP
Bhyve code reading
by
Takuya ASADA
PDF
今時のLinuxにおけるGPUエンコード事情2018
by
zgock
PDF
NetBSD, On the ROAD 2016
by
Jun Ebihara
PDF
しつこくXenとzfsで作る家庭内vdiサーバ2015年版
by
zgock
PDF
エンジニアのための痔の話
by
Kouhei Maeda
PDF
俺のGentooがこんなに可愛いわけがない
by
Takuto Matsuu
KEY
軽快なBHyVe
by
Takuya ASADA
PDF
魁ここんとーく in おおさか
by
shimadah
PDF
NetwalkerとARM Linuxのカスタマイズ情報
by
Netwalker lab kapper
Eucalyptus on OpenStack
by
irix_jp
Cuis Smalltalkの紹介
by
Masashi Umezawa
Gentoo Linuxの紹介
by
University of Tsukuba Linux User Group
BHyVeでOSvを起動したい 〜BIOSがなくてもこの先生きのこるには〜
by
Takuya ASADA
Bhyve Internals
by
Takuya ASADA
今時のLinuxにおけるGPUエンコード事情
by
zgock
Xenとzfsで作る家庭内VDIサーバ
by
zgock
XenServerとZFSストレージでサーバ仮想化 - OSC2011 Tokyo/Spring 自宅SAN友の会(後半)
by
tokuhy
BHyVe: The BSD Hypervisor
by
Takuya ASADA
opencoconの作り方 (オープンソースカンファレンス2015 Tokyo/Spring 小江戸らぐセミナー)
by
shimadah
謎PCとの付き合い方(LILO東海道 2015/5発表分)
by
shimadah
Bhyve code reading
by
Takuya ASADA
今時のLinuxにおけるGPUエンコード事情2018
by
zgock
NetBSD, On the ROAD 2016
by
Jun Ebihara
しつこくXenとzfsで作る家庭内vdiサーバ2015年版
by
zgock
エンジニアのための痔の話
by
Kouhei Maeda
俺のGentooがこんなに可愛いわけがない
by
Takuto Matsuu
軽快なBHyVe
by
Takuya ASADA
魁ここんとーく in おおさか
by
shimadah
NetwalkerとARM Linuxのカスタマイズ情報
by
Netwalker lab kapper
More from furandon_pig
PDF
CoderDojoの日常
by
furandon_pig
PPTX
TDEで透過的暗号化
by
furandon_pig
PPTX
ジャパリパークさいかいけーかく
by
furandon_pig
PPTX
パケットジェネレータipgenから見るnetmap
by
furandon_pig
PDF
第6回 エンジニアのためのプレゼン技術研究会「今年の抱負」と「アンチプレゼンパターン」発表スライド
by
furandon_pig
PPTX
nginxに追加された新モジュール それがHTTP/2モジュールです
by
furandon_pig
PDF
プレゼン用の図を自動生成する話
by
furandon_pig
PDF
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
by
furandon_pig
PDF
elasticsearchソースコードを読みはじめてみた
by
furandon_pig
CoderDojoの日常
by
furandon_pig
TDEで透過的暗号化
by
furandon_pig
ジャパリパークさいかいけーかく
by
furandon_pig
パケットジェネレータipgenから見るnetmap
by
furandon_pig
第6回 エンジニアのためのプレゼン技術研究会「今年の抱負」と「アンチプレゼンパターン」発表スライド
by
furandon_pig
nginxに追加された新モジュール それがHTTP/2モジュールです
by
furandon_pig
プレゼン用の図を自動生成する話
by
furandon_pig
こんてなぐらし!〜FreeBSD VPSでライブマイグレーション〜
by
furandon_pig
elasticsearchソースコードを読みはじめてみた
by
furandon_pig
x86 CPUにejectコマンドを組み込みたい!
1.
- カーネル/VM night!
- x86 CPUにejectコマンドを 組み込みたい! @furandon_pig
2.
自己紹介 Twitter ID: @furandon_pig 日々NetBSDを使っています。 今年は参加した勉強会で必ず一回は「NetBSD」と発する所存で す。 (前の発表で)Go言語に関する話があったので... 今年のプリキュアはは「Go!プリンセスプリキュア」 マーケティング的(?)にGo言語の当たり年、のはず!
3.
今日の話題 ejectコマンド。 ほぼタイトルで出オチ。 NetBSDでは以下のコマンドでCD-ROMドライブをejectできる。 $ sudo eject
/dev/cd0a これをx86に組み込むまでの(不毛な)戦い。
4.
x86にejectコマンドを組み込む 「お前は何を言っているんだ」状態(画像略)。 CPUそのものではなく、qemuに組み込んでみる。
5.
どの命令にejectコマンドを組み込む? push命令が良さそう? "eject"と命令数が同じ。 (length "eject") 5 (length "pusha") 5 libopcodesの"pusha"を"eject"に置き換えるとas,objdumpで"eject" が指定/表示できそう。 $
hexdump -C /usr/lib/libopcodes.so.5.0 | grep pusha 00014b90 6f 76 7a 78 00 70 75 73 68 00 70 75 73 68 61 00 |ovzx.push.pusha.| 00017c10 70 75 73 68 50 00 70 6f 70 50 00 70 75 73 68 61 |pushP.popP.pusha|
6.
が...(pushaの置き換えでは)ダメっ...! $ objdump -d
/netbsd c010c758 <i8259_stubs>: c010c758: 40 inc %eax ... c010c7a8: 60 pusha c010c7a9: 1f pop %ds c010c7aa: 10 c0 adc %al,%al c010c7ac: 60 pusha 上手いこと他とぶつからない命令にしないと...。
7.
CPUID命令(eject用)(1/2) cpuid命令にejectを組み込むのが良さそう。 diff -ur qemu-2.1.3.orig/target-i386/cpu.c
qemu-2.1.3/target-i386/cpu.c --- qemu-2.1.3.orig/target-i386/cpu.c 2015-01-23 01:19:06.000000000 +0900 +++ qemu-2.1.3/target-i386/cpu.c 2015-02-14 18:17:34.000000000 +0900 @@ -2192,7 +2192,7 @@ } } } else { - if (index > env->cpuid_level) + if (index > env->cpuid_level && index != 0x25252) index = env->cpuid_level; } @@ -2375,6 +2375,9 @@ } break; } + case 0x25252: + system("eject /dev/cd0a"); + break; case 0x80000000: *eax = env->cpuid_xlevel; *ebx = env->cpuid_vendor1;
8.
CPUID命令(eject用)(2/2) EAXレジスタのパラメータに0x25252を指定することでejectを実 行する。 # gcc -nostdlib
-g -o eject_instruction eject_instruction.s .section ".note.netbsd.ident", "a" .int 7 .int 4 .int 0x01 .ascii "NetBSD00" .int 0x23b419a0 .section ".text" .balign 4 .globl _start .type _start, @function _start: # execute eject command. movl $0x25252, %eax cpuid # exit(EXIT_SUCCESS) movl $0x0, (%esp) movl $0x1, %eax int $0x80 ret
9.
CPUID命令でejectを実行してみる 仮想マシンを実行する(rootで実行する) $ sudo ./i386-softmmu/qemu-system-i386
-hdd ../vnmnbsd/nbsd.vdi ゲストOSから以下を実行する cpuid命令を実行した時にCD-ROMがejectされる $ gcc -nostdlib -g -o eject_instruction eject_instruction.s $ gdb eject_instruction ... (gdb) break _start (gdb) run ... Breakpoint 1, _start () at eject_instruction.s:16 16 movl $0x2525x, %eax (gdb) stepi 17 cpuid (gdb) stepi
10.
まとめ x86にejectコマンドを組み込む話。 CPUID命令にからめてejectを実行してみた。 (今年はGo言語の当たり年(のはず))
Download