内嵌汇编问题
请问在标准C++中怎样内嵌汇编代码,我在DEV C++中试了几下都没法编译.
请说明用的是何种编译器,是否是标准的
问题点数:50、回复次数:21Top
1 楼alen_ghl(东方求*)回复于 2006-03-11 12:07:54 得分 4
__asm{
……
}Top
2 楼jixingzhong(瞌睡虫·星辰)回复于 2006-03-11 12:27:41 得分 4
各个环境的 嵌入汇编 的方式可能有一点区别的 ~
一般是类似
asm mov ah,9
或者是
__asm {}Top
3 楼mydo(侯佩|hopy|ks)回复于 2006-03-11 12:36:39 得分 4
__asm {}
没发编译提示什么?Top
4 楼DiabloWalkOnTheEarth(我想到个绝妙的昵称,只是地方太小,写不下)回复于 2006-03-11 12:44:49 得分 5
gcc 是 AT&T 语法, 跟 Intel 的是不同地 .....Top
5 楼deutsch(人民)回复于 2006-03-11 13:04:40 得分 5
同意楼上的
在at&t中应该是
asm("movw $9,%ax");Top
6 楼primercpp(初学者)回复于 2006-03-11 13:10:13 得分 0
如在DEV C++中运行以下代码:
#include <conio.h>
int main(void)
{
__asm{
mov ax,1
}
getch();
return 0;
}
出错:
cc1plus.exe D:\Dev-Cpp\work\cc1plus.exe unrecognized command line option "-fsave-memoized"
D:\Dev-Cpp\work\Makefile.win [Build Error] [test.o] Error 1
DEV C++不是支持标准的吗,怎么没法编译?
Top
7 楼strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)回复于 2006-03-11 14:49:05 得分 10
ISO/IEC 9899:1999说
J.5.10 The asm keyword
1 The asm keyword may be used to insert assembly language directly into the translator
output (6.8). The most common implementation is via a statement of the form:
asm ( character-string-literal );
STANDARD ISO/IEC14882说:
7.4 The asm declaration [dcl.asm]
1 An asm declaration has the form
asm-definition:
asm ( string-literal ) ;
The meaning of an asm declaration is implementation-defined. [Note: Typically it is used to pass information
through the implementation to an assembler. ]
asm ("movb $1, %ax"); 更多参见gcc 3.2.3(dev c++好像是gcc 3.2的版本)说明文档:http://gcc.gnu.org/onlinedocs/gcc-3.2.3/gcc/Extended-Asm.html#Extended%20Asm
再google以下“at&t assembly”Top
8 楼strangerryf(白痴与白痴讨论的结果一定是比白痴更为白痴的结论)回复于 2006-03-11 14:57:16 得分 5
偶打错了- -b
人民是对的:
mov ax,1 -> asm("movw $1, %ax");Top
9 楼Kenmark(fenix)回复于 2006-03-11 15:07:57 得分 3
AT&T的汇编语法和intel的不一样,要注意的东西Top
10 楼Kenmark(fenix)回复于 2006-03-11 15:08:32 得分 3
在VC++6下__asm{}十分通用Top
11 楼sankt(宠辱不惊,看庭前花开花落;去留无意,望天空云卷云舒.)回复于 2006-03-11 15:28:50 得分 0
学习
Top
12 楼primercpp(初学者)回复于 2006-03-11 16:11:04 得分 0
以AT&T语法来写,还是出现
cc1plus.exe D:\Dev-Cpp\work\cc1plus.exe unrecognized command line option "-fdollar-in-identifiers"
是不是哪些地方设置不对,请达人指点,不然立马将DEV C++删除,用MS!Top
13 楼ugg(逸学堂(exuetang.net))回复于 2006-03-11 16:53:51 得分 3
lz看一下帮助。
错误提示,是无法识别表示符号
unrecognized command line option
在VC中嵌入汇编
__asm
{
}
DEV C++ 中lz看看帮助吧Top
14 楼wjd7623054(千古风流)回复于 2006-03-11 17:31:17 得分 0
好像就是
asm
{
}
前边没有下华线的Top
15 楼sharkoasis(魔师庞斑)回复于 2006-03-11 18:09:25 得分 0
GCC应该用ATT的汇编语法,可以找ATT汇编的参考手册看看!Top
16 楼deutsch(人民)回复于 2006-03-11 18:42:08 得分 0
#include <conio.h>
int main()
{
asm("movw $1,%ax");
getch();
return 0;
}
gcc test.c -o test
无问题通过。
gcc 3.4.2 (mingw-special)Top
17 楼primercpp(初学者)回复于 2006-03-11 20:25:28 得分 0
感谢各位!命令行下用GCC 可以,但在IDE中却不能.Top
18 楼blh(当你不割肉时,你的损失只是个数字,当你割肉时,你的损失就是你的肉)回复于 2006-03-11 20:51:30 得分 4
gcc (Dev c++)对c文件中的内嵌汇编使用AT&T汇编
而VC/BC/TC则使用Intel汇编Top
19 楼wshcdr(dd)回复于 2006-03-11 20:57:08 得分 0
gzTop
20 楼ruodeer(看我的个性签名都给我分)回复于 2006-03-12 20:39:54 得分 0
markTop
21 楼wcg_jishuo()回复于 2006-03-12 22:48:03 得分 0
gzTop




