當前位置:首頁 » 編程軟體 » acc編譯

acc編譯

發布時間: 2022-04-12 20:08:55

❶ 單片機 匯編指令 ACC

cpl
bit
它的功能:直接定址位取反
,cpl

編譯模式控制位,它表示在相對直接定址時採用哪種指針。當cpl=0時,使用頁
指針dp;當cpl=1時,使用堆棧指針sp

❷ 編譯原理問題,高手進。

回答下列問題:(30分)
(6分)對於下面程序段
program test (input, output)
var i, j: integer;
procere CAL(x, y: integer);
begin
y:=y*y; x:=x-y; y:=y-x
end;
begin
i:=2; j:=3; CAL(i, j)
writeln(j)
end.
若參數傳遞的方法分別為(1)傳值、(2)傳地址,(3)傳名,請寫出程序執行的輸出結果。
答: (1) 3 (2) 16 (3) 16 (每個值2分)

(6分)計算文法G(M)的每個非終結符的FIRST和FOLLOW集合,並判斷該文法是否是LL(1)的,請說明理由。
G(M):
M → TB
T → Ba |
B → Db | eT |
D → d |

解答:
計算文法的FIRST和FOLLOW集合:(4分)
FIRST(M) = { a,b,e,d, } FIRST(T) = { a,b,e,d, }
FIRST(B) = {b,e,d, } FIRST(D) = {d,}
FOLLOW (M) = {#} FOLLOW (T) = { a,b,e,d,#}
FOLLOW (B) = {a,# } FOLLOW (D) = { b}

檢查文法的所有產生式,我們可以得到:
1. 該文法不含左遞歸,
2. 該文法中每一個非終結符M,T,B,D的各個產生式的候選首符集兩兩不相交。
3. 該文法的非終結符T、B和D,它們都有候選式,而且
FIRST(T)∩FOLLOW(T)={ a,b,e,d }≠
所以該文法不是LL(1)文法。(2分)

(4分)考慮下面的屬性文法
產 生 式 語 義 規 則
S→ABC

A→a
B→b
C→c B.u := S.u
A.u := B.v + C.v
S.v := A.v
A.v :=3*A.u
B.v := B.u
C.v := 1
畫出字元串abc的語法樹;
對於該語法樹,假設S.u的初始值為5,屬性計算完成後,S.v的值為多少。
答:(1) (2分)

(2) S.v的值為18 (2分)

(4分)運行時的DISPLAY表的內容是什麼?它的作用是什麼?
答:DISPLAY表是嵌套層次顯示表。每當進入一個過程後,在建立它的活動記錄區的同時建立一張嵌套層次顯示表diaplay.假定現在進入的過程層次為i,則它的diaplay表含有i+1個單元,自頂向下每個單元依次存放著現行層、直接外層、…、直至最外層(主程序,0層)等每層過程的最新活動記錄的起始地址。通過DISPLAY表可以訪問其外層過程的變數。

(5分)對下列四元式序列生成目標代碼:
A:=B*C
D:=E+A
G:=B+C
H:=G*D
其中,H在基本塊出口之後是活躍變數, R0和R1是可用寄存器。
答: 目標代碼序列
LD R0 B
MUL R0 C
LD R1 E
ADD R1 R0
LD R0 B
ADD R0 C
MUL R0 R1
ST R0 H

(5分)寫出表達式a+b*(c-d)對應的逆波蘭式、三元式序列和抽象語法樹。
答:
逆波蘭式:(abcd-*+) (1分)
三元式序列: (2分)
OP ARG1 ARG2
(1) - c d
(2) * b (1)
(3) + a (2)
抽象語法樹:(2分)

(8分)構造一個DFA,它接受={a,b}上所有包含ab的字元串。
答:
(2分)構造相應的正規式:(a|b)*ab(a|b)*

(3分)
a a

a b
b b

(3分)確定化:
I
{0,1,2} {1,2,3} {1,2}
{1,2,3} {1,2,3} {1,2,4,5,6}
{1,2} {1,2,3} {1,2}
{1,2,4,5,6} {1,2,3,5,6} {1,2,5,6}
{1,2,3,5,6} {1,2,3,5,6} {1,2,4,5,6}
{1,2,5,6} {1,2,3,5,6} {1,2,5,6}
b b
b a
a a a a

a b b
b

最小化:
{0,1,2} {3,4,5}
{0, 2},1, {3,4,5}

(6分)寫一個文法使其語言為L(G)={anbncm| m,n≥1,n為奇數,m為偶數}。
答:
文法G(S):

(8分)對於文法G(S):

1. 寫出句型b(Ma)b的最右推導並畫出語法樹。
2. 寫出上述句型的短語,直接短語和句柄。
答:
1. (4分)

2. (4分)
短語: Ma), (Ma), b(Ma)b
直接短語: Ma)
句柄: Ma)

