ページ 11

プログラムメモリのアドレスを指定する方法

Posted: 2007年2月22日(木) 10:48
by ken
はじめまして

早速質問なのですが、アセンブラでは擬似命令「ORG」でプログラムメモリの先頭番地を指定して命令を書き込むことが出来ますが、同様の処理を(つまりプログラムメモリに書き込み始める番地を指定する)行うプログラムをC言語で記述することは可能でしょうか?

CPU:PIC16F84A
開発環境:MPLAB7.40 もしくは ソースブースト6.0
コンパイラ: PIC-C

Re:プログラムメモリのアドレスを指定する方法

Posted: 2007年2月23日(金) 00:12
by 管理人
アセンブラを知らないので、よくわかりません><;
アドレス指定はポインタ位しかわかりません、お力になれず申し訳ないm(_ _||)m

Re:プログラムメモリのアドレスを指定する方法

Posted: 2007年2月23日(金) 02:00
by Justy
 標準のC言語ではできません。
 プログラムの各セクションのアドレスはリンカ(ないしはOS)が自動的に決めてしまいます。

 しかし、使うコンパイラ・リンカによっては機能が拡張されていて、
コードセクションの位置を自由に決められたり、リンカオプションの設定で、
ORGと同じ事ができるかもしれません。
 でももうそれは機種依存なので、できるかどうかは、コンパイラのマニュアルを見るか、
コンパイラベンダーに問い合わせるしかないと思います。

Re:プログラムメモリのアドレスを指定する方法

Posted: 2007年2月26日(月) 09:43
by ken
ご回答ありがとうございます。

やはり標準のC言語ではできないのですか。
確かに、私が探した有料のコンパイラの中に#pragmaでORGという命令ができるものあり、プログラムメモリ位置の指定ができるようでした。
しかし、#pragmaはコンパイラ依存のプリプロセッサ命令なので、コンパイラに依存しない方法はないのだろうかと模索していましたが、やはりできないということなんですね。

いや~結論が出てスッキリしました。

本当にありがとうございました。

※ちなみに使用しているコンパイラはPIC-Cではなく下位バージョン(フリーソフト)のPICCLITEでした。PIC-Cでは上記の命令が出せるようです。(しかし有料・・・)

Re:プログラムメモリのアドレスを指定する方法

Posted: 2007年2月26日(月) 09:45
by ken
解決マークにチェックし忘れてしまいました。