代碼:
.globl main
main:
mfspr 0, lr
clang 內部匯編器認為 lr 是一個符號,而不是一個暫存器:
$ clang --target=ppc32 regs.s -c; nm regs.o
U lr
00000000 T main
有誰知道發生了什么?
uj5u.com熱心網友回復:
%lr7c 08 02 a6 mflr 0根據使用結果llvm-objdump -d,沒有未決議的lr符號。
gcc -mregnames將 C 編譯為 PPC asm 使用如下名稱%r3:https ://godbolt.org/z/7dMnK74vc
Clang 不支持該選項;除非有一個名稱不同的類似選項,否則 clang 的 asm 輸出總是使用指令,如add 3, 3, 4僅使用數字。但是我猜clang / LLVM的匯編器支持與GAS相同的“符號”暫存器名稱,并且這些名稱以a開頭%,大概是為了將它們與符號區分開來。(與以數字開頭的方式相同,它們不能是符號。)
轉載請註明出處,本文鏈接:https://www.uj5u.com/net/411260.html
標籤:
上一篇:浮點運算式的匯編時求值
下一篇:匯編程式編譯的作業原理