(12分)對文法G(S):
S → a | ^ | (T)
T → T,S | S
(1) 構造各非終結符的FIRSTVT和LASTVT集合;
(2) 構造算符優先表;
(3) 是算符優先文法嗎?
(4) 構造優先函數。
答:
(1) (4分)

(2) (4分)
a ^ ( ) ,
a > >
^ > >
( < < < = <
) > >
, < < < > >

(3) 是算符優先文法,因為任何兩個終結符之間至多隻有一種優先關系。 (1分)

(4) 優先函數(3分)
a ^ ( ) ,
F 4 4 2 4 4
G 5 5 5 2 3

(8分)設某語言的do-while語句的語法形式為
S do S(1) While E
其語義解釋為:

針對自下而上的語法分析器,按如下要求構造該語句的翻譯模式,將該語句翻譯成四元式:
(1) 寫出適合語法制導翻譯的產生式;
(2) 寫出每個產生式對應的語義動作。
答:(1). 適合語法制導翻譯的文法(4分)
G(S):
R do
UR S(1) While
SU E
(2). (4分)
R do
{ R.QUAD:=NXQ }

UR S(1) While
{ U.QUAD:=R.QUAD;
BACKPATCH(S.CHAIN, NXQ) }

SU E
{ BACKPATCH(E.TC, U.QUAD);
S.CHAIN:=E.FC }

答案二:
(1) S do M1 S(1) While M2 E
M ε (4分)
(2) M ε { M.QUAD := NXQ } (4分)
S do M1 S(1) While M2 E
{
BACKPATCH(S(1).CHAIN, M2.QUAD);
BACKPATCH(E.TC, M1.QUAD);
S.CHAIN:=E. FC
}

(10分)將語句
while C>0 do if A B=0 then C:=C+D else C:=C*D
翻譯成四元式。
答:
100 (j>, C, 0, 102)
101 (j, -, -, 112)
102 (jnz, A, -, 106)
103 (j, -, -, 104)
104 (j=, B, 0, 106)
105 (j, -, -, 109)
106 (+, C, D, T1)
107 (:=, T1, -, C)
108 (j, -, -, 100)
109 (*, C, D, T2)
110 (:=, T2, -, C)
111 (j, -, -, 100)
112

(10分)設有基本塊如下:
T1:=3
T2:=A*B
T3:=9+T1
M:=A*B
T4:=C-D
L:=T3*T4
T2:=C+D
N:=T2
畫出DAG圖;
設L,M,N 是出基本塊後的活躍變數,請給出優化後的四元式序列。
答:

1. (6分)
L

*
T2,M T4 T2,N

* - +

T1 T3
3 A B 12 C D

2. (4分)
M:=A*B
S1:=C-D
L:=12*S1
N:=C+D

