问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

内联汇编的GNU 汇编程序简述

发布网友 发布时间:2022-05-29 06:07

我来回答

1个回答

热心网友 时间:2022-07-09 07:59

Linux 中使用的基本汇编程序语法。GCC(用于 Linux 的 GNU C 编译器)使用 AT&T 汇编语法。下面列出了这种语法的一些基本规则。 asm ( assembler template
: output operands (optional)
: input operands (optional)
: list of clobbered registers
(optional)
);
本例中,汇编程序模板由汇编指令组成。输入操作数是充当指令输入操作数使用的 C 表达式。输出操作数是将对其执行汇编指令输出的 C 表达式。
内联汇编的重要性体现在它能够灵活操作,而且可以使其输出通过 C 变量显示出来。因为它具有这种能力,所以 asm 可以用作汇编指令和包含它的 C 程序之间的接口。
一个非常基本但很重要的区别在于 简单内联汇编只包括指令,而 扩展内联汇编包括操作数。要说明这一点,考虑以下示例: { int a=10, b; asm (movl %1, %%eax; movl %%eax, %0; :=r(b) /* output */ :r(a) /* input */ :%eax); /* clobbered register */}
在上例中,我们使用汇编指令使 b 的值等于 a。请注意以下几点:
b 是输出操作数,由 %0 引用,a 是输入操作数,由 %1 引用。 r 是操作数的约束,它指定将变量 a 和 b 存储在寄存器中。请注意,输出操作数约束应该带有一个约束修饰符 =,指定它是输出操作数。 要在 asm 内使用寄存器 %eax,%eax 的前面应该再加一个 %,换句话说就是 %%eax,因为 asm 使用 %0、%1 等来标识变量。任何带有一个 % 的数都看作是输入/输出操作数,而不认为是寄存器。 第三个冒号后的修饰寄存器 %eax 告诉将在 asm 中修改 GCC %eax 的值,这样 GCC 就不使用该寄存器存储任何其它的值。 movl %1, %%eax 将 a 的值移到 %eax 中, movl %%eax, %0 将 %eax 的内容移到 b 中。 因为 b 被指定成输出操作数,因此当 asm 的执行完成后,它将反映出更新的值。换句话说,对 asm 内 b 所做的更改将在 asm 外反映出来。

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
说课包括哪些方面 说课内容包括()。 如何在手机百度上删除对话记录? 结核病是什么样的疾病? 曹丕17岁得了肺痨,明知自己命不长久,还要强争王位,是不是很自私呢?_百... 古代小说常出现的病名 急求一篇"生活小窍门"(500字)的作文 至今最有什么小妙招 健康的戒烟方法 笔记本电池锁死是什么原因引起的? 问题2汇编语言这类有没有模板? 我身边的朋友都推荐飞鹤飞帆奶粉,大家觉得飞鹤飞帆奶粉怎么样? 哪位师傅知道清华同方7K lrHB显示器IC901具体型号 谢谢 (求助)海尔25T7A-T电视+B电压我咋弄都低求大神帮助 请教创维电视那出了故障 夏华TF2955 海信电源块STRG9656代换问题? 写一个作文朋友在我心中的位置怎么写? 蒋依依和王俊凯吻戏视频播放 未成年就拍吻戏的明星,有一位哭了3小时,还有一位年龄很小,他们是谁? 神雕侠侣中吴磊蒋依依吻戏是哪一集 蒋依依和吴磊拍吻戏时,她拒绝接吻吗 蒋依依和吴磊出演的神雕侠侣是杨晓版的吗?蒋依依和吴磊真的有吻戏吗??是第几集?? 神雕侠侣中吴磊和蒋依依的吻戏在哪集 吴磊蒋依依神雕侠侣吻戏是真是假 吴磊对于和蒋依依的那场吻戏有什么看法 吴磊对于和蒋依依吻戏看法,小小年纪就没了初吻。 吴磊和蒋依依的吻戏在哪一集啊 神雕侠侣里面吴磊与蒋依依吻戏是哪集 脸色暗黄怎么办。 2020济南莱芜5月7号啥时候下雨? 如何用汇编语言编写debug功能中的u反汇编模块? 高分求助,8086用汇编语言编写一个月历模版,要求定义月份每个月多少天每个月第一天是星期几给出注释急急急 济南莱芜合并后,莱芜听天气预报咋办? 汇编语言问题,急急急急!!! 汇编语言中MOVS的使用方法 用汇编语言写一个二分查找 PLC程序设计 如图,不知是否正确 汇编语言的非压缩/压缩十进制码转换程序 ASCLL码到十进制的转换 用汇编语言实现 天气预报的能力怎么那么差?没几次预报准的 汇编语言比其他程序语言代码少,对吗? 乡字是一个什么拼音节? 如何用汇编语言在屏幕上显示一个菱形 汇编语言程序神经打字游戏报告 汇编语言,代码出不了结果求解? 羽毛球号数12345的区别 “长”字偏旁的字是什么? 怎样练字才最有效??? 羽毛球显示比赛3号,5号,8号,九号,哪个好,我们是大学生社团用,表示技术不错