答案是可以,只要加乙個型別強制轉換,比如定義了 int * p; 可以接著 p=(int*) 0x04;
此時我又想,那麼可以把乙個存著位址的變數直接賦給指標嗎?
直接賦當然不可以,那麼強制型別轉換呢,於是有了以下**:
int temp=0x02;
char * p;
p=(char*)temp;
這樣可以嗎?
可以,但是編譯後警告:cast to pointer from integer of different size
我的電腦是64位的,也就是指標的長度是64位的,而編譯器對 int 的編譯是32位,所以會警告大小不一致(integer of different size)
解決辦法有兩個:
(1)弄清楚你的處理器是多少位定址,從而定義大小一致的變數,比如本例應該定義 long long int temp;
(2)使用 intptr_t 型別,intptr_t 是為指標量身定做的,也就是說該型別會隨處理器的位數不同而不同,比如32位平台上是#define int intptr_t ,而64位平台是#define long long int intptr_t
**:
深入理解立即數與直接定址
1 匯程式設計序把任何不以0x開頭的數字當做十進位制整數 2 組合語言包含兩種型別的語句,分別對應兩種型別的位模式。助記符語句對應指令位模式,偽操作對應資料位模式!3 block 命令後面跟乙個常量,然後產生這個常量位元組的儲存空間 block 2 命令,生成乙個2位元組的儲存塊 4 word命令也...
關於立即數
在彙編時,我們常會用到立即數。但是立即數是有條件限定的 當乙個數小於255不用判斷,它是立即數。當大於255時 把資料轉換成二進位制形式,從低位到高位寫成4位 1組的形式。if count of 1 8 isnotimmediate else 解決老是需要判斷的方案 我們在arm彙編中如何規避立即數...
直接定址 間接定址 立即定址
一 前言 直接定址 間接定址 立即定址,只是cpu在通過匯流排與記憶體互動時的不同互動方法,而產生的三種概念詞!對於這些定址方式,很多人沒有聽說過,但是對於學習彙編的同學來說,非常熟悉,很多書中都有提到過這幾種定址方式,但是沒有細說,這裡來給大家詳細介紹一下這三種定址方式的不同體現在 二 直接定址 ...