单片机中,怎样把C语言转化为汇编语言?

Python021

单片机中,怎样把C语言转化为汇编语言?,第1张

单片机是没这个能力将C语言转换为汇编语言的,它只知道执行1或0。汇编语言和C语言都是我们用来跟单片机沟通的语言

只有用软件来编译为单片机可执行的1,0文件

单片机才能运行。

所以要c语言编译为汇编语言是我们所用到的编译器做的事情,比如说

keil

iar

gcc

等的编译器他们都支持C语言编译为汇编语言

并可生成单片机可执行文件。不同的单片机所用的编译器或许不同

把C语言代码转换为MIPS:

以下是c语言代码:

while (candidate_gcd <= min)

{

if (((a mod candidate_gcd) == 0) &&((b mod candidate_gcd) ==

0))

{

current_gcd = candidate_gcd

}

candidate_gcd = candidate_gcd + 1

}

以下为转换为mips后的代码:

首先设置变量:

candidate_gcd = $t0

min = $t1

a mod candidate_gcd = $t2

b mod candidate_gcd = $t3

current_gcd = $t4

$t6 = 0

$t5

代码如下:(绿色为注释)

Label3: //设置标签Label3

ble $t0,$t1,Label //当$t0 小于等于$t1 时,跳到标签Label

Label: //设置标签Label

Add $t5,$t2,$t3 //将$t2 和$t3 相加赋值给$t5

Li $t6,0 //给$t6 赋值为0

Leq $t5, $t6,Label1 //判断如果$t6=$t5=0,跳到标签Label1

Label1: //设置标签Label1

Move $t4, $t0 //$t4=$t0

Addi $t0, $t0,1 //$t0=$t0+1(自加加)

J Label3 //跳到标签Label3,这里其实就是实现c 语言

中的while 无限循环

如果你用TC 那么就是tcc -S -I(你的include文件夹) -L(你的lib文件夹) (你的文件)

例如,include在C:\tc\include lib在C:\tc\lib 要编译文件hello.c

tcc -S -IC:\tc\include -LC:\tc\lib hello.c会在当前目录下生成一个hello.asm文件直接打开即可

(注意!!!-S -I -L 全都是大写,区分大小写)

如果你用gcc 那么就是gcc -S (你的文件)

例如hello.c gcc -S hello.c

会在当前目录下生成一个hello.S文件,直接用记事本打开不好看,最好用word打开(windows下的gcc,如果是linux直接vi hello.S 或 cat hello.S 或 less hello.S即可)

(注意!!!-S 是大写,区分大小写)