当前位置:首页 > 工业控制 > 电子设计自动化
[导读]在ARM C语言程序中使用关键词 ̄asm来标识一段汇编指令程序,其格式如下。 其中,asm后面的括号中必须是一个单独的字符串,该字符串中不能包含注释语句。 在C/C++程序中使用内嵌的汇编指令应注意以下事项。 在汇编指

在ARM C语言程序中使用关键词 ̄asm来标识一段汇编指令程序,其格式如下。

其中,asm后面的括号中必须是一个单独的字符串,该字符串中不能包含注释语句。

在C/C++程序中使用内嵌的汇编指令应注意以下事项。

在汇编指令中,逗号(,)用作分隔符。因此如果指令中的C/C++表达式中包含有逗号(,),则该表达式应该被包含在括号中。例如:

其中,(f(),Z)为C/C++表达式

如果在指令中使用物理寄存器,则应该保证该寄存器不会被编译器在计算表达式值时破坏。例如,在下面的代码段中,编译器通过程序调用来计算表达式x/y的值。在这个过程中编译器破坏了寄存器R2、R3、IP、LR的值;更新了CPSR寄存器的NZCV条件标志位;并在寄存器R0中返回表达式的商,在寄存器RI中返回表达式的余数。这时程序中寄存器R0的数据就丢掉了。

这种情况下可以用C变量来代替第1条指令中的物理寄存器RO,如下所示。

这时编译器将会为变量cvar分配合适的寄存器,从而避免冲突的发生。如果编译器不能分配合适的寄存器,那么它将报告错误。例如,在下面的代码段中,由于编译器将会展开ADD指令,在展开时会用到P寄存器,从而破坏了第1条指令为IP寄存器赋的值,这时编译器将报告错误。

不要使用物理寄存器去引用一个C变量。比如,在下面的例子中,用户可能认为进入子程序example1中后,参数x的值保存在寄存器RO中,因而在内嵌的汇编指令中直接使用寄存器RO,最后返回结果。实际上,编译器认为子程序中没有作任何有意义的操作,于是将该段汇编代码优化掉了,从而返回的结果与输八的参数值相同,并没有做加1操作。

对于内嵌汇编器可能会用到的寄存器,编译器自己会保存和恢复这些寄存器,用户不用保存和恢复这些寄存器。除常量寄存器CPSR和寄存器SPSR外,其他寄存器必须先赋值后读取,否则编译器将会报错。例如,在下面的例子中,第1条指令在没有给寄存器R0赋值前读取其值,这是错误的;而最后一条指令恢复寄存器R0的值,也是没有必要的。



来源:ks990次

本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

2023年10月18日,中国在第三届“一带一路”国际合作高峰论坛期间发布《全球人工智能治理倡议》,围绕人工智能发展、安全、治理三方面系统阐述了人工智能治理中国方案。

关键字: 人工智能 大模型 代码

我们看到这么多的安全问题,部分原因在于我们对待安全的方式:安全性通常被认为是事后考虑的问题,是在开发结束时才添加到设备上的东西。然而,复杂的系统,尤其是嵌入式系统,有一个很大的攻击面,这让攻击者有机可乘,能够在“盔甲”上...

关键字: 代码 嵌入式系统 软件漏洞

广州2023年9月22日 /美通社/ -- 日前,国际独立第三方检测、检验和认证机构德国莱茵TÜV大中华区(以下简称"TÜV莱茵")顺...

关键字: 研讨会 中国汽车 汽车产业 指令

新富人群财务需求多元发展,投顾服务迎来新机遇 上海2023年9月20日 /美通社/ -- 2023年9月19日,上海交通大学上海高级金融学院(高金)与全球领先的金融服务机构嘉信理财(Charles Schwab)联合发...

关键字: BSP ADVANCED INA 代码

北京2023年9月14日 /美通社/ -- 生物医药高科技公司诺诚健华(港交所代码:09969;上交所代码:688428)今日宣布,新型蛋白酪氨酸磷酸酶SHP2变构抑制剂ICP-189联用针对表皮生长因子受体(EGFR)...

关键字: IC HP 代码 ARMA

上海2023年9月1日 /美通社/ -- 2023上半年,安集科技(股票代码:688019)市场拓展规划成效显现,营业收入稳健增长。 全球半导体产业挑战持续存在的情形下,安集科技秉承发扬"克难攻坚,敢打硬...

关键字: 安集科技 BSP 代码 半导体材料

国际酒店运营商升级其在线支付功能 上海2023年8月28日 /美通社/ -- 加拿大金融科技公司Nuvei Corporation(以下简称“Nuvei”或“公司”)(纳斯达克代码:NVEI)(多伦多证券交易所代码:N...

关键字: 代码 IP SE 纳斯达克

2023年上半年收入7.459亿元 同比增长5.1% 毛利率水平上升 海外收入同比增长65.4% 香港2023年8月22日 /美通社/ -- 金邦达宝嘉控股有限公司及其附属公司(以下合称「金邦达」、「...

关键字: 数字化 代码 嵌入式软件 COM

我们经常对正在进行数字化转型的亚马逊云科技客户建议,将云迁移视为其数字化转型的一部分,数字化转型本身必须由业务成果驱动。其中治理计划的有效性决定了云迁移和数字化转型的成功与否。数字化转型中的云迁移总有结束的时候,但是如果...

关键字: 代码 数字化 云服务

广州及苏州生产基地产品均实现"出口"零突破 北京2023年8月21日 /美通社/ -- 百济神州(纳斯达克代码:BGNE;香港联交所代码:06160;上交所代码:688235)是一家全球性生物科技公...

关键字: 神州 代码 TI PD
关闭
关闭