目录

  • 一、ATT 与 Intel
  • 二、函数调用的约定
  • 三、C语言调用汇编程序
  • 四、汇编程序调用C语言
  • 五、内联汇编
    • 5.1、基本asm格式
    • 5.2、扩展asm格式
    • 5.3、使用占位符来替代寄存器名称
      • 5.3.1、使用占位符来替代寄存器名称
      • 5.3.2、给占位符重命名
    • 5.4、使用内存地址

一、ATT 与 Intel

x86架构的处理器的汇编指令一般使用有两种:

  • ATT 汇编
  • Intel 汇编

常用的汇编器:

  • MS VC 编译器:只支持 Intel 格式
  • GNU CC 编译器:支持 ATT 格式和 Intel 格式,一般从 gcc 的上层开始调用像cc、ar 等工具。

ATT 与 Intel 汇编代码格式区别如下:

  • Intel 代码省略了指示大小的后缀。我们看到指令 push 和 mov,而不是 pushq 和 movq
  • Intel 代码省略了寄存器名字前面的 ‘ % ’ 符号,用的是 rbx,而不是 %rbx
  • Intel 代码用不同的方式来描述内存中的位置,例如是 ‘ QWORD PTR [rbx] ’ 而不是 ‘ (%rbx) ’
  • 在带有多个操作数的指令情况下,列出操作数的顺序相反。例如,ATT格式:mov 源操作数, 目的操作数;Intel格式:mov 目的操作数, 源操作数
  • ATT 注释使用 ’ # ',Intel 注释使用 ’ ; ’

详细的区别参考:AT&T与Intel格式的汇编语法

【ATT 与 Intel】汇编与C语言相互调用及内联汇编相关推荐

  1. 一步步编写操作系统 77 内联汇编与ATT语法简介

    内联汇编 之前和大家介绍过了一种汇编方法,就是C代码和汇编代码分别编译,最后通过链接的方式结合在一起形成可执行文件. 另一种方式就是在C代码中直接嵌入汇编语言,强大的GCC无所不能,咱们本节要学习的就 ...

  2. 在 VC++ 中使用 内联汇编

    From:https://blog.csdn.net/root19881111/article/details/8450266 VC++内联汇编(MSDN相关内容完整翻译):http://www.cp ...

  3. 【转贴】GCC内联汇编基础

    原文作者 Sandeep.S 英文原文 [https://www.ibiblio.org/gferg/ldp/GCC-Inline-Assembly-HOWTO.html] 本文将介绍GCC编译环境下 ...

  4. 32位汇编第七讲,混合编程,内联汇编

    32位汇编第七讲,混合编程 博客园IBinary原创 QQ:2510908331  博客连接:http://www.cnblogs.com/iBinary/ 转载请注明出处,谢谢 混合编程的概念,有时 ...

  5. VS2015默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)

    截至目前(2018年底2019年初),本人windows平台下的各种开发所用的IDE主要就是VS2015.虽然VS2017已经出来一年多了,本人也自己使用过一段时间,但没发现特别大的亮点,又考虑到整个 ...

  6. Visual studio 默认不支持x64下__asm{}内联汇编的解决方案(含资源共享)

    Windows下使用内联汇编方法很简单.使用 __asm 关键词结构作为制导就可以. __asm{ // Assembly Codes here } 但是,Visual Studio目前只支持32位( ...

  7. linux c内联汇编popl,ShiYanLou/汇编语言.md at master · Ewenwan/ShiYanLou · GitHub

    汇编语言简述 内联汇编 G++中的内联汇编分为基本形式的内联汇编与扩展形式的内联汇编:毫无疑问,扩展形式的内联汇编更加复杂,也更加强大 __asm__与asm 两者是一样的,只不过ANSI C标准将a ...

  8. 2020-02-06 asm内联汇编

    https://blog.csdn.net/darennet/article/details/41128881 通常嵌入到 C 代码中的汇编语句很难做到与其它部分没有任何关系,因此更多时候需要用到完整 ...

  9. C语言-ATT拓展内联汇编(ATT/GCC)

    你能看到这篇文章说明你肯定是知道AT&T语法是个什么东西,但是要注意,下文所示示例都是拓展内联汇编,而不是基本内联汇编,代码示例在Ubuntu环境下演示 ATT完整语法如下,asm volat ...

最新文章

  1. cs4 php,php dreamweaver cs4
  2. SAP中负数的表示增强 负号从数字后更改到数字前面
  3. BZOJ 3218 UOJ #77 A+B Problem (主席树、最小割)
  4. Python常见的一些面试题,太有用啦!
  5. 《实践与思考》系列连载(5)——问答Hprose,以及关于技术与开源的思考
  6. Java 9:欢迎来到Module World
  7. 前端学习(1941)vue之电商管理系统电商系统之介绍分类管理的作用
  8. MyBatis参数为Integer型并赋值为0时判断失误的问题解决
  9. 趣学 C 语言(十二)—— 文件操作
  10. docker学习记录 docker 脚本----gitlab,nexus3(二)
  11. [python]pytest实现WEB UI自动化
  12. Spring 源码编译
  13. STL源码剖析(侯杰)——读书笔记
  14. 手把手会教你搭建微信小程序服务器node!!!
  15. pci和pcie的区别
  16. Java-汉字字符串转拼音,包括首字母和全拼
  17. 【前端】JavaScript-节点操作
  18. 如何让你的内网服务器可以被外网访问到(端口映射、NAT、域名解析、IP地址)
  19. PAL和NTSC有什么区别
  20. aix 下mysql库使用_AIX中常用的SMIT的使用

热门文章

  1. 图像处理——如何处理不同格式和深度的图像确保清晰度满足要求
  2. XML完整教程和什么是XML语言
  3. CPU到达100%的排查
  4. 利用python爬取丁香医生上新型肺炎数据,并下载到本地,附带经纬度信息
  5. Exception locking surface SurfaceView报错解决
  6. 1608: DNA序列---复制问题 - kmp
  7. Allegro创建板框的方法介绍
  8. 开始学习Java啦!
  9. SWFUpload使用
  10. DirectSound初步教程