众所周知,C ++是一种全面而强大的编程语言,但是很少有高度专业化的情况下无法处理。在这种情况下,C ++提供了一个选项,使用该选项可以随时删除汇编代码。此选项使用'asm'语句。使用asm语句,可以将汇编语言直接嵌入到C ++程序中。asm关键字采用单个字段,该字段必须是字符串文字。
asm关键字的一般形式为:
asm("op-code");
一些编译器使用以下形式的asm语句:
一些GCC内联汇编语法如下:
1.寄存器命名:寄存器名称以%为前缀。
例如,寄存器是%eax,%cl等,而不仅仅是eax,cl。
2.操作数的顺序:与Intel约定(第一个操作数是目标)不同,操作数的顺序是源(源)和目的(后)。
例如,在AT&T汇编中,英特尔语法“ mov eax,edx”将看起来像“ mov%edx,%eax”。
3.立即操作数:立即操作数带有$前缀。例如-如“ addl $ 5,%eax”中所示,这意味着将立即长值5添加到寄存器%eax中。
基本上,这说明了在c ++中内联汇编的用法。术语“内联”用于指示编译器在进行实际调用时将函数的代码插入其调用者的代码中。这些功能称为“内联功能”。它减少了函数调用的开销。使用asm关键字将汇编代码编写为内联函数。
使用asm关键字的简单示例:
在DOS下运行时,此程序将生成INT 5指令,该指令将调用打印屏幕功能。
内联程序集可以使用以下两种格式:
程序说明了如何使用asm关键字:
上面的程序在asm关键字的帮助下使用内联汇编执行加,减和乘运算。