当前位置: 首页 > news >正文

C 内联汇编

 这是一内个汇联编格的式。

拆解

asm

1.说明是一个内联汇编

asm-qualifiers

2.有三个值 volatile inline goto

        volatile 是可选的,编译器有可能对汇编代码进行优化,使用 volatile 关键字之后,告诉编译器不要优化手写的内联汇编代码。

语法规则

asm [volatile] ("汇编指令")

Assembler Template

3.是一个字符串,是放汇编指令的,

  1. 超过一条指令,必须用\n\t分隔符进行分割;
  2. 多条汇编指令,可以写在一行,也可以写在多行;
  3. 所有指令,必须用双引号包裹起来;

#include <stdio.h>int a = 1;
int b = 2;
int c; int main()
{asm volatile ("movl a,  %eax\n\t""addl b, %eax\n\t""movl %eax, c");printf("c = %d \n", c);return 0;
}

C语言中会自动把两个连续的字符串字面量拼接成一个,所以"nop\n\tnop\n\t" "nop" 这两个字符串会自动拼接成一个字符串。

除了汇编指令还有,下面带冒号4,5,6

 OutputOperands

小例子 

结果 

 解释

 它的反汇编代码

 

下面用寄存器版本试试

 结果一样

 汇编

例子2

把b的变量给到a

 


http://www.mrgr.cn/news/6263.html

相关文章:

  • Java将一张excel数据填充到另一张excel表
  • 基于YOLOv8的船舶目标检测与分割(ONNX模型)
  • 一条sql 在MySQL中是如何执行的
  • 栅格布局在 HarmonyOS 中的应用及扩展
  • 智能听诊器:宠物健康监测的新篇章
  • 【SQL】商品销售
  • Spring 常见设计模式
  • C语言学习——文件
  • 微信小程序flex-grow无效
  • 尚品汇-购物车列表、临时用户购物车与登录用户购物车合并实现(三十七)
  • 流媒体服务器如何让WebRTC支持H.265,同时又能支持Web js硬解码、软解码(MSE硬解、WASM软解)
  • 【已上线】C++ mysql连接池
  • 【xilinx】Vivado 成功运行Ubuntu需要哪些 文件?
  • 【JVM】JVM内存模型与操作系统内存模型(二)
  • Mysql-linux通过rpm安装、linux离线安装mysql
  • XSS-过滤特殊符号的正则绕过
  • 【HarmonyOS NEXT星河版开发实战】天气查询APP
  • 极速文件预览!轻松部署 kkFileView 于 Docker 中!
  • 汇编
  • Dragonfly S 5MP工业相机量产 机器视觉应用的新选择