腾讯云
开发者社区
文档
建议反馈
控制台
登录/注册
首页
学习
活动
专区
工具
TVP
最新优惠活动
文章/答案/技术大牛
搜索
搜索
关闭
发布
精选内容/技术社群/优惠产品,
尽在小程序
立即前往
文章
问答
(9999+)
视频
沙龙
1
回答
C如何引用自动
变量
。
、
我试图了解
编译器
如何引用自动
变量
。我的参考点是带有PIC32MZ
编译器
的XC32微控制器。
将
地址移
动到
工作
寄存器
。
将
b的地址移
动到
另一个工作
寄存器
。添加两个工作
寄存器
。
将
结果移到c的地址。 如何处理自动<e
浏览 0
提问于2018-10-08
得票数 0
回答已采纳
1
回答
++(a = b);比a=b+1快吗?
、
、
据我理解,第一种方法包括以下操作: 它真的需要更少的周期吗或者
编译器
(例如gcc)做了一个
优化
,这样就没有什么区别了吗?
浏览 3
提问于2014-02-21
得票数 0
2
回答
在c代码中显示溢出的工具。
、
我的意思是看看哪些代码块可能会使
寄存器
移
动到
内存中。在编译代码的过程中,在某些情况下,您将不得不进行
寄存器
分配。
编译器
将
生成干扰图(“
变量
”是节点,如果它们同时处于活动状态,则它们是连接的)。从这一点开始,有一个线性过程,它将进行图形着色:为每个
变量
分配一个不会干扰其他
变量
的
寄存器
……如果你没有足够的
寄存器
来给图形上色,算法将会失败,一个
变量
(
寄存器
)将会溢出
浏览 0
提问于2010-12-05
得票数 5
2
回答
寄存器
const
变量
将
存储在哪里?
、
、
、
我知道,当
变量
声明在
寄存器
前面时,关键字
编译器
可能会将
变量
放在CPU的
寄存器
中,以便更快地访问。同样,我也知道
编译器
可以
将
const
变量
放入ROM中,因为const
变量
的值不会在整个程序执行过程中发生变化,我也知道
寄存器
说明符是对实现将
变量
放入CPU
寄存器
的请求。但是,如果
变量
被标记为const &
寄存器
,那么它将存储在哪里呢?inc
浏览 3
提问于2015-01-31
得票数 2
2
回答
关于线程的问题
、
、
、
但是,我没有使用线程,然后使用线程来计算答案矩阵的每个单元格的标量积,然后再次
将
第一个矩阵分成不同的比例,以便每个线程都有相等的部分要计算。
浏览 2
提问于2011-05-02
得票数 4
2
回答
编译器
优化
:
将
变量
从
堆栈
移
动到
寄存器
、
、
、
、
_t result= 0; return result; } https://godbolt.org/z/vULPAZ clang在这里
优化
了
寄存器
的我怀疑这可能是因为我接受了一个
变量
的地址,因为一个人不能接受
寄存器
的地址。 这仅仅是gcc中缺少的
优化
,或者可能clang以某种方式违反了标准?
浏览 29
提问于2019-03-23
得票数 4
回答已采纳
2
回答
这个函数被认为是可重入的吗?
、
、
、
myArrayOfStructures[index].status = 0; { }注意: myArrayOfStructures是文件中的一个全局
变量
我认为这个函数是可重入的,只要它的参数是通过
堆栈
传递的,因为有以下分析: 函数调用时,函数的两个参数被推到
堆栈
上。如果函数本身
从
另一个OS任务中断,则参数
将
第二次推到
堆栈
上。因此,函数的两个实例是“独立的”,因为每个实例在
堆栈
中
浏览 5
提问于2017-01-03
得票数 3
1
回答
在汇编程序AT&T上下文中: movl在这条指定的行中做什么?
、
、
、
我用C语言编写了一些简单的代码行,并想拆解它:int main(){}这不仅是因为我得到的值为0,更确切地说是什么很刻薄。我知道0x2a是42的十六进制,但下一部分对我来说很神秘;这是否意味着42被保存到注册rbp中?那0x4呢?我的42 :0呢?
浏览 4
提问于2022-04-22
得票数 -3
3
回答
c++中
变量
的
堆栈
内存分配
、
、
、
、
c++
编译器
如何组织在函数中初始化的
变量
来存储它们,以便计算机能够以最快的方式找到它们?我知道
编译器
把它们一个接一个地放到
堆栈
上,但它背后一定有一些逻辑,我一直在搜索Google几个小时,但是我什么也找不到。例如:{ int b; double d;这将占用比下面的内存更多的内存,因为c++
编译器
在内存中存储的方式在下一个示例中,
编译器
将在内存中将这些
变量
存储在哪里?据我所知
浏览 4
提问于2017-01-06
得票数 1
回答已采纳
3
回答
编译器
如何在
堆栈
上安排局部
变量
?
、
正如我们所知,局部
变量
位于
堆栈
上。但是,它们的顺序是什么呢?它们是按照声明的顺序排列的吗?这意味着第一个声明的
变量
被安排在
堆栈
的较高地址上(
堆栈
增长到较低地址)?举个例子: int iArray[4];}
浏览 0
提问于2010-11-24
得票数 2
回答已采纳
2
回答
在递归中,什么会影响
堆栈
大小?
、
递归方法调用的哪些部分对
堆栈
有贡献--比如返回的对象、参数、局部
变量
等?我正在尝试
优化
Android应用程序在运行到StackOverflowException之前可以在有限的内存上执行的递归级别。 提前谢谢。
浏览 0
提问于2012-08-20
得票数 0
回答已采纳
2
回答
自动内存分配发生在编译时还是C中的运行时?
、
、
、
、
如果我们谈论静态内存分配,我们说它是在编译时分配的,但实际上
编译器
只是处理这个内存分配,它实际上是在程序开始时分配的。例如,
编译器
可以在编译的二进制文件中创建一个大的data部分,当程序加载到内存中时,程序data段中的地址将用作分配内存的位置。 如果我谈到自动内存分配,它是在控件进入新范围时分配的。现在,我的疑问是,在这种情况下,
编译器
是否也会将一些虚拟地址传递到编译后的二进制文件中,后者在运行时成为实际分配内存的地址,还是只在运行时分配,而没有
编译器
的任何角色,就像分配动态内存的方式一样?如果我有一些局部
变量<
浏览 1
提问于2020-10-23
得票数 0
回答已采纳
3
回答
为什么
编译器
要在
寄存器
中存储
变量
?
、
、
、
register登记数据-定义;注册int i; 注意,在打开
优化
时,TIGCC将自动
将
经常使用的
变量
存储在CPU
寄存器
中,但即使关闭
优化</
浏览 4
提问于2013-10-31
得票数 2
回答已采纳
1
回答
64位指令中的C++指针
、
、
、
、
我正在编写一个jit
编译器
(只有64位,windows)。我需要通过引用(指针)访问c++程序的
变量
。示例:使用以下指令
将
32位整数
从
内存中添加到32位
寄存器
:不幸的是,这是要求32位位
移
,但我(只?)有一个指向c++
变量
的64位指针。 我的问题是:有什么方法可以
从
64位c++指针中获得32位位
移
吗?
浏览 2
提问于2016-04-11
得票数 2
回答已采纳
2
回答
为什么GCC要使用额外的
寄存器
将
值推送到
堆栈
上?
、
、
、
eax,0x0 40113c: c3 ret 为什么附加
寄存器
浏览 4
提问于2022-06-19
得票数 0
回答已采纳
3
回答
如何坚持C
编译器
将
局部
变量
放在
堆栈
上,而不是在
寄存器
中
、
、
、
、
为此,必须在
堆栈
中找到指向堆的所有函数参数和局部
变量
。现在,有一段时间,“
寄存器
”关键字意味着“如果您愿意,可以
将
这个
变量
放在
寄存器
中”,否则它就在
堆栈
上,但是现在所有的
编译器
(GCC、Clang、Tinyc/tcc) C
编译器
似乎都不管把局部
变量
放入
寄存器
中有没有一种方法可以告诉这些
编译器
使用原始的C语义,即所有局部
变量
都在
堆栈
上,除
浏览 3
提问于2015-03-08
得票数 6
回答已采纳
6
回答
嵌入式编程
、
我在网上发现了这个问题: 答:在可能的情况下,最好避免使用char和short作为局部
变量
。对于char和short类型,
编译器
需要在每次赋值后
将
局部
变量
的大小减少到8或16位。这被称为符号扩展用于有符号
变量
,零扩展用于无符号
变量
。它是通过
将
寄存器
左移24位或16位来实现的,然后是相同数量的签名或无符号移位,需要两条指令(无符号字符的零扩展需要一条指令)。这些移位可以通过对局部
变量</
浏览 7
提问于2011-01-11
得票数 2
回答已采纳
3
回答
在
优化
时,在现代
编译器
中使用“
寄存器
”关键字是否毫无用处?
、
、
、
C register关键字为
编译器
提供了一个提示,使其倾向于在
寄存器
中存储
变量
,而不是在
堆栈
上存储
变量
。如果
编译器
愿意,可以忽略它。我知道,当你打开
优化
的时候编译的时候,它基本上是没用的,但是它完全没用吗?更具体地说:对于{ gcc,clang,msvc }x{ -Og,-O,-O2,-O3 }的任何组合:在决定是否实际分配
寄存器
时register是否被忽略?备注: 我并不是在问关键字是否有任何效果;当然,它会阻止您使用该
变量
的地
浏览 5
提问于2017-04-18
得票数 3
2
回答
无
堆栈
函数的跳转/跳转编译策略。(使用手动链接
寄存器
而不是调用/ret)
、
、
、
、
我熟悉构造函数序言/结语的两种基本策略: “正则”函数:
将
堆栈
指针移到
堆栈
帧(sub rsp, n)的末尾,执行实际工作,然后
将
堆栈
指针
移
回(add rsp, n)和ret。(如果体内使用了许多
寄存器
,这里可能还会有一些推送和弹出。)“叶子”函数:与(1)相同,但不要移动
堆栈
指针,保存两个指令。在这种方法中,我们完全忽略
堆栈
指针,因此我们没有
堆栈
空间,但是对于一个可能可行的小函数。它还需要一个自定义调用约定
浏览 0
提问于2020-12-26
得票数 3
回答已采纳
1
回答
一个C文件的局部
变量
没有在栈中创建,它的GCC编译的代码,
、
、
、
、
当我做源代码级调试时,我注意到C函数中的局部
变量
在用GCC编译时并不是在
堆栈
中创建的。它是一个多核系统,但只启用了Boot Strap处理器
浏览 2
提问于2017-03-08
得票数 0
点击加载更多
扫码
添加站长 进交流群
领取专属
10元无门槛券
手把手带您无忧上云
相关
资讯
嵌入式软件错误的五个主要原因
如何在ARM下进行高效的C编程?
你对C+中的内联函数真的很了解吗
Linux内核中常用的C语言技巧
Linux 内核中常用的 C 语言技巧
热门
标签
更多标签
云服务器
ICP备案
对象存储
腾讯会议
云直播
活动推荐
运营活动
广告
关闭
领券