免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12下一页
最近访问板块 发新帖
查看: 7341 | 回复: 12
打印 上一主题 下一主题

gcc编译嵌入汇编指令的c代码,出错???高手进来! [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2004-11-16 11:17 |只看该作者 |倒序浏览
为了测试gcc中,对嵌入汇编指令的c/c++代码,偶写了一段如下代码作测试用:

__asm__("mov ah, al";

gcc编译时的提示错误为:
/tmp/ccldQTM.s:Assembler messages:
/tmp/ccldQTM.s:16:Error:too many memory reference for 'mov'

什么原因,请高手解释:

随便问一下:Linux有没有和M$ NT内核系统的运行级的概念,即不能直接outp()之类的对硬件端口直接访问,Linux有没有这个保护机制???

等……

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
2 [报告]
发表于 2004-11-16 11:31 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

linux下用AT&T风格的汇编语言。用__asm__("movb %al, %ah";就好了。

论坛徽章:
0
3 [报告]
发表于 2004-11-16 11:55 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

__asm__("movb %%ah, %%al";

论坛徽章:
0
4 [报告]
发表于 2004-11-16 12:22 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

[quote]原帖由 "studyonly"]Linux有没有和M$ NT内核系统的运行级的概念,即不能直接outp()之类的对硬件端口直接访问,Linux有没有这个保护机制..........[/quote 发表:


不能直接 out

论坛徽章:
0
5 [报告]
发表于 2004-11-16 12:51 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

[quote]原帖由 "studyonly"]Linux有没有和M$ NT内核系统的运行级的概念,即不能直接outp()之类的对硬件端口直接访问,Linux有没有这个保护机制..........[/quote 发表:

如果连这个都没有的系统谁还敢用作服务器。
linux下可以在用户模式中直接使用IO端口,范围限制在0-0x3ff,但是你的程序必须有root权限。而且在直接访问端口前还得ioperm取得使用权。
当然如果你喜欢变态的程序又不怕带来麻烦,就iopl(3),,这样子爽是爽了,就是让人有点心神不安。
这个功能很方便地。比win上爽多了。

论坛徽章:
0
6 [报告]
发表于 2004-11-16 13:49 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

哪里有相关的资料???

论坛徽章:
0
7 [报告]
发表于 2004-11-16 15:28 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

以上问题已经解决,
如何将一个c程序中的变量,赋给寄存器,
例如:

void toAX(int a)
{
     ...
     // 如何实现把a赋给寄存器ax
}

是这样吗? asm("mov ax, %0" : "r"(a))

论坛徽章:
0
8 [报告]
发表于 2004-11-16 15:41 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

asm("" : :"ax"(a));

论坛徽章:
0
9 [报告]
发表于 2004-11-16 17:14 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

用汇编产生15H中断:
asm("int $0x15";
编译通过,运行出现段错误!

等……

论坛徽章:
1
荣誉版主
日期:2011-11-23 16:44:17
10 [报告]
发表于 2004-11-16 17:16 |只看该作者

gcc编译嵌入汇编指令的c代码,出错???高手进来!

不要完全套用DOS下的程序,关于中断,是有不同的处理的。好好查查资料吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP