Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/assembly/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Assembly 低级操作系统API是如何工作的?_Assembly_Compiler Construction_Operating System - Fatal编程技术网

Assembly 低级操作系统API是如何工作的?

Assembly 低级操作系统API是如何工作的?,assembly,compiler-construction,operating-system,Assembly,Compiler Construction,Operating System,我想知道OSAPI是如何工作的,因为我决定写一个编译器。如果在C/C++中执行某些操作,可能会调用API。它们在C/C++中看起来很好,但我对它们在汇编中如何编译感到非常困惑。他们会发出中断、写入内存地址、写入寄存器,然后发出中断(BIOS API就是这样工作的,我不确定OS API是否会这样工作)还是其他什么?很抱歉回答了我自己的问题,但我找到了我要找的东西 显然,OSAPI(至少在windows中)只是一个标准的C调用,这意味着如果我在编写编译器,我需要实现自己的API系统 来源:你的问题令

我想知道OSAPI是如何工作的,因为我决定写一个编译器。如果在C/C++中执行某些操作,可能会调用API。它们在C/C++中看起来很好,但我对它们在汇编中如何编译感到非常困惑。他们会发出中断、写入内存地址、写入寄存器,然后发出中断(BIOS API就是这样工作的,我不确定OS API是否会这样工作)还是其他什么?

很抱歉回答了我自己的问题,但我找到了我要找的东西

显然,OSAPI(至少在windows中)只是一个标准的C调用,这意味着如果我在编写编译器,我需要实现自己的API系统


来源:

你的问题令人遗憾地意味着对低级编程非常缺乏基础知识。我建议您在考虑编写自己的编译器之前,先读一两本关于这个主题的好书,了解这些主题。这里的一个相关术语是“调用约定”(用于函数参数的传递方式,返回值的返回方式,以及哪些寄存器被阻塞,哪些寄存器未被阻塞)。更一般地说,ABI(类似于API,但二进制)描述了事物在汇编中是如何相互作用的。有一些关于什么是ABI的很好的链接,以及到x86/x86-64上使用的常用规范的官方规范的链接(包括像Linux系统调用ABI这样的东西,它与Windows不同,稳定并且可以直接使用,没有通常的glibc包装器),这似乎是最相关的副本,尽管我知道你对Windows很感兴趣。另请参阅,以获取有关调用约定为何按其设计方式的一些讨论。另请参见。错了,我对Windows不感兴趣。我对我正在创建的操作系统的API很感兴趣回答你自己的问题很好,我鼓励你。好吧,我发现其他人为回答他们自己的问题而道歉,所以我想我应该这么做