相关疑难解决方法(0)

没有汇编的C/C++函数定义

我一直认为printf()在最后一步中使用内联汇编定义函数.在stdio.h的内部深处埋藏了一些asm代码,它实际上告诉CPU要做什么.例如,在dos中,我记得它是通过首先mov将字符串的开头添加到某个内存位置或寄存器而不是调用intterupt来实现的.

但是,由于Visual Studio的x64版本根本不支持内联汇编程序,因此我想知道在C/C++中根本不会有汇编程序定义的函数.库函数如何printf()在不使用汇编代码的情况下在C/C++中实现?什么实际执行正确的软件中断?谢谢.

c++ inline-assembly

70
推荐指数
5
解决办法
9493
查看次数

了解printf的硬件

我想知道是否有任何可用的在线资源解释了什么事情,比如printf of C,它解释了在非常低级别发生的事情(BIOS /内核调用)

c hardware

12
推荐指数
2
解决办法
6527
查看次数

printf如何在内部工作?

我很好奇printfLinux内部的工作原理.我不明白它是如何写入数据的STDOUT.

在对内部进行了一些搜索之后,我下载glibc并查看了源代码:

__printf (const char *format, ...)
{
   va_list arg;
   int done;

   va_start (arg, format);
   done = vfprintf (stdout, format, arg);
   va_end (arg);

   return done;
}
Run Code Online (Sandbox Code Playgroud)

在找到这个之后,我深入研究了这个vfprintf函数 - 但该文件大约有2500行不熟悉的C代码.我正在寻找10,000英尺的解释,如何printf与计算机的内存和输出一起工作,以在屏幕上显示字符.

如果我是汇编代码,我还需要做些什么才能完成相同的任务?它依赖于操作系统吗?

c assembly printf standard-library

12
推荐指数
1
解决办法
1万
查看次数

标签 统计

c ×2

assembly ×1

c++ ×1

hardware ×1

inline-assembly ×1

printf ×1

standard-library ×1