gpt4 book ai didi

c - 如何在 MASM 格式的汇编文件中强制使用 GNU 汇编指令,反之亦然

转载 作者:太空宇宙 更新时间:2023-11-04 00:05:49 25 4
gpt4 key购买 nike

我有一个 MASM 格式的汇编文件,它是 C 库的一部分。我想让这个文件也在 *nix 上进行汇编,我们假设它会安装 gcc,因此使用 GNU 汇编程序。

我遇到的问题是汇编指令;我想知道是否有办法让两个汇编程序都理解相同的指令,或者至少从某些选项中进行选择。这里有一些希望:

http://gcc.gnu.org/onlinedocs/gcc/Extended-Asm.html

...但是当我意识到它是用于内联 ASM 时,它就破灭了。

在查看 Agner Fog 的手册时,提到了他的“objconv”工具,我可以用它来获取我的目标文件,然后将其反汇编成我想要的形式。这显然没有我想象的那么干净。

我很感激任何建议。谢谢,-mw

在 MASM 中工作的示例,但我需要 GNUC 部分在通过“as”传递时包含“reg1 = rdi”等:

IFDEF _MSC_VER
reg1 textequ <rcx>
reg2 textequ <rdx>
reg3 textequ <r8>
ELSEIFDEF __GNUC__
reg1 textequ <rdi>
reg2 textequ <rsi>
reg3 textequ <rdx>
ELSE
;error
ENDIF

最佳答案

上述 David Wohlferd 的解决方案有效。我只是在解决我的问题的上下文中构建它。

要使 Visual Studio 预处理此文件,该文件包含 C 预处理器指令和 Intel 语法中的有效程序集(使用开关转换为 AT&T 语法),请创建一个预生成事件。将“cl/EP topsecret.preasm > topsecret.asm”放入项目的那个事件中。

然后,为每个文件(您应该将其包含在您的项目源代码中)创建一个自定义构建事件(右键单击文件,转到属性,将其设为“自定义构建工具”类型的项目)。然后使命令行包含所需的汇编程序命令行。例如,

"ml64.exe/c -D "MS_COMPILER"/Fo"topsecret.obj""Path\to\topsecret.asm"

关于c - 如何在 MASM 格式的汇编文件中强制使用 GNU 汇编指令,反之亦然,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24644245/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com