[問題] while(*p)是啥意思?

看板C_and_CPP (C/C++)作者 (沒有存在感的人)時間10年前 (2015/05/27 00:44), 編輯推噓7(7019)
留言26則, 10人參與, 最新討論串1/1
這是我在"一步步寫嵌入式操作系統"看到的: #define UFCON0 ((volatile unsigned int*)(0x50000020)) void helloworld(void) { const char *p = "helloworld\n"; while (*p) { *UFCON0 = *p++; }; while(1); } 請問這邊的while (*p)是啥意思? 還有為啥while結束要加;?(不是{}後不用加?) while(1)這邊不就是無線迴圈嗎? 這整個程式在幹嘛? PS: 我試著用gcc編譯過(main裏面呼叫這函式), 可是run不起來(Segmentation fault (core dumped)) 感謝。 -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 86.200.140.23 ※ 文章網址: https://www.ptt.cc/bbs/C_and_CPP/M.1432658685.A.B3D.html

05/27 00:54, , 1F
為甚麼不在你的板子上跑呢?
05/27 00:54, 1F

05/27 01:20, , 2F
我只是照著書做,可是跑不起來...
05/27 01:20, 2F

05/27 01:31, , 3F
字串最後會以0結尾,所以最後會while(0)而結束
05/27 01:31, 3F

05/27 02:15, , 4F
搞錯重點了吧.那只是用來呈現編譯操作的一段程式,內容不重要.
05/27 02:15, 4F

05/27 02:23, , 5F
我大概懂了,當*p有東西的時候while就會繼續
05/27 02:23, 5F

05/27 02:23, , 6F
可我不懂為何*UFCON0 = *p++;這行會導致Segmentation faul
05/27 02:23, 6F

05/27 02:24, , 7F
以c/c++的角度來看,這行出了啥事?
05/27 02:24, 7F

05/27 02:29, , 8F
應該是你跑程式的環境跟編譯的架構不同
05/27 02:29, 8F

05/27 02:35, , 9F
問題是我跑emulator也起不來~~
05/27 02:35, 9F

05/27 03:25, , 10F
架構不同,你的0x5000020在你的runtime不見得是合法
05/27 03:25, 10F

05/27 03:25, , 11F
你要查一下板子的驅動配給你的是哪個虛擬位置
05/27 03:25, 11F

05/27 03:26, , 12F
也有一種可能是你板子先導驅動忘了跑....
05/27 03:26, 12F

05/27 04:29, , 13F
看一下你抄來這段程式, 即原書代碼2-1, 原文緊接著的段落,
05/27 04:29, 13F

05/27 04:34, , 14F
就說明該位址, 是 s3c2410這塊板子的 串口FIFO寄存器地址 了.
05/27 04:34, 14F

05/27 04:42, , 15F
不知你的 emulator 是什麼硬體的 emulator ?
05/27 04:42, 15F

05/27 09:22, , 16F
05/27 09:22, 16F

05/27 10:40, , 17F
... 會出現Segmentation Fault 代表你是在Linux下面吧?
05/27 10:40, 17F

05/27 10:44, , 18F
你的 emulator 也還是可能和書上的不同啊...
05/27 10:44, 18F

05/27 15:38, , 19F
我用qemu-arm,請問要如何看記憶體位置合不合法?
05/27 15:38, 19F

05/27 17:56, , 20F
應該要完全模擬那塊板子吧
05/27 17:56, 20F

05/27 17:56, , 21F
要再沒作業系統下跑嗎?
05/27 17:56, 21F

05/27 19:40, , 22F
要模擬raspberry pi的話要怎麼看?(抱歉我初學)
05/27 19:40, 22F

05/27 20:17, , 23F
感謝descent的連結,了了
05/27 20:17, 23F

05/27 20:32, , 24F
WY大和su大突破盲點了...
05/27 20:32, 24F

05/28 15:26, , 25F
http://goo.gl/tHcssJ for raspberry pi
05/28 15:26, 25F

05/31 16:19, , 26F
感謝
05/31 16:19, 26F
文章代碼(AID): #1LPABziz (C_and_CPP)
文章代碼(AID): #1LPABziz (C_and_CPP)