本文目录一览:
c语言是先翻译为汇编语言吗
通常所说的C语言编译过程是这样的:
先是预编译处理(带#符号的语句都在这个阶段完成处理,包括文件包含、宏定义展开、条件预编译、语法检错等等)-
再是编译阶段。就是将C语言按照合适的语句翻译成汇编语言。-
再就是汇编编译。
就是将上一步的汇编语言翻译成机器码,每个.c文件都得到相应的.obj(目标文件)-
接下来就是连接阶段啦。就是将整个工程的.obj文件以及库函数连接成最终的一个.bin(或者是.hex之类的)可执行文件。
放到合适的环境中,就可以执行这个文件啦。
求将下面C语言翻译成汇编语言
.section__TEXT,__text,regular,pure_instructions
.globl_main
.align4, 0x90
_main:
Leh_func_begin1:
pushq%rbp
Ltmp0:
movq%rsp, %rbp
Ltmp1:
subq$32, %rsp
Ltmp2:
movl$1, -12(%rbp)
movl$10, -16(%rbp)
movl$0, -20(%rbp)
movl$1, -12(%rbp)
jmpLBB1_2
LBB1_1:
movl-12(%rbp), %eax
movl-12(%rbp), %ecx
imull%ecx, %eax
movl-20(%rbp), %ecx
addl%ecx, %eax
movl%eax, -20(%rbp)
movl-12(%rbp), %eax
addl$1, %eax
movl%eax, -12(%rbp)
LBB1_2:
movl-12(%rbp), %eax
movl-16(%rbp), %ecx
cmpl%ecx, %eax
jleLBB1_1
movl-20(%rbp), %eax
xorb%cl, %cl
leaqL_.str(%rip), %rdx
movq%rdx, %rdi
movl%eax, %esi
movb%cl, %al
callq_printf
movl$0, -8(%rbp)
movl-8(%rbp), %eax
movl%eax, -4(%rbp)
movl-4(%rbp), %eax
addq$32, %rsp
popq%rbp
ret
Leh_func_end1:
.section__TEXT,__cstring,cstring_literals
L_.str:
.asciz "sum=%d\n"
.section__TEXT,__eh_frame,coalesced,no_toc+strip_static_syms+live_support
EH_frame0:
Lsection_eh_frame:
Leh_frame_common:
Lset0 = Leh_frame_common_end-Leh_frame_common_begin
.longLset0
Leh_frame_common_begin:
.long0
.byte1
.asciz "zR"
.byte1
.byte120
.byte16
.byte1
.byte16
.byte12
.byte7
.byte8
.byte144
.byte1
.align3
Leh_frame_common_end:
.globl_main.eh
_main.eh:
Lset1 = Leh_frame_end1-Leh_frame_begin1
.longLset1
Leh_frame_begin1:
Lset2 = Leh_frame_begin1-Leh_frame_common
.longLset2
Ltmp3:
.quadLeh_func_begin1-Ltmp3
Lset3 = Leh_func_end1-Leh_func_begin1
.quadLset3
.byte0
.byte4
Lset4 = Ltmp0-Leh_func_begin1
.longLset4
.byte14
.byte16
.byte134
.byte2
.byte4
Lset5 = Ltmp1-Ltmp0
.longLset5
.byte13
.byte6
.align3
Leh_frame_end1:
.subsections_via_symbols
把C语言翻译成汇编
mov ax,b
mov bx,10
mul ax,bx
mov cx,a
add ax,cx
mov c,ax
如何将 C 语言翻译成汇编语言
方法很多
比如 你看懂C语言 然后用汇编重新实现
或者用编译器自带的命令,比如gcc,可以gcc a.c -o a.S -S 就可以生成汇编
也可以先生成bin,然后反编译。
汇编翻译成C语言
每个C语言编译器都可以把C代码翻译成汇编代码
你查一下相关编译器的手册就知道了 不同的编译器所使用的参数也会不一样
例如GCC的编译器 用-O参数就可以输出汇编代码
满意请采纳。