ES2000 发表于 2012-4-9 12:44:50

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

 
我尝试过在 INFI_LOOP_1600KHZ 标号的后面加上 .l 让它4字节对齐,但编译时,提示出错。
如果不对齐的话,出来的波形不正确。

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个字节。
页: [1]
查看完整版本: 在C语言中嵌入汇编,并让汇编代码对齐