本文目錄一覽:
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參數就可以輸出彙編代碼
滿意請採納。
原創文章,作者:小藍,如若轉載,請註明出處:https://www.506064.com/zh-tw/n/304094.html