首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >跨平台/体系结构汇编语言

跨平台/体系结构汇编语言
EN

Stack Overflow用户
提问于 2012-05-16 04:01:52
回答 7查看 7.5K关注 0票数 7

我知道汇编语言通常不是跨平台的。即使有了NASM这样的东西,对于不同的架构和平台仍然需要不同的代码,这些架构和平台具有不同的运行时和实现方式,比如中断。但是,如果有人想用汇编语言编程,因为他们喜欢汇编语言,有跨平台跨架构汇编语言的实现吗?

编辑:

如果不是传统意义上的组装,而是一种看起来很像程序集的低级编程语言呢?

EN

回答 7

Stack Overflow用户

回答已采纳

发布于 2012-05-16 05:37:18

我认为唐纳德·克努斯的MMIX是你可能感兴趣的。Knuth用这种机器/汇编语言用他的计算机编程书的艺术编写程序。到目前为止,没有CPU直接支持它。只有模拟器。哦,有人做了一个FPGA可以运行它。但仅此而已。

票数 7
EN

Stack Overflow用户

发布于 2014-01-06 03:21:49

LLVM是一种低级语言(其用途是编译器后端),它看起来很像AT&T程序集,如果不是更糟的话。下面是一个例子:

代码语言:javascript
复制
define i32 @add_sub(i32 %x, i32 %y, i32 %z) {
entry:
  %tmp = add i32 %x, %y
  %tmp2 = sub i32 %tmp, %z
  ret i32 %tmp2
}

这与以下手写的x86程序集大致相同:

代码语言:javascript
复制
; Body
mov eax, edi
add eax, esi
sub eax, edx
ret

LLVM llc 3.3生成以下代码(为可读性缩进):

代码语言:javascript
复制
    .file    "add_sub.ll"
    .text
    .globl    add_sub
    .align    16, 0x90
    .type    add_sub,@function
add_sub:                        # @add_sub
    .cfi_startproc
# BB#0:                         # %entry
    lea    EAX, DWORD PTR [RDI + RSI]
    sub    EAX, EDX
    ret
.Ltmp0:
    .size    add_sub, .Ltmp0-add_sub
    .cfi_endproc


    .section    ".note.GNU-stack","",@progbits

有关守则如下:

代码语言:javascript
复制
lea    EAX, DWORD PTR [RDI + RSI]
sub    EAX, EDX
ret

如您所见,LLVM有一个非常强大的优化器。这可能是你最接近的。

票数 8
EN

Stack Overflow用户

发布于 2012-05-16 04:08:01

不是的。C语言可能是最接近跨平台低级语言的语言。

票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/10611826

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档