麻豆一区二区三区蜜桃免费_中文字幕Va一区二区三区 _国产成人综合久久二区_丰满多毛的大隂户毛茸茸_国产麻豆剧果冻传媒免费老狼_无码人妻精品一区二区三区久久久 _亚洲中文无码精品卡通_蜜臀亚洲AV永久无码精品老司机

【方輝專欄】Armv7 M 架構(gòu)簡(jiǎn)介(四) --寄存器常見操作
發(fā)布時(shí)間:2022-10-14

摘要: 本文主要對(duì)Armv7-M架構(gòu)中指令集對(duì)寄存器中的值的操作行介紹。

關(guān)鍵字:Armv7-M架構(gòu)、按位邏輯運(yùn)算、移位、加法、減法、乘法、偽代碼描述


指令集對(duì)寄存器中的值提供如下操作。包括按位邏輯運(yùn)算、移位操作、加法、減法和乘法、這些操作的描述,在Arm7-M架構(gòu)手冊(cè)中都是用偽代碼形式來(lái)描述的。

在指令中會(huì)用到如下類型的位移和循環(huán)操作:


邏輯左移(LSL)

將寄存器中每一位向左移動(dòng)指定位數(shù),右端用零補(bǔ)齊。除非最后移除的一位被當(dāng)做輸出,否則移除的位被丟棄。

相應(yīng)偽代碼如下:

//需要輸出最后一位

//LSL_C()

(bits(N), bit) LSL_C(bits(N) x, integer shift)

assert shift > 0;

extended_x = x : Zeros(shift);

result = extended_x<N-1:0>;

carry_out = extended_x<N>;

return (result, carry_out);


//不需要輸出最后一位

//LSL()

(bits(N) LSL(bits(N) x, integer shift)

assert shift >= 0;

if shift == 0 then

result = x;

else

(result, -) = LSL_C(x, shift);

return result;


邏輯右移(LSR)

將寄存器中每一位向右移動(dòng)指定位數(shù),左端用零補(bǔ)齊。除非最后一位被當(dāng)做輸出,否則移除的位被丟棄。

相應(yīng)偽代碼如下:

//需要最后一位輸出

//LSR_C()


(bits(N), bit) LSR_C(bits(N) x, integer shift)

assert shift > 0;

extended_x = ZeroExtend(x, shift+N);

result = extended_x<shift+N-1:shift>;

carry_out = extended_x<shift-1>;

return (result, carry_out);


//不需要輸出最后一位

//LSR()

(bits(N) LSR(bits(N) x, integer shift)

assert shift >= 0;

if shift == 0 then

result = x;

else

(result, -) = LSR_C(x, shift);

return result;


算術(shù)右移(ASR)

將將寄存器中每一位向右移動(dòng)指定位數(shù),左端用零補(bǔ)齊。除非最后一位被當(dāng)做輸出,否則移除的位被丟棄。

相應(yīng)偽代碼如下:

//需要最后一位輸出

//ASR_C()

(bits(N), bit) ASR_C(bits(N) x, integer shift)

assert shift > 0;

extended_x = SignExtend(x, shift+N);

result = extended_x<shift+N-1:shift>;

carry_out = extended_x<shift-1>;

return (result, carry_out);


//不需要最后一位輸出

//ASR()

(bits(N) ASR(bits(N) x, integer shift)

assert shift >= 0;

if shift == 0 then

result = x;

else

(result, -) = ASR_C(x, shift);

return result;


循環(huán)右移(ROR)

將將寄存器中每一位向右移動(dòng)指定位數(shù),從右端移除的每個(gè)位在左端重新引入,最后輸出的一位可以作為輸出。

相應(yīng)偽代碼如下:

//需要最后一位輸出

//ROR_C()

(bits(N), bit) ROR_C(bits(N) x, integer shift)

assert shift != 0;

m = shift MOD N;

result = LSR(x,m) OR LSL(x,N-m);

carry_out = result<N-1>;

return (result, carry_out);


//不需要最后一位輸出

//ROR()

(bits(N) ROR(bits(N) x, integer shift)

if shift == 0 then

result = x;

else

(result, -) = ROR_C(x, shift);

return result;


帶擴(kuò)展位循環(huán)右移(RRX)

將將寄存器中每一位向右移動(dòng)一位,進(jìn)位輸入到左端。移除的右端可以作為輸出。

相應(yīng)偽代碼如下:

//需要最后一位輸出

//RRX_C()

(bits(N), bit) RRX_C(bits(N) x, bit carry_in)

result = carry_in : x<N-1:1>;

carry_out = x<0>;

return (result, carry_out);


//不需要最后一位輸出

//RRX()

(bits(N) RRX(bits(N) x, bit carry_in)

(result, -) = RRX_C(x, carry_in);

return result;


來(lái)源:《Armv7-M Architecture Reference Manual 》


+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++


關(guān)于億道電子

億道電子技術(shù)有限公司(英文名稱:Emdoor Electronics Technology Co.,Ltd)是國(guó)內(nèi)資深的研發(fā)工具軟件提供商,公司成立于 2002 年,面向中國(guó)廣大的制造業(yè)客戶提供研發(fā)、設(shè)計(jì)、管理過(guò)程中使用的各種軟件開發(fā)工具,致力于幫助客戶提高研發(fā)管理效率、縮短產(chǎn)品設(shè)計(jì)周期,提升產(chǎn)品可靠性。

20 年來(lái),先后與 Altium、ARM、Ansys、QT、Adobe、Visu-IT、Minitab、Testplant、EPLAN、HighTec、GreenHills、PLS、Ashling、MSC Software 、Autodesk、Source Insight、TeamEDA、MicroFocus等多家全球知名公司建立戰(zhàn)略合作伙伴關(guān)系,并作為他們?cè)谥袊?guó)區(qū)的主要分銷合作伙伴服務(wù)了數(shù)千家中國(guó)本土客戶,為客戶提供從芯片級(jí)開發(fā)工具、EDA 設(shè)計(jì)工具、軟件編譯以及測(cè)試工具、結(jié)構(gòu)設(shè)計(jì)工具、仿真工具、電氣設(shè)計(jì)工具、以及嵌入式 GUI 工具等等。億道電子憑借多年的經(jīng)驗(yàn)積累,真正的幫助客戶實(shí)現(xiàn)了讓研發(fā)更簡(jiǎn)單、更可靠、更高效的目標(biāo)。

歡迎關(guān)注“億道電子”公眾號(hào)

了解更多研發(fā)工具軟件知識(shí)