是否可以在汇编程序中使用#ifdef一样的检查?

问题描述

| 我已经使用AT&T语法在Linux上测试了一些汇编程序。让我震惊的是,我正在阅读的书是从32位的角度编写的。因此,对于我来说,所有大小都必须更改为正确的64位版本。或者,我可以(在此过程中)在链接时使用--32标志(对于as)和-melf_i386标志(对于ld)来汇编代码。我还修改了一些代码,并在Cygwin下的Windows上运行。 但这让我思考。如果我在Windows上,而在Linux下,又可以处理32位和64位,是否有一种方法可以执行ifdef,例如在汇编器中执行检查操作?例如,在Linux下具有.globl _start,在Windows下具有.globl _main。 还是通过在组装之前进行检查并根据检查的结果来组装不同的源文件来处理? 即foo_linux.s和foo_windows.s 如果是这样,您如何克服这个事实,即在创建程序时将不知道将要使用哪个.s文件,因此必须包括这些文件。 例如,假设我们有一个socket_linux.s和一个socket_windows.s。它们都提供相同的接口,但是执行与套接字相关的特定于操作系统的工作。但是,当我在程序中使用套接字时,我将不知道是否需要Windows或Linux版本。所以我有点被搞砸了:) 那么如何在Assembler中处理呢?例如,在C ++中,我可以包含我的socket.h和socket.cpp并将所有特定于Linux和Windows的代码包装在#ifdef语句中。     

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)