你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。

在C语言中嵌入汇编,并让汇编代码对齐

[复制链接]
ES2000 提问时间:2012-4-9 12:44 /
  1600KHZ.png
我尝试过在 INFI_LOOP_1600KHZ 标号的后面加上 .l 让它4字节对齐,但编译时,提示出错。
如果不对齐的话,出来的波形不正确。
收藏 评论6 发布时间:2012-4-9 12:44

举报

6个回答
ES2000 回答时间:2012-4-9 12:45:53

RE:在C语言中嵌入汇编,并让汇编代码对齐

就是让 INFI_LOOP_1600KHZ 这个标号 4 字节对齐。
swallow1029 回答时间:2012-4-9 13:53:21

RE:在C语言中嵌入汇编,并让汇编代码对齐

关注中,本人也在学习开发中。谢谢,等待高人
废鱼 回答时间:2012-4-9 15:29:06

RE:在C语言中嵌入汇编,并让汇编代码对齐

1、4字节对齐是指?
2、错误信息贴出来。
ES2000 回答时间:2012-4-9 16:27:29

RE:在C语言中嵌入汇编,并让汇编代码对齐

4字节对齐,就是让汇编代码的第一条指令
    LD   A, $500F
放在以 XXX0H、XXX4H、XXX8H、XXXCH 开始的地方。
如果不那样做,发现程序执行起来,慢了,多花了一个 clk 的时间,照成无法准确输出 1.6 MHz 的方波信号。
而如果,地址对齐,就和预想的一样。
我曾在前面加上 NOP 空指令来填补,让代码的第一条指令4字节对齐,但修改代码后,并不总是管用,似乎有时候需要 NOP,而有时候不需要。
有没有一种方法,强制的将字节的代码4字节对齐,让编译器来做填补的工作。
ES2000 回答时间:2012-4-9 16:38:06

RE:在C语言中嵌入汇编,并让汇编代码对齐

图片中的死循环用来产生 1.6 MHz 的波形。
本来 5 clks 就能执行完一次循环,如果开始地址不 4 字节对齐,就会花 6 clks 才能执行完。
是预取指令的原因,还是编译器偷偷的加了什么指令?
反正地址对齐,问题就没有了。
废鱼 回答时间:2012-4-10 17:18:21

RE:在C语言中嵌入汇编,并让汇编代码对齐

这个就需要你去看每条指令占用的字节了,比如MOV占用1个字节,而ADDC占用2个字节。

所属标签

相似问题

关于
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32Cube扩展软件包
意法半导体边缘AI套件
ST - 理想汽车豪华SUV案例
ST意法半导体智能家居案例
STM32 ARM Cortex 32位微控制器
关注我们
st-img 微信公众号
st-img 手机版