1
A
回答
2
「不起作用」是什麼意思?您需要做的不僅僅是使用extern
,您需要鏈接到C庫。最簡單的方法是使用gcc
進行鏈接。正如你沒有提到你的代碼是32位還是64位,我將使用32位。該過程對於64位基本相同。
extern exit, printf, malloc, free
global main
BUFFER_SIZE equ 27
section .data
fmtstr db "%s", 10, 0
section .text
main:
push BUFFER_SIZE
call malloc
add esp, 4 * 1
mov esi, eax
xor ecx, ecx
mov edx, 97
.FillBuffer:
mov byte [esi + ecx], dl
inc edx
inc ecx
cmp ecx, BUFFER_SIZE - 1
jne .FillBuffer
mov byte [esi + ecx], 0
push esi
push fmtstr
call printf
add esp, 4 * 2
push esi
call free
add esp, 4 * 1
push 0
call exit
add esp, 4 * 1
和生成文件:
APP=malloctest
all: $(APP) clean
$(APP): $(APP).o
gcc -o $(APP) $(APP).o
$(APP).o: $(APP).asm
nasm -f elf $(APP).asm
clean:
rm $(APP).o
+0
非常感謝您的回覆!但是,我使用以下(x64機器x86代碼)編譯.asm文件:'nasm -f elf32 -o exec file.asm'和'ld -m elf_i386'。這就是我所說的「沒有工作」的意思:http://gyazo.com/c11f7d980d623ee163eb188a8c763cc0 – Goodies
+0
'-lc'到ld。可能還需要'-I/lib/ld-linux.so.2'或者你的系統放在任何地方。 –
相關問題
- 1. free from malloc
- 2. 克++ - 4.8 C++ STDLIB dylib
- 3. float * from C to C#
- 4. c-malloc typedef'd pointer
- 5. stdlib cdefs.h中的C++錯誤?
- 6. 的malloc在C++
- 7. 301 from mobile = N in htaccess
- 8. ASM to C translator
- 9. malloc結構C
- 10. GCC stdlib XCode 4.5
- 11. malloc()函數C
- 12. c malloc問題
- 13. 包裝malloc - C
- 14. malloc C++ VS 2013
- 15. malloc vs mmap C
- 16. SIGSEGV與malloc()在C
- 17. C++:ASM撞列表
- 18. C++內聯ASM環
- 19. 從C++調用asm
- 20. C++和asm錯誤
- 21. ASM,與ASM
- 22. c malloc導致崩潰
- 23. c中的Malloc函數
- 24. C stdlib/stdio的陰影功能
- 25. 「stdio」和「stdlib」在C中代表什麼?
- 26. stdlib內容不可用與C + + 11
- 27. C++ stdlib容器類層次結構
- 28. 用C和stdlib預取文件
- 29. C中的malloc()的任務
- 30. ASM使用C編譯,ASM返回C語言
什麼?我正在談論從NASM文件。你正在談論從C文件。我很清楚C內部的電話。我喜歡你爲我提供的服務,而你完全錯誤。 – Goodies