[英]Converting problem: __asm__ __volatile__
我已經在linux環境中與Nasm打交道已經有一段時間了,這個功能運行得很好......但是現在我正在切換到Windows環境,我想使用Masm(使用VS2008)我似乎無法讓這個工作.. 。
void outportb (unsigned short _port, unsigned short _data)
{
__asm__ __volatile__ ("outb %1, %0" : : "dN" (_port), "a" (_data));
}
當我寫這樣的東西......
void outportb (unsigned short _port, unsigned short _data)
{
asm volatile ("outb %1, %0" : : "dN" (_port), "a" (_data));
}
asm不再被識別,並且volatile拋出一個錯誤,說“string”,我也嘗試編寫_asm volatile但是我得到一個錯誤,說''opcode'中的內聯匯編語法錯誤;找到'數據類型'“
假設您正在討論x86命令集,請記住以下幾點:
這是代碼(假設您正在寫入16位端口):
void outportw(unsigned short port, unsigned short data)
{
__asm mov ax, data;
__asm mov dx, port;
__asm out dx, ax;
}
如果你寫入8位端口,代碼應如下所示:
void outportb(unsigned short port, unsigned char data)
{
__asm mov al, data;
__asm mov dx, port;
__asm out dx, al;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.