討論區快速選單
知識庫快速選單
沒有人比Cloudera更了解大數據 Excel也能做到大數據分析? 政府補助!學嵌入式+物聯網
[ 回上頁 ] [ 討論區發言規則 ]
有沒有大大能將下列c轉assembly???
更改我的閱讀文章字型大小
作者 : eric8905(微笑向陽)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 上午 09:14:20
以下是c語言內容

float uVal;
int iVal,iExp,uExp;
BYTE uHbyte,uLbyte,bExp;

iVal = RoundTo((uVal/pow(2,uExp)),0);

以上範例是否有大大可以轉成assembly??

8051或PIC都可以0.0
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 上午 10:55:14
you may try to download free compiler that can compiles and edit C program and translate them into various target chips , such as 8051 ,pic , ... . the following are a free & small compiler - SDCC
http://sdcc.sourceforge.net/

and you try to find the options that can generates 8051, pic assembly codes and enable them.
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 上午 11:03:54
or visit this site for details
http://www.8051projects.net/
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 上午 11:11:53
http://mcu8051ide.sourceforge.net/
this is a free IDE that can take you edit c programs for various micro-controllers and it supports SDCC
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 上午 11:29:01
or this one is good for you , please visit this site - http://www.opensourcepic.com/ and download it
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 下午 12:01:48
你用c寫好之後,
編譯時加上除錯資訊的選項,
然後用除錯,單步執行,反組譯...(工具請自行搜尋)
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/13 下午 12:10:50
http://www.keil.com/c51/
keil C - uvision IDE . you may refer the following for debugging
http://www.engineersgarage.com/forums/8051/c-code-assembly-code
作者 : eric8905(微笑向陽)
[ 貼文 2 | 人氣 0 | 評價 0 | 評價/貼文 0 | 送出評價 0 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 08:56:22
感謝樓上各位大大的回答,

不過小弟需要將這個相關的運算式及其他應用加在現有的assembly架構上,所以沒辦法用C寫,

有聽到朋友說可以利用查表的方式,不過詳細怎麼寫並不清楚,

看有沒有大大能幫忙解答,謝謝!!
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 10:14:28
first , you may understand what is it and its functionality. please visit the following url for understanding its functionality .
http://www.codecogs.com/code/computing/io/format/roundto.php
http://stackoverflow.com/questions/5191235/why-is-the-result-of-roundto87-285-2-87-28

once you understood its functionality , you should write some codes in assembly for specific cpu.
But a fast way of programming , that is dis-assembly. To check your development environment options and try to enable it ( dissassembly option) and view its results. The following is for you reference. it is an example about converting C function to assembly codes.
http://en.wikibooks.org/wiki/X86_Disassembly/Calling_Convention_Examples

You should notice a major part is the function's name . for example , your function name is RoundTo and you should find its name in assembly codes. Then you may watch those codes were involved in it . They are body of it in assembly.
Once you knew them , you may copy them and embed your codes .
if you want to use look-up table methodology , you should its functionality and code some codes table for reference or look up. good luck :-)
作者 : sflam(Raymond)討論區板主 Visual C++ .NET卓越專家VC++一代宗師新手入門優秀好手資訊類作業求救頂尖高手C++一代宗師貼文超過4000則
[ 貼文 4945 | 人氣 9172 | 評價 32290 | 評價/貼文 6.53 | 送出評價 142 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 10:53:33
>以下是c語言內容
>
>float uVal;
>int iVal,iExp,uExp;
>BYTE uHbyte,uLbyte,bExp;
>
>iVal = RoundTo((uVal/pow(2,uExp)),0);
>
>以上範例是否有大大可以轉成assembly??
>
>8051或PIC都可以0.0

據我所知, 8051 及 PIC 都沒有內建浮點數類型, 及浮點運算指令. 所以單單 float 類型的格式就不是簡單的「轉」就能轉出來的.

自己去看看有多複雜吧:

http://www.mytutorialcafe.com/Microcontroller%20Math%20Floating%20Point.htm

http://www.microshadow.com/files/files8051/Float51.asm

幾乎所有的 embedded C compiler 都有自己的浮點數函式庫. 你用這些編譯器編譯, 得到的 assembler 也無法直接用, 因為真正的程式碼是在浮點數函式庫裡.

如果不用第三者的浮點數函式庫, 除非你簡化題目的需求, 否則這並沒你想像中那麼好做.

作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 11:22:43
http://wurstcaptures.untergrund.net/assembler_tricks.html
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 11:27:29
http://www.keil.com/support/docs/294.htm
http://picfloat.sourceforge.net/
http://www.keil.com/support/man/docs/armccref/armccref_cihbejbb.htm
作者 : ozzy123(ozzy) 資訊類作業求救卓越專家C++卓越專家貼文超過4000則人氣指數超過30000點
[ 貼文 4465 | 人氣 37262 | 評價 10860 | 評價/貼文 2.43 | 送出評價 49 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 上午 11:51:18
http://cs.smith.edu/~thiebaut/ArtOfAssembly/CH14/CH14-1.html
作者 : chiuinan2(青衫)討論區板主 Visual C++ .NET卓越專家VC++一代宗師Visual Basic優秀好手資訊類作業求救卓越專家一般曠世奇才程式設計甘苦談優秀好手C++ Builder優秀好手上班族的哈拉園地優秀好手C++頂尖高手Assembly優秀好手貼文超過3000則人氣指數超過150000點
[ 貼文 3732 | 人氣 170106 | 評價 34520 | 評價/貼文 9.25 | 送出評價 125 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/14 下午 07:48:46
>以下是c語言內容
>
>float uVal;
>int iVal,iExp,uExp;
>BYTE uHbyte,uLbyte,bExp;
>
>iVal = RoundTo((uVal/pow(2,uExp)),0);
>
>以上範例是否有大大可以轉成assembly??
>
>8051或PIC都可以0.0

你的assembly應該有支援浮點運算的相關函數吧, 不然這個函數轉成assembly就沒有意義了. 其實針對這個運算式, 是有很快的做法的.

這個算式的意義, 便是將uVal視同有號整數, 右移uExp個位元. 假設m是浮點數mantissa的值(mb個位元), e是浮點數exponent的值, 則:

iVal = (m >> (mb-e+uExp)) | (1 << (e-uExp));

其中位元左移或右移, 要看裡面運式的正負值而定. 以IEEE 32 bit浮點數格式而言 (sign bit + 8 bit exponent + 23 bit mantissa, exponent以7Fh為基準), C的寫法是 (假設int也是32 bit):

int v = *((int*)&uVal);
int e = (v >> 23)-0x7F;
int m = v & 0x7FFFFF;
int mb = 23;
e -= uExp;
if (mb >= e) iVal = m >> (mb-e);
else iVal = m << (e-mb);
if (e >= 0) iVal |= (1 << e);

這樣的C語言要翻成Assembly就很容易了. 至於overflow的問題, 就不討論了.
作者 : kib72377(史努比) Visual Basic卓越專家Assembly優秀好手Access頂尖高手貼文超過1000則
[ 貼文 1455 | 人氣 1891 | 評價 8600 | 評價/貼文 5.91 | 送出評價 31 次 ] 
[ 給個讚 ]  [ 給個讚 ]  [ 回應本文 ]  [ 發表新文 ]  [ 回上頁 ] [ 回討論區列表 ] [ 回知識入口 ]
2013/5/24 下午 10:16:34
查表法.
在高階的電腦尚先計算好,再代入單晶片程式中.
(寫在程式裡面給編譯器算也行)
 板主 : 徵求中
 > 組合語言 - 討論區
 - 最近熱門問答精華集
 - 全部歷史問答精華集
 - 組合語言 - 知識庫
  ■ 全站最新Post列表
  ■ 我的文章收藏
  ■ 我最愛的作者
  ■ 全站文章收藏排行榜
  ■ 全站最愛作者排行榜
  ■  月熱門主題
  ■  季熱門主題
  ■  熱門主題Top 20
  ■  本區Post排行榜
  ■  本區評價排行榜
  ■  全站專家名人榜
  ■  全站Post排行榜
  ■  全站評價排行榜
  ■  全站人氣排行榜
 請輸入關鍵字 
  開始搜尋
 
Top 10
評價排行
組合語言
1 H 2220 
2 liaoo 990 
3 青衫 970 
4 牧童哥 940 
5 史努比 920 
6 qq 480 
7 GHOST-JACKY 330 
8 ]CALL-151 310 
9 harrison 300 
10 掌握文武半邊天 280 
組合語言
  專家等級 評價  
  一代宗師 10000  
  曠世奇才 5000  
  頂尖高手 3000  
  卓越專家 1500  
  優秀好手 750  
Microsoft Internet Explorer 6.0. Screen 1024x768 pixel. High Color (16 bit).
2000-2018 程式設計俱樂部 http://www.programmer-club.com.tw/
0.09375