Hello world链接问题(ASM)

时间:2013-01-06 17:17:12

标签: windows assembly linker nasm

好的,今天我正在努力学习一些asm。

我正在使用nasm和go链接。这个问候世界似乎运作良好:

bits 32
extern _MessageBoxA@16
extern _ExitProcess@4

section .data
    title db 'Somme message',0 
    message db 'Hello World!',0 

section .text
global _start
_start:
    push dword 0            ; Type = MB_OK
    push dword title            ; Caption
    push dword message             ; Message
    push dword 0            ; Handle = NULL
    call _MessageBoxA@16

    push dword 0            ; Exit Code = EXIT_SUCCESS
    call _ExitProcess@4

我可以用以下内容构建它:     nasm -fwin32 test.asm     golink / entry _start / mix test.obj user32.dll,kernel32.dll

现在我的问题是:我可以使用alink而不是golink构建它吗?如果是的话,我该怎么做?

非常感谢

1 个答案:

答案 0 :(得分:0)

嗯,是的......但你可能需要稍微改变你的来源......你可能需要一个库来链接。 Alink现在有点“过时”,尽管它仍然有效。我正在运行Linux并且很长时间没有完成Windows。这些天做Windows的人似乎更喜欢GoLink。除非你有理由更喜欢Alink,否则我会坚持使用GoLink。 (一个优点是我们有Alink的源代码 - 我甚至可以在Linux上运行它!当然不能运行生成的可执行文件......)。如果你真的需要它,我或许可以挖掘一些曾经工作的过时代码......但我坚持使用GoLink。 (Pelle的PoLink也应该可以工作,也可能是MS的Link。)