我可以看到汇编语言程序产生了高级语言程序的输出吗?
can i see assembly language program produced an an output of high level language program?
我了解到编译器生成目标代码作为输出或汇编语言程序。
那么我可以看到作为高级语言程序的输出产生的汇编语言程序吗?
因为你没有说明你使用的是哪种语言,我假设它是一种本地语言(即一种翻译成汇编的语言,比如 C 而不是字节码,比如 java)。
在这种情况下,您可以使用 objdump -D 生成程序集输出:
objdump -D [yourfile]
达泰:Q4_ASEM.BAS
展位:05.06.88
微软快速基础 4.0
DEFINT A-Z
DECLARE FUNCTION Addieren (A AS INTEGER, B AS INTEGER)
' Assembler-Funktion --^
PRINT " QuickBASIC ruft Assembler"
INPUT " A = "; A
INPUT " B = "; B
Ergebnis = Addieren(A, B)
PRINT "Ergebnis ="; Ergebnis
'------------------------------
' Objektdatei mit BC erstellen
' C>bc a:q4_asem
达泰:BASIC.ASM
展位:05.06.88
微软宏汇编器 5.0
.MODEL medium
.CODE
PUBLIC Addieren
Addieren PROC
push bp
mov bp,sp
mov bx,[bp+8]
mov ax,[bx]
mov bx,[bp+6]
mov cx,[bx]
shl ax,1
shl ax,1
add ax,cx
pop bp
ret 4
Addieren ENDP
END
;---------------------------------------
; C>masm basic
; C>link
; Object Modules [.OBJ]: q4_asem+basic
;---------------------------------------
我写了一个教程,http://www.staerk.de/thorsten/Assembler_Tutorial#translate_C_to_assembler
有一个 C 程序
#include <stdio.h>
int main()
{
int i=0x23;
printf("hello world");
}
并使用命令
在Linux下翻译它
gcc -o hello.asm -S assembler_file.S
汇编代码如下:
movl $.LC0, %edi
movl [=12=], %eax
call printf
请注意,这种方式是特定于 gcc 的。另一种获取汇编代码的方法当然是构建可执行程序,然后用objdump -d反汇编。这适用于任何编译器。
我了解到编译器生成目标代码作为输出或汇编语言程序。
那么我可以看到作为高级语言程序的输出产生的汇编语言程序吗?
因为你没有说明你使用的是哪种语言,我假设它是一种本地语言(即一种翻译成汇编的语言,比如 C 而不是字节码,比如 java)。
在这种情况下,您可以使用 objdump -D 生成程序集输出:
objdump -D [yourfile]
达泰:Q4_ASEM.BAS 展位:05.06.88 微软快速基础 4.0
DEFINT A-Z
DECLARE FUNCTION Addieren (A AS INTEGER, B AS INTEGER)
' Assembler-Funktion --^
PRINT " QuickBASIC ruft Assembler"
INPUT " A = "; A
INPUT " B = "; B
Ergebnis = Addieren(A, B)
PRINT "Ergebnis ="; Ergebnis
'------------------------------
' Objektdatei mit BC erstellen
' C>bc a:q4_asem
达泰:BASIC.ASM 展位:05.06.88 微软宏汇编器 5.0
.MODEL medium
.CODE
PUBLIC Addieren
Addieren PROC
push bp
mov bp,sp
mov bx,[bp+8]
mov ax,[bx]
mov bx,[bp+6]
mov cx,[bx]
shl ax,1
shl ax,1
add ax,cx
pop bp
ret 4
Addieren ENDP
END
;---------------------------------------
; C>masm basic
; C>link
; Object Modules [.OBJ]: q4_asem+basic
;---------------------------------------
我写了一个教程,http://www.staerk.de/thorsten/Assembler_Tutorial#translate_C_to_assembler 有一个 C 程序
#include <stdio.h>
int main()
{
int i=0x23;
printf("hello world");
}
并使用命令
在Linux下翻译它gcc -o hello.asm -S assembler_file.S
汇编代码如下:
movl $.LC0, %edi
movl [=12=], %eax
call printf
请注意,这种方式是特定于 gcc 的。另一种获取汇编代码的方法当然是构建可执行程序,然后用objdump -d反汇编。这适用于任何编译器。