【问题标题】:Compiling Linux assembler on Windows在 Windows 上编译 Linux 汇编器
【发布时间】:2016-01-07 03:25:46
【问题描述】:
    .string "Hello\n"
    .globl main
main:
    pushl %ebp
    movl %esp, %ebp
    pushl $hello
    call puts
    movl $0, %eax
    movl %ebp, %esp
    popl %ebp
    ret

此代码适用于 32 位 Linux。如何在 Windows 上运行它?

gcc hello.s

【问题讨论】:

    标签: linux windows assembly x86


    【解决方案1】:

    您需要找到 x86 汇编程序的 Windows 版本。 GNU 汇编器可通过MinGW 项目在 Windows 上使用。这与您在 Linux 上使用的汇编程序相同。

    【讨论】:

    • 未定义对 puts 的引用,以及使用 mingw 4.8.1 x86 的 WinMain@16
    • @JKS:我忘记了,但是 Windows 名称修改可能会在 C 名称前面放置一个 _。在这种情况下,您需要call _puts。除此之外,您的代码似乎可以在 Linux 和 Windows 32 位 ABI 之间移植。 (两者都使用堆栈参数调用约定)。
    猜你喜欢
    • 1970-01-01
    • 2013-10-19
    • 1970-01-01
    • 2010-11-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-06-26
    • 1970-01-01
    相关资源
    最近更新 更多