理论上来说C语言改成汇编是完全可以的,当然实际上还是有一定难度。
1、完全手工根据C语言的流程和目的,改编成汇编语言,这样做工作量很大
2、利用仿真软件,在仿真环境下,是有相应的汇编代码的,这样做工作量相对较小,但可读性较差。
1、如果汇编程序是可执行文件,比如exe文件,则可以使用system函数直接调用。比如下面的代码,用system()打开windows上的记事本程序。
#include <stdio.h>#include <stdlib.h>
int main()
{
system("notepad.exe")
return 0
}
2、在C语言源码中,可以通过内联汇编来直接编写汇编程序代码。不同的编译器使用内联汇编的方法不同,vc/vs编译器中一般使用__asm关键字来使用内联汇编,gcc编译器一般使用asm关键字来使用内联汇编,以vc6.0为例,下面的代码通过使用内联汇编来计算1+1,并将结果保存到int型变量result中。
#include <stdio.h>int main()
{
int result
_asm {
mov eax,1
mov ebx,1
add eax,ebx
mov result, eax
}
printf("1+1=%d\n", result)
return 0
}
如果你用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 是大写,区分大小写)