你的浏览器版本过低,可能导致网站不能正常访问!
为了你能正常使用网站功能,请使用这些浏览器。
chrome
firefox
safari
ie8及以上
ST
意法半导体官网
STM32
中文官网
ST
全球论坛
登录/注册
首页
技术问答
话题
资源
创客秀
视频
标签
每日签到
STM32团队2
论坛吐槽优化专区
升级测试
ST意法半导体中文论坛
»
论坛
›
【技术区】
›
STM8
›
在C语言中嵌入汇编,并让汇编代码对齐
返回列表
查看:
6114
|
回复:
6
在C语言中嵌入汇编,并让汇编代码对齐
[复制链接]
ES2000
ES2000
当前离线
在线时间
0 小时
UID
334262
ST金币
0
蝴蝶豆
0
注册时间
2011-12-15
1
主题
6
回帖
0
蝴蝶豆
新手上路
新手上路, 积分 37, 距离下一级还需 13 积分
最后登录
1970-1-1
收听TA
发消息
发表于 2012-4-9 12:44:50
|
显示全部楼层
|
阅读模式
a0a.1 0b0c
我尝试过在 INFI_LOOP_1600KHZ 标号的后面加上 .l 让它4字节对齐,但编译时,提示出错。
如果不对齐的话,出来的波形不正确。
<
回复
使用道具
举报
ES2000
ES2000
当前离线
在线时间
0 小时
UID
334262
ST金币
0
蝴蝶豆
0
注册时间
2011-12-15
1
主题
6
回帖
0
蝴蝶豆
新手上路
新手上路, 积分 37, 距离下一级还需 13 积分
最后登录
1970-1-1
收听TA
发消息
楼主
|
发表于 2012-4-9 12:45:53
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
就是让 INFI_LOOP_1600KHZ 这个标号 4 字节对齐。
回复
支持
反对
使用道具
举报
swallow1029
swallow1029
当前离线
在线时间
0 小时
UID
343189
ST金币
0
蝴蝶豆
0
注册时间
2012-2-21
42
主题
101
回帖
0
蝴蝶豆
高级会员
高级会员, 积分 917, 距离下一级还需 83 积分
最后登录
1970-1-1
收听TA
发消息
发表于 2012-4-9 13:53:21
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
关注中,本人也在学习开发中。谢谢,等待高人
回复
支持
反对
使用道具
举报
安
安
当前离线
在线时间
1469 小时
UID
123826
ST金币
0
蝴蝶豆
239
注册时间
2009-4-22
134
主题
4489
回帖
239
蝴蝶豆
版主
最后登录
2020-12-9
收听TA
发消息
发表于 2012-4-9 15:29:06
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
1、4字节对齐是指?
2、错误信息贴出来。
回复
支持
反对
使用道具
举报
ES2000
ES2000
当前离线
在线时间
0 小时
UID
334262
ST金币
0
蝴蝶豆
0
注册时间
2011-12-15
1
主题
6
回帖
0
蝴蝶豆
新手上路
新手上路, 积分 37, 距离下一级还需 13 积分
最后登录
1970-1-1
收听TA
发消息
楼主
|
发表于 2012-4-9 16:27:29
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
4字节对齐,就是让汇编代码的第一条指令
LD A, $500F
放在以 XXX0H、XXX4H、XXX8H、XXXCH 开始的地方。
如果不那样做,发现程序执行起来,慢了,多花了一个 clk 的时间,照成无法准确输出 1.6 MHz 的方波信号。
而如果,地址对齐,就和预想的一样。
我曾在前面加上 NOP 空指令来填补,让代码的第一条指令4字节对齐,但修改代码后,并不总是管用,似乎有时候需要 NOP,而有时候不需要。
有没有一种方法,强制的将字节的代码4字节对齐,让编译器来做填补的工作。
回复
支持
反对
使用道具
举报
ES2000
ES2000
当前离线
在线时间
0 小时
UID
334262
ST金币
0
蝴蝶豆
0
注册时间
2011-12-15
1
主题
6
回帖
0
蝴蝶豆
新手上路
新手上路, 积分 37, 距离下一级还需 13 积分
最后登录
1970-1-1
收听TA
发消息
楼主
|
发表于 2012-4-9 16:38:06
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
图片中的死循环用来产生 1.6 MHz 的波形。
本来 5 clks 就能执行完一次循环,如果开始地址不 4 字节对齐,就会花 6 clks 才能执行完。
是预取指令的原因,还是编译器偷偷的加了什么指令?
反正地址对齐,问题就没有了。
回复
支持
反对
使用道具
举报
安
安
当前离线
在线时间
1469 小时
UID
123826
ST金币
0
蝴蝶豆
239
注册时间
2009-4-22
134
主题
4489
回帖
239
蝴蝶豆
版主
最后登录
2020-12-9
收听TA
发消息
发表于 2012-4-10 17:18:21
|
显示全部楼层
a0a.1 0b0c
RE:在C语言中嵌入汇编,并让汇编代码对齐
这个就需要你去看每条指令占用的字节了,比如MOV占用1个字节,而ADDC占用2个字节。
回复
支持
反对
使用道具
举报
返回列表
浏览过的版块
STM32
关于
意法半导体
我们是谁
投资者关系
意法半导体可持续发展举措
创新与技术
意法半导体官网
联系我们
联系ST分支机构
寻找销售人员和分销渠道
社区
媒体中心
活动与培训
隐私策略
隐私策略
Cookies管理
行使您的权利
官方最新发布
STM32N6 AI生态系统
STM32MCU,MPU高性能GUI
ST ACEPACK电源模块
意法半导体生物传感器
STM32Cube扩展软件包
关注我们
微信公众号
手机版
快速回复
返回顶部
返回列表