這是用keil自動翻譯的,自己整理一下吧。
公司主營業務:成都做網站、成都網站設計、移動網站開發等業務。幫助企業客戶真正實現互聯網宣傳,提高企業的競爭能力。創新互聯公司是一支青春激揚、勤奮敬業、活力青春激揚、勤奮敬業、活力澎湃、和諧高效的團隊。公司秉承以“開放、自由、嚴謹、自律”為核心的企業文化,感謝他們對我們的高要求,感謝他們從不同領域給我們帶來的挑戰,讓我們激情的團隊有機會用頭腦與智慧不斷的給客戶帶來驚喜。創新互聯公司推出浪卡子免費做網站回饋大家。
; FUNCTION delay05s (BEGIN)
;---- Variable 'i' assigned to Register 'R7'
0000 7F05 MOV R7,#05H
0002 ?C0001:
;---- Variable 'j' assigned to Register 'R6'
0002 7EC8 MOV R6,#0C8H
0004 ?C0004:
;---- Variable 'k' assigned to Register 'R5'
0004 7DFA MOV R5,#0FAH
0006 ?C0007:
0006 DDFE DJNZ R5,?C0007
0008 ?C0006:
0008 DEFA DJNZ R6,?C0004
000A ?C0003:
000A DFF6 DJNZ R7,?C0001
000C ?C0010:
000C 22 RET
; FUNCTION delay05s (END)
; FUNCTION main (BEGIN)
0000 ?C0011:
;---- Variable 'j' assigned to Register 'R4'
0000 7C01 MOV R4,#01H
;---- Variable 'i' assigned to Register 'R3'
0002 E4 CLR A
0003 FB MOV R3,A
0004 ?C0013:
0004 EC MOV A,R4
0005 F4 CPL A
0006 F590 MOV P1,A
0008 120000 R LCALL delay05s
000B EC MOV A,R4
000C 25E0 ADD A,ACC
000E FC MOV R4,A
000F 0B INC R3
0010 BB08F1 CJNE R3,#08H,?C0013
0013 ?C0014:
0013 7C80 MOV R4,#080H
0015 E4 CLR A
0016 FB MOV R3,A
0017 ?C0016:
0017 EB MOV A,R3
0018 C3 CLR C
0019 9408 SUBB A,#08H
001B 50E3 JNC ?C0011
001D EC MOV A,R4
001E F4 CPL A
001F F590 MOV P1,A
0021 120000 R LCALL delay05s
0024 EC MOV A,R4
0025 C3 CLR C
0026 13 RRC A
0027 FC MOV R4,A
0028 0B INC R3
0029 80EC SJMP ?C0016
; FUNCTION main (END)
如果是VC則在編譯器命令行參數再加 /FA 則會生成匯編代碼。如果參數是 /FAs 則會同時將源碼和匯編代碼。
/FA 程序集代碼;.asm
/FAc 機器碼和程序集代碼;.cod
/FAs 源代碼和程序集代碼;.asm
/FAcs 機器碼、源代碼和程序集碼;.cod
/Fa的用法
/Fa 為編譯中的每個源代碼文件創建一個源文件.asm。
/Fa文件名 將文件名.asm 放到當前目錄中。僅在編譯單個源代碼文件時有效。
/Fa文件名.擴展名 將文件名.擴展名放到當前目錄中。僅在編譯單個源代碼文件時有效。
/Fa目錄\ 為編譯中的每個源代碼文件創建一個源文件.asm,并將其放到指定目錄中。請注意必須有后綴反斜杠。只允許使用當前磁盤上的路徑。
/Fa目錄\文件名 將文件名.asm 放到指定目錄中。僅在編譯單個源代碼文件時有效。
/Fa目錄\文件名.擴展名 將文件名.擴展名放到指定目錄中。僅在編譯單個源代碼文件時有效。
如果你是用gcc 或 g++編譯器,如dev c++則加入命令行參數 -S 即可
方法很多
比如 你看懂C語言 然后用匯編重新實現
或者用編譯器自帶的命令,比如gcc,可以gcc a.c -o a.S -S 就可以生成匯編
也可以先生成bin,然后反編譯。
你在kile
軟件
里面的仿真中。有一個(disassembly
window)圖標點擊一下,可以把c
翻譯
成
匯編
,disassembly
window是一個
反匯編
的窗口
.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語言函數翻譯成匯編指令 c語言函數翻譯成匯編指令是什么
鏈接地址:http://m.kartarina.com/article8/hgecop.html
成都網站建設公司_創新互聯,為您提供品牌網站設計、動態網站、微信公眾號、App開發、ChatGPT、App設計
聲明:本網站發布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:631063699@qq.com。內容未經允許不得轉載,或轉載時需注明來源: 創新互聯