问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

如何用C语言定义arm状态下的r13寄存器为堆栈指针

发布网友 发布时间:2022-05-10 21:53

我来回答

2个回答

热心网友 时间:2023-11-05 00:29

1,你如果用C语言编程的话,堆栈跟你见不着面,编译器会处理,何来定义堆栈之说?
2,你如果是用汇编和C混合编程的话你就只能用约定俗成的SP寄存器,
3,如果只用ARM汇编的话,在汇编代码里你可以随便用任何寄存器来充当堆栈的角色,无非就是在程序初始化时将哪个寄存器赋一个地址,然后你把这个寄存器当作栈指针寄存器,进行压栈和出栈操作时来改变或恢复这个寄存器的值,这样一来就完成了在汇编代码里的操作堆栈的功能。但是在汇编代码里最重要的是要能做到恢复现场,有一个寄存器没恢复的话整个程序就会出错,还有你不用SP的话就不能用PUSH和POP指令,直接操作你要拿来当堆栈指针的寄存器就OK。

4,对于堆栈的理解问题,堆栈是一种抽象数据容器,即包括操作的数据结构,相当于C++中的类的概念,但还是有区别,无非就是划定一块内存区,定义任何数据想要在这块内存区存取都要遵守先进后出的规则,而INTEL和ARM的CPU架构里都有一个物理寄存器SP用来充当指向堆栈(你划定的那块内存区)的栈顶指针,在C语言里要实现堆栈这样的数据类型,就要用你定义的变量来充当栈顶指针,但在汇编里,就是SP了。

为了这个5分,我可没少写呀。

热心网友 时间:2023-11-05 00:30

这个应该是不需要定义的吧。ARM体系结构下,R13通常就被用于是SP。追问那是Thumb下强制的,ARM下那是习惯,书上说可以用其他寄存器来代替的,但是就是不知道怎么定义

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
Canada's premiers (the leaders of provincial governments),if th... 我家的文竹从根部长出两根茎长的很快而且不长叶子,可以剪掉吗?_百度... 宝宝伊可新吃多了怎么办,会不会有事 ...一个好的一个坏,然后在两个世界扮演好人和坏人,坏人第一个是小丑... 老公得牛皮癣怎么医断根? 牛皮癣能治断根吗 三十年的牛皮癣了,能治好吗,能断根吗_百度拇指医生 意大利入籍条件汇总你适合哪一种 移民意大利申请永久居留和国籍的条件是什么 意大利移民申请国籍攻略 举例说明ARM汇编语言函数和C语言函数互调用规则。 ARM汇编调用c语言的问题 arm中如何实现C语言与汇编语言的混合编程 初学arm9对C语言的要求 ARM汇编语言与C语言调用的一段代码问题 arm的c语言中是什么意思 《削荆为笔》的译文? 中国人对信有很多种称呼,我想知道都有那些 谁有“不扣钮的女孩”啊,传一个了 信有几个含义分别是什么 走失夫君音信有是什么意思 华为nova6解锁大概多少钱? 西昌哪里好玩啊 西昌```那里好玩```是邛海还是小渔村 凉山彝族自治州夜听邛海】西昌邛海公园月色风情小镇观海屋怎么样?有什么好玩的地方? 西昌市邛海湿地公园从塑像座22路到哪里下车,有什么可以玩的! 邛海怎么样,邛海有什么好玩的地方 冬天去西昌邛海有什么好玩的? 西昌邛海好玩吗?听好多人都在说那边很好。 暑期四川邛海自驾游去哪里好玩,邛海出发自驾游好去处攻略推荐 奥德赛英雄一击怎么打出二段 刺客信条奥德赛英雄一击怎么升级 《刺客信条》奥德赛加点是什么? 刺客信条奥德赛,什么情况下用的是刺客伤害,什么情况下用的是战士伤害?两个伤害能同时存在吗? 我刺客信条奥德赛里面用的一把刀自身带毒,然后开火焰效果,这俩会不会叠加 刺客信条奥德赛耀眼套装配什么武器 刺客信条奥德赛野猪王怎么打 刺客信条奥德赛扛起和刺杀键冲突? 刺客信条奥德赛为什么我新的存档,直接以前存档就没了啊 《刺客信条:奥德赛》有哪些消灭佣兵的技巧? 2015年襄垣农历十二月天气预报 惠普笔记本4410怎么拆开清理灰尘 刚出生的小男孩,取什么名字好啊,姓张? 笔记本怎么拆机清灰?HP V3000系列 有会计证不会做账怎么办? 会计难学不啊,会计具体是做什么的如何做账跟记账啊 我考了会计证,但是并不会实际做账 这本账会计做不做账! 会计一般是月初做账还是月末做账 提现和取现时 预计会计为何不做账务处理?