gpt4 book ai didi

c - 是否存在与平台无关的汇编语言子集?

转载 作者:太空狗 更新时间:2023-10-29 15:54:13 24 4
gpt4 key购买 nike

我最近遇到了 C 中的 asm 保留字。我想利用它来避免某些 C 语义规则:特别是我想修改函数外的变量:

int a = 5;
asm("asm code to change a from 5 to, like, 6")

int main() {
printf("a equal to %d\n", a);
}

现在,从我的计算机科学类(class)中我知道汇编依赖于平台,因此它的使用应该非常有限。但是,我看到了一些循环指令,例如 MOV 或 ADD。

我的问题是:

  1. 尽管汇编在全局范围内依赖于平台,但是否存在所有汇编程序都能理解的子集?我的意思是,如果我要编写 asm("MOV something somethingelse") 并假设 MOV 在这个假设的子集中,那么无论平台如何,代码都是正确的吗?
  2. 如果该平台独立子集确实存在,有人可以链接它吗?
  3. 如果没有独立于平台的子集,最常见的汇编语法是什么?

最佳答案

1) Although assembly is globally platform dependent, is there a subset of it that is understood by all assembler? I mean, if I were to write asm("MOV something somethingelse") and assuming MOV is inside this hypothetical subset, would the code be correct regardless of the platform?

没有。虽然所有版本的汇编语言都可能有像 MOV 这样的命令,但语法会不同,寄存器会不同,并且当它被汇编成机器语言时,表示该指令的实际二进制代码可能会不同。

这样想——独立于平台的子集必须组装成完全相同的一组位,每台计算机都必须解释相同的位,(或者必须为所有不同的体系结构编写汇编程序相同的汇编语言)。如果真是这样,平台独立性将是一项相当微不足道的任务。

2) If that platform independent subset exists indeed, can someone link it?

它没有,所以不。

3) If there is no platform-independent subset, which are the most common assembler syntaxes?

MASM、NASM 和 GAS(特别适用于 ARM 架构)

关于c - 是否存在与平台无关的汇编语言子集?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44571663/

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