Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/c/62.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在ATmega8中将C代码转换为汇编代码_C_Assembly_Avr_Atmega_Atmega16 - Fatal编程技术网

在ATmega8中将C代码转换为汇编代码

在ATmega8中将C代码转换为汇编代码,c,assembly,avr,atmega,atmega16,C,Assembly,Avr,Atmega,Atmega16,我想用winAVR作为编译器,在ATmega8中制作一个关于精确延迟库的代码,你有没有办法将下面的代码转换成汇编代码?我不知道如何转换代码,因为我不懂汇编 这是代码 static __inline__ void __variable_delay_cycles(unsigned long __count) { if (__count>65535) { __count=(__count-13)/6; DelayCyclesUL(__count);

我想用winAVR作为编译器,在ATmega8中制作一个关于精确延迟库的代码,你有没有办法将下面的代码转换成汇编代码?我不知道如何转换代码,因为我不懂汇编

这是代码

static __inline__ void __variable_delay_cycles(unsigned long __count)
{
    if (__count>65535)
    {
        __count=(__count-13)/6;
        DelayCyclesUL(__count);
    }
    else
    {
        if (!__count)
            return;
        if (__count<10)
            __count=1;
        else 
            __count=(__count-6)/4;
        DelayCyclesUI(__count);
    }
}
DelayCyclesUI和DelayCyclesUL是用汇编代码编写的。
谢谢。

将代码编译成可执行文件,并在avr studio中进行调试。切换到assembly视图,您将能够将编译后的代码从其中一个复制并粘贴到您自己的asm文件中。
根据延迟时间的长短,最好考虑使用一个硬件计时器。

编译器已经将代码转换为机器级指令。它也将以汇编形式输出生成的代码


然而,ATmega8有三个硬件定时器,它们可以产生周期精确计时,而不受代码和编译器翻译中的任何变化的影响,并具有不同的选项。您应该使用硬件计时器而不是指令循环来实现延迟。

您是否尝试过将其编译为atmega8的汇编?编译器通常会将高级代码转换为汇编。atmega8平台需要C编译器。StackOverflow不是教程或分步指南的地方。按照前面的建议使用C编译器,或者下载目标CPU的可用文档,然后自己开始翻译。如果翻译的某个特定部分不清楚,那么你可以问一个问题,准确描述你在做什么以及问题是什么。据我所知,将其转换为汇编并不能达到目的:即使有人这样做,OP也不会理解答案,他自己承认,你想达到什么目的?