(8分)文法G(S)及其LR分析表如下,請給出串baba#的分析過程。
(1) S → DbB (2) D → d (3) D → ε
(4) B → a (5) B → Bba (6) B → ε
LR分析表
ACTION GOTO
b D a # S B D
0 r3 s3 1 2
1 acc
2 s4
3 r2
4 r6 S5 r6 6
5 r4 r4
6 s7 r1
7 S8
8 r5 r5
解答:
步驟 狀態 符號 輸入串
0 0 # baba#
1 02 #D baba#
2 024 #Db aba#
3 0245 #Dba ba#
4 0246 #DbB ba#
5 02467 #DbBb a#
6 024678 #DbBba #
7 0246 #DbB #
8 01 #S # acc
哈哈,估計認識!!

❸ 在51單片機中,需要使用命令將ACC的值寫入A嗎本人初學者。謝謝。

這是匯編指令才用到ACC和A,其實,就是一個累加器A,只是在不同的指令中寫法不同。ACC是屬於直接定址指令,例如:MOV ACC , #10H ,這里的ACC是按物理E0H地址來定址的,與MOV 0E0H , #10H 指令的定址方式相同的,這指令編譯後是3個位元組。這指令的功能是把立即數送到累加器A中。
所以,這種寫法很少。而通常都寫成A,這是匯編指令中使用率最高的指令了,這是寄存器定址。而且匯編指令中針對A 的指令也是最多的。
同樣,用指令 MOV A , #10H,也是把立即數送到累加器A 中,可以編譯後是兩個位元組。
回到你的提問上來:需要使用命令將ACC的值寫入A嗎?
那就是:MOV A , ACC,很顯然是毫無意義的,就是把累加器的值再送回給自己,有意思嗎?
但,ACC的寫法還是有用的,對於累加器的8個位定址時,需要這樣寫了
SETB ACC.1 ; 這是累加器A中第1位置1 , ACC.0是最低位
CLR ACC.0 ;這是累加器A中第0位清0, 就是最低位清0
如果寫成: SETB A.1
CLR A.4
這就是錯誤了.

❹ C51將C代碼匯編有ADD A , ACC 怎麼回事

A與ACC都代表累加器,同一地址,但是在匯編里,寫法A與ACC擁有不同的含義
A是包含在指令里的,指令碼不同;而ACC卻是作為操作數出現,代表地址
就相當於匯編指令有,MOV A,Rn同時也有MOV direct,Rn等不同的指令
MOV A,R0 與 MOV ACC,R0就會生成上述兩種不同的機器碼,但是結果一樣

那麼就好理解了ADD A,ACC就使用指令ADD A,direct,direct就是ACC符號所表示的地址,也就是累加器自己相加,相當於X2,也就是左移

❺ 在51單片機中,A和ACC的具體的關系是什麼呢

A和ACC的實質是一樣的,對應地址都是0E0H,
只是匯編在使用時,在格式上取了兩個名字。
你看看它們的使用方法,有的地方用A,有的地方用ACC,會發現有一定的規律。
當其要進行位表示時,必須用ACC,
比如要寫成ACC.7,而不能寫成A.7
但當其作為8位二進制數時,ACC和A都能用
但還是有區別
比如 INC ACC和INC A 都能用
還有PUSH ACC POP ACC也可以寫成PUSH A和POP A
當然,我們學匯編時,它主要是講了一個格式,可能書上只講到PUSH ACC,沒有講到PUSH A,沒講到並不代表它不能用。

❻ acc和gcc編譯動態庫的區別

編譯動態庫時,acc使用-b開關,gcc使用-share開關,acc使用-AA開關編譯標准c++代碼,-mt加入多線程鏈接,gcc使用-pthread開關,acc使用+Markered開關編譯出cpp文件所需的頭文件,並以xxx.d文件形式存放,acc和gcc的共同的開關有-I加入頭文件目錄,-l開關加入依賴的動態庫鏈接,-L開關加入動態庫搜尋的路徑,-o開關輸出目標文件,-g開關加入調試信息,-w開關加入警告級別。在64位的機器上,acc使用+DD32開關編譯32位程序,gcc使用-milp32編譯32位程序,此外,在64位機器上,默認是編譯32位的程序。

