搜索
bottom↓
回复: 29

51单片机这里是不是编译BUG?

[复制链接]

出0入475汤圆

发表于 2023-4-22 12:33:46 来自手机 | 显示全部楼层
我认为肯定没有问题的,即使有,也是你哪里写法可能有些不严谨。
因为我是经常做移位啊等等位操作的运算太多了,几乎自己所做的所谓c语言代码,可以说都是这一类的操作,同样的代码在51/arm上面都是正常的。
你的那个代码看的不全,你可以多放点前后的语句来看看
左移2位是x4运算,怎可会是3倍啊?没搞懂你说的呢,

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入475汤圆

发表于 2023-4-22 12:36:00 来自手机 | 显示全部楼层
最简单的就是你单独验证。
用几个简单的变量来验证下就行了,不要搅在你的应用中和其它信息混合来看

出0入475汤圆

发表于 2023-4-22 14:01:50 来自手机 | 显示全部楼层
laujc 发表于 2023-4-22 13:30
只看tmp4赋值这一句,E0应该放的是BUF[2],对于左移2位,他直接连续加了2次E0地址的值。有点搞不懂。
k ...

(引用自7楼)

你不能这样单独看某一行的汇编,那个显示的对应关系不一定准确,而且这里又是间接寻址了,看起来不直观,你后面又有关联的运算,完全有可能编译器自己结合上下文关系处理了的,而不是按照你的思路一条条的来,这个很正常
如果你能看懂汇编那直接上下文看完就行了,自己计算一下结果对不对
否则的话就麻烦,所以我就叫你单独验证一下不就清楚了。或者在你那个上面你自己模拟仿真运行看下结果是不是你要的就好了,

出0入475汤圆

发表于 2023-4-22 14:36:44 来自手机 | 显示全部楼层
矩阵时间 发表于 2023-4-22 14:04
25E0 的汇编代码。
25 指令是:ADD A, direct。
这里头的 direct 就是 ACC(E0 地址)。

(引用自9楼)

看了你的我才仔细回去看了楼主的汇编句子,的确没有任何问题,我也不知道楼主为啥说哪里不对了
汇编里面是连着两次累加器A自己加自己,那么就是X4了,就是左移2次。开始没有注意到地址值0xE0(就是A自己)
所以为啥楼主觉得不对,一直在问你自己验证过了吗?

出0入475汤圆

发表于 2023-4-22 15:12:43 来自手机 | 显示全部楼层
wye11083 发表于 2023-4-22 14:50
根据51指令手册,那两个add是加2次,不是加4次。因此r7应该是存放*2的值,否则解释不通加2次=*4。 ...
(引用自12楼)

这个你不用纠结了,肯定是对的。
我都这么多年了,这点还是熟悉了,只是好久没看汇编忘记了地址和寄存器之间的关系了,上面的提醒了我一下就明白过来了

出0入475汤圆

发表于 2023-4-22 15:22:20 | 显示全部楼层
你看我这个嘛,一样的:2次A和Acc自己加就是x4,太明显不过了。而且就是地址E0,现在记起来了A就是E0
所以楼主的是没有问题的,只是他没看懂,觉得不对。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入475汤圆

发表于 2023-4-22 15:26:37 | 显示全部楼层
wye11083 发表于 2023-4-22 14:49
你说的这个是不正确的。

51汇编手册,0x25 指ADD A,direct
(引用自11楼)

这里的direct就是A自己啊,没毛病
A加自己以后再返回到A不就是翻番嘛,连续2次翻番不就是x4啊。
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-15 14:41

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表