タグ

2011年6月28日のブックマーク (1件)

  • ハードウェアを意識したプログラミングの基礎(前編)

    ● ポート・マップトI/O ポート・マップトI/Oのアドレス空間は,メモリとは完全に異なるため,メモリ・アクセスと同じ方法ではアクセスできません.そのため,CPUはI/Oポート・アドレス空間にアクセスするための専用のアセンブリ命令を持っています.inやoutという命令です. in src, dest out src, dest Linuxはもともとx86用に作られたカーネルです.そのため,x86由来のコードが今でも多く残っています.in()/out()マクロもその一つです.Linuxでは,x86のI/Oアクセス用命令をC言語で使えるようにしたマクロです.アクセス・サイズによってinb,inw,inlという名前で定義されています.リスト4は8ビット・アクセス用のマクロinb()です. static inline unsigned char inb(int port) { unsigned c

    kotak
    kotak 2011/06/28
    inb/outb()は元々、x86用のI/Oアクセス用。メモリアクセス用はreadb/writeb()。両方まとめてioread/iowrite()。