|  
 [ このメッセージへの返事 ]
[ 返事を書く ]
[  home.html  ]
 
  
 投稿者:
BOK  @ kyt015.osk.threewebnet.or.jp on 97/9/21 03:25:35
 
In Reply to: アセンブラに詳しい方教えてください posted by 68user  @ oryo.inforyoma.or.jp on 97/9/20 19:44:29
 
たまたま手元にR3000のクロスアセンブラが
 あったので実験してみました。
 (注 レジスタをr+数字で書いています)
 
 このアセンブラでは、
 オフセットが 7FFFh 以上なら
 (符号付き16bitオフセットなので)
 r1をつかってアドレス計算し、
 (r1)を読んでくるようなコード(3命令)を
 生成しました。
 
 ---------------------------------------------------------
 lw     r18,80101111h(r19) ;3C01801F 02610821 8C321111
 が、
 lui    r1,8010h           ;3C01801F
 addu   r1, r19, r1        ;02610821
 lw     r18,1111h(r1)      ;8C321111
 こんなかんじ。
 (変換の仕方は定数によって
 いろいろあるようです。)
 ----------------------------------------------------------
 
 
 
 
 マクロ命令を使用しないようにオプション指定を
 したその場合はエラーが出ました。
 
 私の持っている資料によれば、
 lwは擬似命令ではないのですが、
 このアセンブラは賢くできているようです。
 (私は最適化し難いので、OFFにして使ってますが。)
 
 結論としては、
 1、Astart に 2^16 以上の値を入れることはできない。
 2、lw は疑似命令である。
 どちらになるかはアセンブラ次第ということでしょう。
 (MIPSのアセンブラは1のような気がします。根拠無し。)
 
 
 追記
 movem.l d0-d7/a0-a5,-(sp) さんの
 おっしゃっている使い方が一般的だと思います。
 
 
 
 
  
 
 
   |