亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频

? 歡迎來到蟲蟲下載站! | ?? 資源下載 ?? 資源專輯 ?? 關于我們
? 蟲蟲下載站

?? vivi的代碼問題.txt

?? linux的啟動程序vivi的代碼問題
?? TXT
?? 第 1 頁 / 共 2 頁
字號:
#endif 

#if 0 
@ SVC 
mrs r0, cpsr 
bic r0, r0, #0xdf 
orr r1, r0, #0xd3 
msr cpsr_all, r1 
#endif 

@ set GPIO for UART 
mov r1, #GPIO_CTL_BASE 
add r1, r1, #oGPIO_H 
ldr r2, gpio_con_uart 
str r2, [r1, #oGPIO_CON] 
ldr r2, gpio_up_uart 
str r2, [r1, #oGPIO_UP] 
bl InitUART 

#ifdef CONFIG_DEBUG_LL 
@ Print current Program Counter 
ldr r1, SerBase 
mov r0, #'\r' 
bl PrintChar 
mov r0, #'\n' 
bl PrintChar 
mov r0, #'@' 
bl PrintChar 
mov r0, pc 
bl PrintHexWord 
#endif 


#ifdef CONFIG_BOOTUP_MEMTEST 
@ simple memory test to find some DRAM flaults. 
bl memtest 
#endif 

#ifdef CONFIG_S3C2410_NAND_BOOT 
bl copy_myself 

@ jump to ram 
ldr r1, =on_the_ram 
add pc, r1, #0 
nop 
nop 
1: b 1b @ infinite loop 

on_the_ram: 
#endif 

#ifdef CONFIG_DEBUG_LL 
ldr r1, SerBase 
ldr r0, STR_STACK 
bl PrintWord 
ldr r0, DW_STACK_START 
bl PrintHexWord 
#endif 

@ get read to call C functions 
ldr sp, DW_STACK_START @ setup stack pointer 
mov fp, #0 @ no previous frame, so fp=0 
mov a2, #0 @ set argv to NULL 

bl main @ call main 

mov pc, #FLASH_BASE @ otherwise, reboot 

@ 
@ End VIVI head 
@ 
下面有幾個問題請教你。 
1、 
按照一般的彙編格式(應該是x86,以前就接觸過x86的),一般是定義數據段、代碼段,然後是start,。。。。。。,最後以end start結束。我看上面這段代碼並沒有遵循這種格式,不知其格式是不是跟x86是不一樣的?它的格式具體是如何? 
2、 
程序中有如下代碼: 
@ VIVI magics 
@ 

@ 0x20: magic number so we can verify that we only put 
.long 0 
@ 0x24: 
.long 0 
@ 0x28: where this vivi was linked, so we can put it in memory in the right place 
.long _start 
@ 0x2C: this contains the platform, cpu and machine id 
.long ARCHITECTURE_MAGIC 
@ 0x30: vivi capabilities 
.long 0 
是不是在定義幾個數據?.long是不是定義長整型數據? 
3、 
對於arm來說是基於流水線形式工作,指令存在「裝入空當」(Load Delay Slot)問題,gcc編譯器是不是可以對基於ARM的指令進行響應的優化操作? 
4、 
程序中 
ENTRY(_start) 
ENTRY(ResetEntryPoint) 
是不是作為程序的入口?對於ENTRY的具體用法如何? 
不好意思,問題有可能問的有些菜。謝謝。 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


1。這個問題實際上比較簡單。據我所知arm上的bootloader一般都是先編譯成elf格式,然後用arm-linux-objcopy變成raw binary格式。raw binary格式其實就是一種平面格式,它會將elf中需要保留的section予以保留。其中數據節和代碼節是需要保留的。但是正如你所說,一般linux上的彙編源文件都不是按照標準的數據節,代碼節的規範寫,這就造成編譯器會從頭到尾的認為這個彙編程序就是一個代碼節。因此向這樣的代碼: 

@ 0x1c: FIQ(Fast Interrupt Request) exception 
FIQEntryPoint: 
b HandleFIQ 

@ 
@ VIVI magics 
@ 

@ 0x20: magic number so we can verify that we only put 
.long 0 
@ 0x24: 
.long 0 

raw binay文件中會把那兩個。long定義的數據當作機器指令排在b HandleFIQ 的機器指令之後。 
這種寫法好處就是不拘泥與格式,不用為內存分配考慮太多,頂多就是在類似.long這樣的數據聲明之前用絕對跳轉指令跳走就行了,儘管彙編器把.long當作代碼了,但是我們誰也不希望它會被執行吧(但是這種好處就是可以通過用數據的方式來表現機器指令,在x86的引導代碼中,就有一個地方是這麼做的)。如果你偏愛嚴格的節寫法,你可以在一開始就寫: 

.text 0 
直到遇到第一個數據聲明,這時用.data 0,然後再遇上第一個彙編代碼,寫.text 1。。。。。以此類推。 
像你說的start,。。。。。。,end start這些都是彙編偽指令,彙編語句本身就和彙編器的聯繫相當緊密,所以不同的彙編器都會實現類似的偽指令,但語法上可能並不相同。 

2。是在定義幾個數據 。.long嚴格說是字長,32位機是4字節;64位是8字節,這個你得info as,會有更詳細的說明(包括節的使用方法,原理等) 

3。 這個我就不懂了 ^^ 

4.是入口點,ENTRY最長用的語法就是這樣,括號中加一個符號名,不過往往都要配合ld鏈接腳本使用。參見info ld,你會獲得更詳細的說明 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


再次對growlanser表示感謝! 
我一直在找關於vivi裡彙編格式的資料,是不是看info AS就可以了?我手頭就有BSD的info AS,是不是一樣的? 
另外,對於ENTRY,代碼中 
ENTRY(_start) 
ENTRY(ResetEntryPoint) 
其中的_start是後面.long _start所定義的嗎? 
ResetEntryPoint呢?我在程序中沒找到。它是什麼意思? 






 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


不是,_start這個符號是在鏈接腳本中被賦值的,你需要看一下編譯vivi時用到的那個Makefile,其中應該有類似 ld -T XXXX。lds這樣的語句,其中-T就是指定使用的鏈接腳本的名字,那裡定義了_start真正的物理地址。至於.long _start ,這句話相當於把_start這個符號的值讀出來,然後把該值存在這個位置,供以後使用。 

ResetEntryPoint看字面意思就是復位以後的執行的位置吧,這個你得用grep去搜索了,另外同樣不要放過Makefile和鏈接腳本,ResetEntryPoint的信息可能也會在這兩個文件中提供。關於鏈接腳本的知識,得看info ld了 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


謝謝growlanser 

「至於.long _start ,這句話相當於把_start這個符號的值讀出來,然後把該值存在這個位置,供以後使用。 」 

這裡是指把_start的物理地址保存嗎?那這裡可以不保存,直接引用該值,它這麼做不是多此一舉了嗎? 



 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


1、 
程序中有如下代碼: 
LDR r3, =0x8000000 
請問=在這裡的作用是什麼,是不是把0x8000000變成地址,上面的代碼意思是不是把0x8000000里面的內容存入r3中。 
2、 
是不是在gcc的彙編中可以採用一些C裡面約定的運算符,比如>> ,|等。 




 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


建議看一下<<arm 體系結構與編程>> 這本書,裡面講得很清楚 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


你問的是很基本的問題,你可以通過看書來更快的掌握,不用在論壇等人回答這麼辛苦。 

arm architechure reference,用google搜索一下,很多地方都有的。 

info as , info ld 看一下彙編器和鏈接器的文檔,那些什麼 .long 的你就明白了。 

good luck 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


謝謝答覆。 
我也在看這本書,但是裡面滿多的格式和vivi裡面的是不一樣的。我主要是為了確認這些不同的地方。現在發現好多的編寫格式,搞得我暈頭啊。 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


謝謝你的指點。 


 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


請growlanser幫忙指點。謝謝 
1、 
程序中有如下代碼: 
LDR r3, =0x8000000 
請問『=』在這裡的作用是什麼,是不是把0x8000000變成地址,上面的代碼意思是不是把0x8000000里面的內容存入r3中。 
2、 
是不是在gcc的彙編中可以採用一些C裡面約定的運算符,比如>> ,|等。 



 
  Re: 請問linux的啟動程序vivi的代碼問題。  
 


1。 出於編程方便的考慮,你在寫彙編的時候允許你只用一條指令就能將一個地址加載到指定的寄存器,但是你要以特殊的格式來寫,這樣編譯器才知道這個常數需要多條指令來處理,如果不以特殊格式寫,彙編器會報錯。這個特殊寫法就是常數前面的=. 

比如: 
ldr r2, =0xdeaddead 

這裡的r2將保存0xdeaddead這個值。 
你會說這樣作幹什麼。由於arm彙編訪內指令只有兩條,所以在對內存訪問的時候喜歡用基址+偏址的方式。比如你用了上面的ldr指令,緊接著你可能就要這麼用: 
ldr r3, [r2, #0x01] 
ldr r4, [r2, #0x02] 
ldr r5, [r2, #0x03] 
意思就是順次把0xdeaddead+1,+2,+3位置的寄存器或內存的值讀出來。這是一個習慣用法。 

你也可以一下彙編器究竟是怎麼處理ldr r2, =0xdeaddead的 

2. 
可以。 
ldr r2, =0xdeaddead >> 1這樣是允許的 

 

?? 快捷鍵說明

復制代碼 Ctrl + C
搜索代碼 Ctrl + F
全屏模式 F11
切換主題 Ctrl + Shift + D
顯示快捷鍵 ?
增大字號 Ctrl + =
減小字號 Ctrl + -
亚洲欧美第一页_禁久久精品乱码_粉嫩av一区二区三区免费野_久草精品视频
av在线不卡观看免费观看| 精品国产免费视频| 91麻豆精品91久久久久久清纯| 欧美大片在线观看一区二区| 亚洲日本在线看| 蜜桃精品视频在线| 99re这里只有精品首页| 欧美草草影院在线视频| 亚洲自拍偷拍麻豆| 成人黄色在线看| 欧美成人精品福利| 性感美女极品91精品| www.欧美精品一二区| 欧美精品一区二区久久久| 亚洲国产三级在线| 成人少妇影院yyyy| www国产成人| 日本不卡1234视频| 欧洲亚洲国产日韩| 国产精品嫩草久久久久| 精品亚洲国产成人av制服丝袜 | 亚洲人成在线播放网站岛国| 国产在线精品一区二区夜色| 91精品国产色综合久久不卡蜜臀| 亚洲午夜免费电影| 在线这里只有精品| 18成人在线观看| www.亚洲国产| 国产精品第四页| 波波电影院一区二区三区| 久久精品免视看| 国产精品一二三四区| 久久久精品综合| 国产乱码一区二区三区| 日韩欧美国产精品| 久久99国产精品久久99 | 婷婷一区二区三区| 欧美网站大全在线观看| 亚洲一区二区三区视频在线播放| 日本久久电影网| 亚洲一区二区三区在线看| 欧美性淫爽ww久久久久无| 亚洲精品成人悠悠色影视| 色综合婷婷久久| 亚洲综合一区二区三区| 欧美日韩一区小说| 日本欧美一区二区在线观看| 日韩欧美中文字幕公布| 国内外成人在线视频| 欧美韩日一区二区三区四区| 99在线视频精品| 亚洲综合色噜噜狠狠| 欧美夫妻性生活| 精品一区二区三区的国产在线播放| www激情久久| 色综合天天在线| 亚洲成人av一区| 日韩免费看的电影| 国产成人免费高清| 亚洲黄色av一区| 欧美一区二区三区白人| 国产精品一区免费视频| 一区在线中文字幕| 欧美日本一区二区三区四区| 精品亚洲国产成人av制服丝袜 | 777奇米成人网| 国产乱码一区二区三区| 一区二区日韩电影| 日韩精品中文字幕一区| 成人黄动漫网站免费app| 亚洲成人免费影院| 亚洲精品在线一区二区| 97久久人人超碰| 麻豆专区一区二区三区四区五区| 国产精品你懂的在线| 欧美日韩不卡一区| 国产精品一区久久久久| 亚洲v中文字幕| 欧美国产欧美亚州国产日韩mv天天看完整| 91免费观看在线| 激情伊人五月天久久综合| 夜夜嗨av一区二区三区网页| 精品成人私密视频| 欧美无砖砖区免费| 国产精品一区二区91| 亚洲丶国产丶欧美一区二区三区| 欧美国产激情二区三区 | 94-欧美-setu| 国产一区欧美日韩| 午夜视频在线观看一区| 国产精品素人一区二区| 日韩一级在线观看| 精品视频一区二区不卡| 99久久99久久精品国产片果冻 | 日本视频在线一区| 亚洲欧美日韩精品久久久久| 久久久精品2019中文字幕之3| 欧美精品在线视频| 色婷婷国产精品| 成人理论电影网| 国产激情视频一区二区三区欧美 | 精品视频全国免费看| 99r精品视频| 成人精品免费视频| 国产乱子伦一区二区三区国色天香| 午夜一区二区三区在线观看| 一区二区三区久久久| 亚洲人吸女人奶水| 国产精品久久久久影院| 国产偷国产偷精品高清尤物| 亚洲精品一线二线三线| 欧美一级片在线看| 欧美精品在线观看播放| 欧美日韩国产另类一区| 欧美亚洲日本国产| 欧美优质美女网站| 欧美亚洲一区三区| 欧美日韩亚洲高清一区二区| 欧美亚洲动漫精品| 欧美午夜一区二区| 欧美三级电影网| 777久久久精品| 日韩精品在线一区| 国产三级欧美三级| 欧美成人三级在线| 精品久久久网站| 久久婷婷国产综合国色天香| 久久这里只精品最新地址| 久久人人爽人人爽| 久久夜色精品国产噜噜av| 国产喂奶挤奶一区二区三区| 中文成人综合网| 亚洲免费电影在线| 午夜精品福利一区二区三区蜜桃| 日韩黄色小视频| 久久99国产精品久久99果冻传媒| 国产麻豆精品在线| 不卡视频在线看| 欧美性感一类影片在线播放| 欧美一二三四在线| 久久久久久久久97黄色工厂| 中文字幕一区二区在线播放 | 欧美国产一区视频在线观看| 成人欧美一区二区三区在线播放| 亚洲综合视频在线| 久久99精品久久久久久久久久久久| 国产黄人亚洲片| 91国产成人在线| 日韩免费在线观看| 国产精品国产自产拍高清av | 国内精品不卡在线| 99精品在线观看视频| 欧美日韩视频在线第一区| 久久综合999| 亚洲国产一二三| 国产精品一区二区在线看| 在线影院国内精品| 亚洲精品在线三区| 亚洲精品一二三四区| 经典一区二区三区| 色综合天天做天天爱| 欧美精品一区二区在线播放| 亚洲激情在线播放| 国产乱子轮精品视频| 欧美亚洲免费在线一区| 久久精品夜夜夜夜久久| 性久久久久久久久久久久| 国产成人精品亚洲777人妖| 欧美日本一道本| 亚洲欧美国产高清| 国产综合色精品一区二区三区| 欧美日韩综合色| **网站欧美大片在线观看| 久久精品国产秦先生| 欧洲一区二区av| 国产精品国产自产拍在线| 国产在线国偷精品产拍免费yy| 欧美精品色一区二区三区| 国产精品大尺度| 国产成人8x视频一区二区| 91精品国产综合久久国产大片 | 中文字幕免费在线观看视频一区| 日本不卡免费在线视频| 在线免费观看日本欧美| 国产日韩精品一区二区浪潮av| 蜜桃视频在线观看一区| 欧美亚洲一区三区| 亚洲三级在线播放| av电影一区二区| 图片区日韩欧美亚洲| 成人美女视频在线观看18| 精品国产91乱码一区二区三区| 日本va欧美va瓶| 91精品国产色综合久久ai换脸| 亚洲国产成人精品视频| 在线免费观看一区| 玉米视频成人免费看| 色激情天天射综合网| 亚洲天堂精品视频| 色呦呦一区二区三区|