zoukankan      html  css  js  c++  java
  • C内嵌汇编-格式

    C内嵌汇编-格式:

    __asm__(
    汇编语句部分
    :输出部分
    :输入部分
    破坏描述部分
    );
    C内嵌汇编以关键字”__asm__””asm”开始, 下辖四
    个部分, 各部分之间使用 ":"分开, 第一部分是必须写的,
    后面三部分是可以省略, 但是分号:不能省略!

    1.汇编语句部分: 汇编语句 的集合, 可以包含多条汇编
    语句 每条语句之间需要使用 换行符 “ ”隔开或
    使用 分号“ ; ”隔开。
    2.输出部分: 在汇编中被修改的 C变量列表
    3.输入部分: 作为参数输入到汇编中的变量列表
    4.破坏描述部分: 执行汇编指令会破坏的寄存器描述

    范例

    void write_p15_c1 (unsigned long value)
    {
    __asm__(
    “mcr p15, 0, %0, c1 , c0, 0 ”
    :
    : “r” (value) @编译器选择一个R*寄存器
    : "memory");
    }

    unsigned long old;
    unsigned long temp;
    __asm__ volatile(
    "mrs %0, cpsr "
    "orr %1 , %0, #128 “
    "msr cpsr_c, %1 "
    : "=r“ (old), "=r“ (temp)
    :
    "memory");

    @Volatile使用此关键字来告诉编译器不要对接下来的这部分代码进行优化。

  • 相关阅读:
    五、nginx 配置实例-负载均衡
    四、nginx配置实例-反向代理
    三、nginx配置文件
    二、Nginx 安装
    十二、rpm包的管理
    十一、进程管理
    十、Linux磁盘分区、挂载
    九、定时任务调度
    八、组管理和权限管理
    七、实用指令
  • 原文地址:https://www.cnblogs.com/wxb20/p/6255666.html
Copyright © 2011-2022 走看看