❼ 關於accecc2013VBA做登陸窗口問題,系統提示第9行編譯錯誤,請各位大神幫忙看看

在這一行中的逗號寫成中文的逗號了,改成英文的逗號就OK了

ps =DLookup("UPasswd","user",Cond) 改成
ps =DLookup("UPasswd","user",Cond)

❽ 有關編譯原理

⑴拓廣文法 1 分
G[S ′ ]: S ′→ S ⑴
S → SaA ⑵ S → a ⑶ A → AbS ⑷ A → b ⑸
該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA :

⑵ 該文法的 LR(0) 分析表:
狀態 ACTION GOTO
a b # S A
0 S 2 1
1 S 3 acc
2 r 3 r 3 r 3
3 S 5 4
4 r 2 r 2 /S 6 r 2
5 r 5 r 5 r 5
6 S 2 7
7 r 4 /S 3 r 4 r 4
⑶ LR(0) 文法:該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA 中沒有沖突狀態。
該文法不是 LR(0) 文法
因為存在沖突狀態: I 4 和 I 7
⑷ SLR(1) 文法:該文法的以 LR(0) 項目集為狀態的識別規范句型活前綴的 DFA 中有沖突狀態,沖突可用 FOLLOW 集解決。
該文法不是 SLR(1) 文法。
因為 FOLLOW(S)={a,b,#} ,所以無法解決沖突

❾ c51程序 關於ACC累加器的使用

我也曾遇到你說的這個問題,巧的很,也是寫DS1302的程序,我覺得與ACC關系不大。因為
我當時並沒有使用ACC的位變數,而是你第二種方式(temp&0x01)。當用for(i=0;i<8:i++)時就是不行(怕寫錯,反復寫了幾次,都不行),只有改為for(i=8;i>0:i--)時就正常。當時也是百思不得其解。當我把整個程序寫完以後,再回頭研究這個問題時,發現改為for(i=0;i<8:i++)時竟然又正常了。到現在我也不明白開始為何不行,也記不清其間又改動了什麼。
理論上講兩個應該完全等效。一般情況下效果應該完全相同。但我確確實是遇到上述現象,這也是我寫程序歷史唯一碰到的一次。
我後來在某些書上看到,使用for(i=8;i>0:i--)比for(i=0;i<8:i++)優化,速度也更快。
這里回答你,主要做個關注,看看有沒有人也遇到同樣的問題,並知道問題的所在。

補充:網上搜了一下,我更同意時序的觀點。供參考
http://bbs.21ic.com/icview-44006-1-1.html
另外,我覺得還可能與MCU 晶元有關,我出現問題時用的是STC89C52。你可以寫到華邦的78E51試試,因為我好幾次發現將文件寫到STC晶元有問題時,而華邦的晶元卻完全正常。

❿ HP-UNIX aCC編譯C++的問題,cin 整形變數輸入字元出現問題

在 使用cin之前 加 cin.clear(); 也可以加個檢測語句 if(!cin){cin.clear();}
或者分配內存 cin.getline()在 strtoi()自己從一行字元中獲取數字

熱點內容
解壓到當前文件夾右鍵 發布:2024-04-26 03:57:08 瀏覽:979
html5android教程視頻下載 發布:2024-04-26 03:09:59 瀏覽:867
伺服器的描述是什麼 發布:2024-04-26 03:08:32 瀏覽:394
個人加密 發布:2024-04-26 03:01:23 瀏覽:521
linuxusbgadget 發布:2024-04-26 02:52:54 瀏覽:304
我的世界空島世界伺服器地址 發布:2024-04-26 01:39:08 瀏覽:248
尼爾機械紀元加密 發布:2024-04-26 01:37:11 瀏覽:868
在控制台輸出sql語句 發布:2024-04-26 01:08:12 瀏覽:432
動畫java 發布:2024-04-26 01:02:40 瀏覽:12
得力文件夾5302 發布:2024-04-26 00:21:32 瀏覽:91