![](/img/trans.png)
[英]ARM GCC + Cortex M4: Calling address as function generates BLX instead of BL
我為 CortexM4 CPU 構建了盡可能少的操作系統,它能夠通過 UART 接收編譯的二進制文件並動態調度它們。 我想使用該功能來制作一個測試套件,該測試套件上傳測試程序能夠直接調用操作系統功能,如 memory 分配,而無需執行 SVC。 因此,我需要將這些操作系統例程的固定地址轉換為 fu ...
[英]ARM GCC + Cortex M4: Calling address as function generates BLX instead of BL
我為 CortexM4 CPU 構建了盡可能少的操作系統,它能夠通過 UART 接收編譯的二進制文件並動態調度它們。 我想使用該功能來制作一個測試套件,該測試套件上傳測試程序能夠直接調用操作系統功能,如 memory 分配,而無需執行 SVC。 因此,我需要將這些操作系統例程的固定地址轉換為 fu ...
[英]Php thumb not show image
我無法解決這個問題。 有時我的網頁上列出的圖片有時會出現此錯誤。 我的代碼 在此處輸入圖像描述我嘗試了一些其他縮略圖版本但沒有用。 ...
[英]ARM Thumb GCC Disassembled C. Caller-saved registers not saved and loading and storing same register immediately
上下文:STM32F469 Cortex-M4 (ARMv7-M Thumb-2),Win 10,GCC,STM32CubeIDE; 學習/嘗試內聯匯編和讀取反匯編、堆棧管理等,寫入核心寄存器,觀察寄存器內容,檢查堆棧指針周圍的 RAM 以了解其工作原理。 我注意到,在某些時候,當我調用 funct ...
[英]Troubling displaying bitmap background using libnds
我在獲取 16 位(ARGB、1 位 alpha、5 位顏色通道)bitmap 圖像時遇到了一些問題,我使用 GRIT 將其轉換為顯示。 我有以下圖片smpte_colour_bars.png 。 我使用以下命令行使用 GRIT 對其進行了轉換: grit smpte_colour_bars.png ...
[英]ARM7a instruction - there is no branch BX defined for an immediate (relative displacement), what is an alternative?
我正在修改一個匯編器/鏈接器以添加一個 ARM7a 后端。 為了與調用 (BL) 互通,有 BLX,所以如果我看到一個設置了 bit0 的全局符號,我知道將 BL 切換到 BLX 指令。 但是對於一個分支,沒有可用於立即(相對位移)的 BX,只有一個位於寄存器的地址。 我沒有看到單一的指令替代方 ...
[英]Why does GCC produce extra ADDS instruction after LDR for loading an .rodata pointer on ARM thumb instruction set?
這段代碼: const char padding[] = { 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, }; const char myTable[] = { 1, 2, 3, 4 }; int keepPadding() { return (int)(&paddi ...
[英]How does subtracting 0x1 - 0x80000000 cause an overflow?
運行此代碼后,將設置標志 N 和 Z。 現在,我知道如果運算結果為負,則設置 N 標志,當出現溢出時設置 Z 標志。 我不明白的是0x1 - 0x80000000是如何導致溢出的。 任何幫助表示贊賞! ...
[英]unshifted register required - Assembler throws error on the TST instruction
我目前正在將算法從 C 重寫為 arm 程序集(ARM Cortex M4 CPU)。 我的代碼有什么作用? 該算法將一個 8 位數字作為輸入,並從右邊開始告訴我們第一個為 0 的位是多少。以下是幾個示例: 輸入:B01111111 Output:7 輸入:B01110111 Output:3 輸入 ...
[英]How to set the instruction size (16 bit or 32 bit) for a function on ARM thumb?
ARM 有多個指令集:A32(32 位長指令)和混合長度 T32(32 位或 16 位長指令)。 T32 在 ArmV8 之前被稱為 Thumb。 雖然 16 位指令減少了代碼大小,但 32 位指令可以具有更高的性能。 根據https://developer.arm.com/documenta ...
[英]ARMv7 T3 encoding for adds
我不知道如何確定以下內容: i ,左邊第 10 位。 imm3 ,這個和 imm8 有什么區別? ...
[英]How to get qemu to run an arm thumb binary?
我正在嘗試學習 ARM 程序集的基礎知識,並編寫了一個相當簡單的程序來對數組進行排序。 我最初使用armv8-a選項組裝它並在qemu下運行程序,同時使用gdb進行調試。 這工作正常,程序初始化數組並按預期對其進行排序。 最終,我希望能夠為我的 Raspberry Pi Pico 編寫一些程序集, ...
[英]how arm-thumb instruction set's blx instruction support 4MB range
從https://www.keil.com/support/man/docs/armasm/armasm_dom1361289866046.htm中可以看到 arm-thumb 指令的blx指令可以支持最大 4MB 的跳轉范圍。 但據我所知,arm-thumb 指令只有 16 位長,那么 16 位怎 ...
[英]Understanding Cortex-M assembly LDR with pc offset
我正在查看這段 C 代碼的反匯編代碼: 該SW1=行的程序集是(抱歉無法復制代碼): https://imgur.com/dnPHZrd 以下是我的問題: 在第一行,PC = 0x00000A56,PC + 92 = 0x00000AB2,不等於 0x00000AB4,如圖所示。 為什么? 我對 ...
[英][android]use mediacodec and ffmpeg to generate .ts file, but the generated ts file has no image cover
我遇到了如下所述的問題; 我使用 android 框架的 Mediacodec API 從 opengl 紋理編碼相機預覽流,並希望生成一個 ts 文件; 由於 Mediacodec 不支持生成 ts 文件,所以我使用 ffmpeg 這樣做; 一切正常,ts文件生成成功,可以在我的android或電 ...
[英]clang links wrong ARM builtins in thumb mode
我正在嘗試使用 clang 13.0 構建 Cortex-M0(ARMv6,拇指)固件。 除了在 ARM 模式下的__udivsi3 、 __udivmoddi4等內置函數外,一切似乎都很好。 當然,CPU 只支持 thumb 並在嘗試執行它們時會出錯。 我知道這些函數是錯誤的,因為 CPU 故障, ...
[英]Can't replace MOVW / MOVT with LDR
我想用單個ldr指令替換這個movw / movt組合: 但是,在此更改后,代碼不再有效。 由於這是我唯一更改的部分,因此肯定有問題。 我的印象是這兩個代碼段是相同的。 匯編代碼頂部有以下說明 並使用GNU Arm 嵌入式工具鏈和以下命令編譯: 以防萬一,其余代碼與托管在此頁面(底部) ...
[英]Textblock over the elipse slider thumb - avoid resize of grid behind elipse when text is changing C# WPF
我想在橢圓滑塊拇指頂部使用滑塊的實際值來實現文本塊。 當 textblock 與 elipse 具有相同的寬度時,一切正常,但我需要增加 textblock 的寬度。 在 textloblock 的寬度發生變化后,橢圓的網格寬度也發生了變化,滑塊看起來不再合適。 文本塊寬度 = 橢圓寬度文本 ...
[英]Dynamic assembly in THUMB or ARM mode
據我所知,在 GNU 中,可以使用統一語法,有時會獲得 ARM 代碼以自動編譯為 Thumb 代碼。 在某些情況下,這可以在代碼密度方面產生令人印象深刻的收益,但在許多情況下,它只是不起作用,因為在 Thumb 模式下無法執行某些 ARM 指令。 我想要的是 GNU AS 在嘗試以 Thumb 模式 ...
[英]Is CMPS a valid ARM/THUMB instruction?
我知道CMP指令會更新條件標志。 在我大學的一些材料中,我看到了CMPS說明。 這對我來說似乎毫無意義,因為無論如何都設置了條件標志(我猜他們試圖混淆我們......)。 我想知道CMPS是否是一條有效指令,即標准 ARM 匯編程序是否接受它? 我在網上找不到有關此類說明的任何信息。 這里沒有提 ...
[英]Error: Thumb does not support conditional execution
我正在使用 Thumb 為 Cortex-M7 編寫程序集。 我正在使用 arm-gcc ,它會引發兩個錯誤。 錯誤:Thumb 不支持條件執行錯誤:IT 塊中不允許的指令 -- `pop {r0}' 我沒有看到這里出了什么問題,如果有人可以幫助我,我將不勝感激。 ...