我已经了解到编译器会将对象代码作为输出或汇编语言程序生成。
那么我可以看到汇编语言程序作为高级语言程序的输出而产生吗?
答案 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
;---------------------------------------