int $0x80是啥意思(汇编语言)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了int $0x80是啥意思(汇编语言)相关的知识,希望对你有一定的参考价值。

int $0x80是一条AT&T语法的中断指令,用于Linux的系统调用。
Linux系统下的汇编语言比较喜欢用AT&T的语法,如果翻译成Intel的语法那就是:int 80h
就像我们在Intel的语法下的DOS汇编中经常用int 21h调用DOS中断,同样如果,换成AT&T的语法就是int $0x80。
不过无论那一种语法,int $0x80或者int 80h都是针对Linux的,在DOS或者Windows下都是起不到相应功能的。同理 int 21h或int $0x21也是都只能在DOS或者一些Windows下起作用,无法在Linux下起作用的。
参考技术A 执行80中断 参考技术B 执行80中断。linux使用0x80号中断。

GCC 中 -x 标志的输入和输出“语言”是啥意思?

【中文标题】GCC 中 -x 标志的输入和输出“语言”是啥意思?【英文标题】:What do the input and output "languages" for the -x flag in GCC mean?GCC 中 -x 标志的输入和输出“语言”是什么意思? 【发布时间】:2020-11-19 18:53:55 【问题描述】:

我正在尝试编译一段以前在 ifort 中使用 gfortran 编译的代码。旧的编译行中有一个 -xf95-cpp-input 选项,对我来说没有意义。

查看 GCC 文档,-x 选项似乎告诉编译器忽略源代码文件的文件扩展名,并使用您告诉它的语言显式解析它。例如,我可以运行 gfortran -xf77 myfunkycode.lulwut,它会将我的 .lulwut 文件解析为 f77 文件。

这是有道理的,但是f95-cpp-inputc++-cpp-output 是什么意思?在这种情况下,“输入”和“输出”是什么意思?我猜“输入”是源代码? “输出”是目标文件?根据文档,-x 只是用于选择“输入文件的语言”,为什么语言列表中有“输出”?

【问题讨论】:

【参考方案1】:

f95-cpp-输入

将源文件编译为 f95 文件使用 cpp 预处理器

c++-cpp-输出

将源文件编译为 C++ 文件不使用 cpp 预处理器

在这种情况下,“输入”和“输出”是什么意思?

我猜只是一个约定。

【讨论】:

所以一般来说,“lang1-lang2-input”的意思是“lang1 with lang2 preprocessor”,“lang1-lang2-output”的意思是“lang1 without lang2 preprocessor”?对于“c++-cpp-output”,它对预处理器做了什么,只使用 C?还是没有预处理器? 那么,“c++-cpp-output”和“cpp-output”有什么区别? 我猜cpp-output是没有cpp的C源文件。 c++-cpp-output 是一个没有 cpp 的 C++ 源文件。似乎要签出 - printf "%s\n" "#define a main" "int a() " | gcc -x cpp-output - 因未定义的 main 失败 - # 是 cmets。 So generally, 不知道,这对我来说毫无意义,我只会背诵这些选项。 For "c++-cpp-output" what is it doing for the preprocessor, just using C? 它将文件编译为 C++ 而不运行预处理器。不涉及C。 Or no preprocessor? 从字面上看,是的。 当你说“没有 cpp 预处理器”时,我首先想到的是“好吧,我猜你可以使用不同的预处理器”,因为你没有说“没有任何预处理器”。没有任何预处理步骤的编译让我觉得很奇怪和陌生。

以上是关于int $0x80是啥意思(汇编语言)的主要内容,如果未能解决你的问题,请参考以下文章

以下程序中“0x80”和“0x40”代表啥意思?

c语言中数值前导是啥

汇编中寻址模式之前的减号是啥意思,例如 -0x2(%rbx)

C语言中,对枚举值赋值是啥意思?

这个汇编代码是啥意思? [复制]

汇编编译的可执行文件在 Windows 上的 Ubuntu 上使用 INT 0x80 Linux 子系统不产生输出