在C语言中嵌入汇编,并让汇编代码对齐
我尝试过在 INFI_LOOP_1600KHZ 标号的后面加上 .l 让它4字节对齐,但编译时,提示出错。
如果不对齐的话,出来的波形不正确。
RE:在C语言中嵌入汇编,并让汇编代码对齐
就是让 INFI_LOOP_1600KHZ 这个标号 4 字节对齐。RE:在C语言中嵌入汇编,并让汇编代码对齐
关注中,本人也在学习开发中。谢谢,等待高人RE:在C语言中嵌入汇编,并让汇编代码对齐
1、4字节对齐是指?2、错误信息贴出来。
RE:在C语言中嵌入汇编,并让汇编代码对齐
4字节对齐,就是让汇编代码的第一条指令LD A, $500F
放在以 XXX0H、XXX4H、XXX8H、XXXCH 开始的地方。
如果不那样做,发现程序执行起来,慢了,多花了一个 clk 的时间,照成无法准确输出 1.6 MHz 的方波信号。
而如果,地址对齐,就和预想的一样。
我曾在前面加上 NOP 空指令来填补,让代码的第一条指令4字节对齐,但修改代码后,并不总是管用,似乎有时候需要 NOP,而有时候不需要。
有没有一种方法,强制的将字节的代码4字节对齐,让编译器来做填补的工作。
RE:在C语言中嵌入汇编,并让汇编代码对齐
图片中的死循环用来产生 1.6 MHz 的波形。本来 5 clks 就能执行完一次循环,如果开始地址不 4 字节对齐,就会花 6 clks 才能执行完。
是预取指令的原因,还是编译器偷偷的加了什么指令?
反正地址对齐,问题就没有了。
RE:在C语言中嵌入汇编,并让汇编代码对齐
这个就需要你去看每条指令占用的字节了,比如MOV占用1个字节,而ADDC占用2个字节。
页:
[1]