【问题标题】:Develop in Assembly on OpenVMS?在 OpenVMS 上进行汇编开发?
【发布时间】:2012-12-12 15:34:13
【问题描述】:

有人可以解释我如何在 OpenVMS 上进行汇编开发,我已经在 OpenVMS 上使用 C 语言进行开发,而且我刚刚开始在 Windows 和 Linux 中进行汇编。如何编译、链接和运行 .asm 程序?

【问题讨论】:

  • 哪个平台?如果是 VAX,请阅读 help macro
  • VAX MACRO 是一种相当愉快的编程方式,尤其是与“便携式汇编程序”(又名 C)相比。完成工作的可爱指令集。 Alpha 指令非常 RISC,编译器可能会很好地优化代码。不知道 Itanic。
  • 您可以在 Integrity 上编译 MACRO。但我发现就性能而言,DECC 在 AXP 或 Itanium 上很难被击败。不知道 VAX。

标签: assembly compilation linker vms openvms


【解决方案1】:

只需使用 HELP 和 RTFM(阅读精美手册)

建议的 Google 字符串 = site:hp.com openvms 宏

以下是我刚刚输入的一个简单示例。 创建;编译;关联;运行。

这是在安腾上。 对于这样的琐碎程序,Alpha 和 Vax 将完全相同

最难的部分是在这里粘贴代码示例... { } 代码块正在吃我的换行符,如果该行没有以 4+ 个空格开头。 奇怪的! '试图帮助'POS!

首先,创建一个文件:

$CREATE test.mar

然后我们把这段文字放到那个文件中:

     .psect  data    wrt,noexe
hello:
     .ascid  "Hello World"

     .psect  code    nowrt,exe

     .entry  start, 0
     movl    #5, R8
10$:
     pushaq  hello
     calls   #1, G^lib$put_output
     sobgtr  R8, 10$
     ret
     .end start

完成后,点击 control-z 以返回 DCL 并编译并运行:

$ MACRO test
$ LINK test
$ RUN test 
Hello World
Hello World
Hello World
Hello World
Hello World
$

【讨论】:

  • 不需要是 .MAR,但如果您提供不带扩展名的文件名,编译器将使用它。
  • @AlessioMTX 同样的想法,VMS 也使用文件扩展名来识别内容,但你不能在 Windows 上编译 MACRO。我发现 MACRO 便于“粘合”代码在执行模式或内核模式下调用函数,但实际上并没有太多。
  • 请记住,汇编语言在设计上依赖于指令集架构。 VAX 和相关处理器的宏汇编器使用与 DOS 或 Windows 机器上的 .asm 汇编器完全不同的指令集。它们都是汇编程序,但相似之处到此为止。
【解决方案2】:

我喜欢 MACRO-32,我更喜欢它不那么出名但非常优雅的表亲 BLISS-32,但在我 45 年的程序员生涯中,我只用 MACRO 编写过一个商业应用程序,我这样做是因为我需要超快的速度,而且我没有其他高级语言可供选择。

所以 MACRO 就像一个给你时间的女朋友(!!),但不是你想要安定下来结婚的女朋友。为此,您需要使用 C 或 C++ 或 BASIC 甚至 .. COBOL 进行编码,因为这些语言“完成工作”足以投入生产,并且在原始编码器继续前进后很长时间仍可维护。

【讨论】:

    【解决方案3】:

    DBL 是起源 DiBOL(面向数字业务的语言)的当前化身,是 COBOL 的替代品。对于应用程序,我推荐 DBL 而不是 COBOL 或 BASIC。我已经通过 DiBOL/DBL 在 MACRO 中编码。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-01-28
      • 2010-09-19
      • 2010-10-08
      • 1970-01-01
      • 2023-03-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多