当前位置: 技术问答>linux和unix
linux 0.11内核port_read宏
来源: 互联网 发布时间:2016-09-01
本文导语: 在linux/kernel/blk_drv/hd.c中61行定义的port_read宏如下: #define port_read(port,buf,nr) __asm__("cld;rep;insw"::"d"(port),"D"(buf),"c"(nr):"cx",""di) 请问如何理解该宏函数定义呢? | 就是把port端口的nr个字(2 bytes)...
在linux/kernel/blk_drv/hd.c中61行定义的port_read宏如下:
#define port_read(port,buf,nr)
__asm__("cld;rep;insw"::"d"(port),"D"(buf),"c"(nr):"cx",""di)
请问如何理解该宏函数定义呢?
#define port_read(port,buf,nr)
__asm__("cld;rep;insw"::"d"(port),"D"(buf),"c"(nr):"cx",""di)
请问如何理解该宏函数定义呢?
|
就是把port端口的nr个字(2 bytes)读到buf缓冲区中
__asm__表示内嵌汇编,执行下面3条指令
cld
rep
insw
在执行这些指令的时候,port使用寄存器edi("d"),buf使用寄存器edx("D"),nr使用寄存器ecx("c")
__asm__表示内嵌汇编,执行下面3条指令
cld
rep
insw
在执行这些指令的时候,port使用寄存器edi("d"),buf使用寄存器edx("D"),nr使用寄存器ecx("c")
|