簡體   English   中英

混合C和匯編xcode-常量

[英]Mixing C and Assembly xcode - constants

在處理常量時,我​​在混合使用C和Assembly時遇到了一些問題。 我正在使用XCode 6.1。

例如,我有以下程序集文件:

    .section __DATA,__data,regular
    .globl  _memLoc
    .globl  _myData

    _myData = 0x01234567  // <--- my constant

    .align  2

_memLoc:

    .long _myData

在這里,我正在生成一個4字節的值,該值存儲在標記為_memLoc的存儲位置中。 我可以從C引用此內存位置:

extern uint32_t memLoc;
uint32_t *ptr = &memLoc;

檢查* ptr會產生預期的結果。 現在,我也想從C引用_myData,但是得到一個EXC_BAD_ACCESS。 我沒有運氣嘗試過這個:

extern uint32_t myData;
uint32_t value = myData;

_memLoc和_myData之間的實際區別是什么? 這兩個符號均在組裝時創建並全局設置,但是對_myData的引用導致程序失敗。

我實際上在這里試圖做的是只定義一個常量,並使它可以從C和Assembly中訪問。 這有可能嗎?

原來答案比我想象的要簡單。 匯編程序確實可以識別預處理程序指令,因此我要做的就是將常量放入常規的.h文件中,並將其導入.s文件中:

#include "Myconstants.h"
...
_memLoc:
    .long MYCONSTANT

這個問題使我走上正軌。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM