社区
非技术区
帖子详情
如何在C++中调用CPU的寄存器????
昵称都被占完求了
2003-08-24 05:29:39
比如这个
首先要熟练掌握c语言,要熟悉你的目标系统的CPU的汇编,熟悉你的目标系统的架构的特点(比如CPU的一些内部的专用寄存器,中断处理方式等等)
应该如何完成呢???
...全文
165
1
打赏
收藏
如何在C++中调用CPU的寄存器????
比如这个 首先要熟练掌握c语言,要熟悉你的目标系统的CPU的汇编,熟悉你的目标系统的架构的特点(比如CPU的一些内部的专用寄存器,中断处理方式等等) 应该如何完成呢???
复制链接
扫一扫
分享
转发到动态
举报
写回复
配置赞助广告
用AI写文章
1 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
xiaonian_3654
2003-08-24
打赏
举报
回复
要看你用那个编译器
要是用gcc
格式:asm("汇编代码")注意名字分裂规则
用vc
格式
__asm{
汇编代码
}
特别注意的是名字分裂规则
C++:提高篇: 栈-
寄存器
和函数状态
C++:提高篇: 栈-
寄存器
和函数状态
C/C++函数
调用
的几种方式总结
C/C++函数
调用
的几种方式总结 在C语言
中
,假设我们有这样的一个函数: int function(int a,int b)
调用
时只要用result = function(1,2)这样的方式就可以使用这个函数。但是,当高级语言被编译成计算机可以识别的机器码时,有一个问题就凸现出来:在
CPU
中
,计算机没有办法知道一个函数
调用
需要多少个、什么样的参数,也没有硬件可以保存这些参数。也就是说,计算机不知道怎么给这个函数传递参数,传递参数的工作必须由函数
调用
者和函数本身来协调。为此,计算机提供了一种被称为栈的数据结
c/c++
中
register关键字(
寄存器
、缓存、内存)
一般情况下,变量的值是存储在内存
中
的,
CPU
每次使用数据都要从内存
中
读取。如果有一些变量使用非常频繁,从内存
中
读取就会消耗很多时间,例如 for 循环
中
的增量控制: 复制纯文本复制int i;for(i=0; i<1000; i++){ // Some Code}int i; for(i=0; i<1000; i++){ // Some Code } 执行这段代码,
CPU
为了获得 i,会读取 1000 次内存。 为了解决这个问题,可以将使用频繁的变量放在
CPU
的通用
寄存器
中
,
C语言
调用
函数时参数是使用栈还是
寄存器
文章目录一、结论二、验证1. 32位程序2. 64位程序2.1 参数小于等于6个2.2 参数大于6个 一、结论 网上的文章有的说C语言
调用
函数参数使用栈传递,有的说使用
寄存器
传递。那么到底参数是使用栈还是
寄存器
呢? 先说结论: 32位程序使用栈传递 64位程序根据参数的个数而不同 参数1~6个,使用
寄存器
传递 参数大于6个,多出来的参数使用栈传递 二、验证 1. 32位程序 源代码: // main.c void fun(int a, int b) { a += 1; b +=
C++函数
调用
方式(注意是函数
调用
方式)
C++函数
调用
方式有三种__cdecl, __fastcall, __stdcall __cdecl 是C DECLaration的缩写(declaration,声明),表示C语言默认的函数
调用
方法:所有参数从右到左依次入栈,这些参数由
调用
者清除,称为手动清栈。 _stdcall 是StandardCall的缩写,是C++的标准
调用
方式:所有参数从右到左依次入栈,如果是
调用
类成员的话,最
非技术区
15,440
社区成员
58,165
社区内容
发帖
与我相关
我的任务
非技术区
C/C++ 非技术区
复制链接
扫一扫
分享
社区描述
C/C++ 非技术区
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
暂无公告
试试用AI创作助手写篇文章吧
+ 用AI写文章