source: UsbWattMeter/trunk/asp_dcre/kernel/genoffset.tf@ 167

Last change on this file since 167 was 167, checked in by coas-nagasima, 8 years ago

MIMEにSJISを設定

  • Property svn:eol-style set to native
  • Property svn:keywords set to Id
  • Property svn:mime-type set to text/plain; charset=SHIFT_JIS
File size: 4.2 KB
Line 
1$ ======================================================================
2$
3$ TOPPERS/ASP Kernel
4$ Toyohashi Open Platform for Embedded Real-Time Systems/
5$ Advanced Standard Profile Kernel
6$
7$ Copyright (C) 2011 by Embedded and Real-Time Systems Laboratory
8$ Graduate School of Information Science, Nagoya Univ., JAPAN
9$
10$ 上記著作権者は,以下の(1)〜(4)の条件を満たす場合に限り,本ソフトウェ
11$ ア(本ソフトウェアを改変したものを含む.以下同じ)を使用・複製・改
12$ 変・再配布(以下,利用と呼ぶ)することを無償で許諾する.
13$ (1) 本ソフトウェアをソースコードの形で利用する場合には,上記の著作
14$ 権表示,この利用条件および下記の無保証規定が,そのままの形でソー
15$ スコード中に含まれていること.
16$ (2) 本ソフトウェアを,ライブラリ形式など,他のソフトウェア開発に使
17$ 用できる形で再配布する場合には,再配布に伴うドキュメント(利用
18$ 者マニュアルなど)に,上記の著作権表示,この利用条件および下記
19$ の無保証規定を掲載すること.
20$ (3) 本ソフトウェアを,機器に組み込むなど,他のソフトウェア開発に使
21$ 用できない形で再配布する場合には,次のいずれかの条件を満たすこ
22$ と.
23$ (a) 再配布に伴うドキュメント(利用者マニュアルなど)に,上記の著
24$ 作権表示,この利用条件および下記の無保証規定を掲載すること.
25$ (b) 再配布の形態を,別に定める方法によって,TOPPERSプロジェクトに
26$ 報告すること.
27$ (4) 本ソフトウェアの利用により直接的または間接的に生じるいかなる損
28$ 害からも,上記著作権者およびTOPPERSプロジェクトを免責すること.
29$ また,本ソフトウェアのユーザまたはエンドユーザからのいかなる理
30$ 由に基づく請求からも,上記著作権者およびTOPPERSプロジェクトを
31$ 免責すること.
32$
33$ 本ソフトウェアは,無保証で提供されているものである.上記著作権者お
34$ よびTOPPERSプロジェクトは,本ソフトウェアに関して,特定の使用目的
35$ に対する適合性も含めて,いかなる保証も行わない.また,本ソフトウェ
36$ アの利用により直接的または間接的に生じたいかなる損害に関しても,そ
37$ の責任を負わない.
38$
39$ $Id: genoffset.tf 167 2016-03-08 11:37:45Z coas-nagasima $
40$
41$ =====================================================================
42
43$
44$ #defineディレクティブの生成
45$
46$FUNCTION DEFINE$
47 #define $ARGV[1]$$TAB$$FORMAT("%d", +ARGV[2])$$NL$
48$END$
49
50$
51$ ビットのサーチ
52$
53$FUNCTION SEARCH_BIT$
54 $_val = ARGV[1]$
55 $FOREACH _val_bit RANGE(0,7)$
56 $IF (_val & 1) != 0$
57 $RESULT = _val_bit$
58 $END$
59 $_val = _val >> 1$
60 $END$
61$END$
62
63$
64$ ビットフィールドのオフセットとビット位置の定義の生成
65$
66$FUNCTION DEFINE_BIT$
67 $label = ARGV[1]$
68 $struct_size = ARGV[2]$
69 $output_size = ARGV[3]$
70
71 $top = SYMBOL(label)$
72 $IF !LENGTH(top)$
73 $ERROR$$FORMAT("label %1% not found", label)$$END$
74 $ELSE$
75 $val = 0$
76 $FOREACH i RANGE(0,struct_size-1)$
77 $tmp_val = PEEK(top + i, 1)$
78 $IF val == 0 && tmp_val != 0$
79 $val = tmp_val$
80 $offset = i$
81 $END$
82 $END$
83
84 $IF val == 0$
85 $ERROR$$FORMAT("bit not found in %1%", ARGV[1])$$END$
86 $ELSE$
87 $val_bit = SEARCH_BIT(val)$
88 $RESULT = {}$
89 $IF EQ(output_size, "W")$
90 $IF SIL_ENDIAN_BIG$
91 $val_bit = val_bit + 24 - ((offset & 0x03) << 3)$
92 $ELSE$
93 $val_bit = val_bit + ((offset & 0x03) << 3)$
94 $END$
95 $offset = offset & ~0x03$
96 $ELSE$$IF EQ(output_size, "H")$
97 $IF SIL_ENDIAN_BIG$
98 $val_bit = val_bit + 8 - ((offset & 0x01) << 3)$
99 $ELSE$
100 $val_bit = val_bit + ((offset & 0x01) << 3)$
101 $END$
102 $offset = offset & ~0x01$
103 $END$$END$
104 $END$
105
106 #define $label$$TAB$$FORMAT("%d", +offset)$$NL$
107 #define $label$_bit$TAB$$FORMAT("%d", +val_bit)$$NL$
108 #define $label$_mask$TAB$$FORMAT("0x%x", 1 << val_bit)$$NL$
109 $END$
110$END$
111
112$
113$ バイト配置のチェック
114$
115$FUNCTION MAGIC_CHECK$
116 $size = ARGV[1]$
117 $check = ARGV[2]$
118
119 $label = FORMAT("MAGIC_%d", +size)$
120 $top = SYMBOL(label)$
121 $IF !LENGTH(top)$
122 $ERROR$$FORMAT("label %1% not found", label)$$END$
123 $ELSE$
124 $FOREACH offset RANGE(1,size)$
125 $IF SIL_ENDIAN_BIG$
126 $val = PEEK(top + offset - 1, 1)$
127 $ELSE$
128 $val = PEEK(top + size - offset, 1)$
129 $END$
130 $IF val != AT(check, offset - 1)$
131 $ERROR$$FORMAT("value check of %1% failed", label)$$END$
132 $END$
133 $END$
134 $END$
135$END$
136
137$MAGIC_CHECK(1, { 0x12 })$
138$MAGIC_CHECK(2, { 0x12, 0x34 })$
139$MAGIC_CHECK(4, { 0x12, 0x34, 0x56, 0x78 })$
140
141$
142$ ファイルヘッダの生成
143$
144$FILE "offset.h"$
145/* offset.h */$NL$
146$NL$
Note: See TracBrowser for help on using the repository browser.