主题 : 一个来自留学生对ARM汇编语言的困惑 希望大家能够帮帮我解答一下 复制链接 | 浏览器收藏 | 打印
级别: 新手上路
UID: 49102
精华: 0
发帖: 1
金钱: 5 两
威望: 1 点
综合积分: 2 分
注册时间: 2011-06-08
最后登录: 2011-07-27
楼主  发表于: 2011-06-08 11:38

 一个来自留学生对ARM汇编语言的困惑 希望大家能够帮帮我解答一下

管理提醒: 本帖被 qq2440 从 开发板实战手册及教程 移动到本区(2011-06-08)
我是一名在日留学生 最近在看Wayne Wolf写的【嵌入式系统设计基础这本书】 其中有一个问题困惑很久 少了很多书 都没有说
2.2.3章节【control flow】中
书中写道 void f1 (int a){ f2(a); } 的控制流程如下

f1    LDR r0, [r13]             ;引数aの値をスタックからr0にロード
      ;f2()の呼出し
      STR r14,[r13]!  ;f1の復帰アドレスをスタック上に保存
      STR r0,[r13]!    ;f2への引数をスタック上に保存
      BL f2                                       ;f2 への分岐&リンク
      ;f1()からの復帰
      SUB r13,#4                 ;f2 の引数をスタックからポップ
      LDR r13!,r15              ; レジスタの復元と復帰

但是其中第三,第四和最后一行的“!”分别是什么意思啊? 问过我们教授 教授好像不清楚 让我自己找资料查
可找了很多书 都没有找到 所以麻烦各位高手了

万分感激~~!拜托了!!
级别: 侠客
UID: 48966
精华: 0
发帖: 69
金钱: 350 两
威望: 70 点
综合积分: 138 分
注册时间: 2011-06-06
最后登录: 2012-01-04
1楼  发表于: 2011-06-08 15:27
看不懂~!
^很多问题的背后都是简单的原因......
级别: 荣誉会员
UID: 34780
精华: 0
发帖: 1219
金钱: 6230 两
威望: 1246 点
综合积分: 2438 分
注册时间: 2010-12-21
最后登录: 2017-09-18
2楼  发表于: 2011-06-09 09:34
STR r14,[r13]!  
印象中是(我不是很确定) 先将R14 存到 R13所指向的地址后, 再将R13的值 +4
具体可以查一下指令手册