我能看到汇编语言程序产生了高级语言程序的输出吗?

时间:2015-03-29 07:30:19

标签: assembly

我已经了解到编译器会将对象代码作为输出或汇编语言程序生成。

那么我可以看到汇编语言程序作为高级语言程序的输出而产生吗?

3 个答案:

答案 0 :(得分:1)

由于您没有说明您正在使用哪种语言,因此我假设它是原生语言(即转换为汇编的语言,如C不是字节码,如java) 。
在这种情况下,您可以使用objdump -D生成程序集输出:

objdump -D [yourfile]

答案 1 :(得分:0)

我写了一篇关于此的教程,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    $0, %eax                         
call    printf 

请注意,这种方式是特定于gcc的。获取汇编程序代码的另一种方法当然是构建可执行程序,然后使用objdump -d对其进行反汇编。这适用于任何编译器。

答案 2 :(得分:-3)

Datei:Q4_ASEM.BAS 展位号:05.06.88 Microsoft Quick Basic 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

Datei:BASIC.ASM 展位号:05.06.88 Microsoft Macro Assembler 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
;---------------------------------------