專(zhuān)利名稱(chēng):比較處理器指令集操作模式的調(diào)試電路的制作方法
技術(shù)領(lǐng)域:
本發(fā)明大體上涉及處理器的領(lǐng)域,且明確地說(shuō)涉及一種經(jīng)由調(diào)試電路來(lái)調(diào)試處理器上的代碼的系統(tǒng)和方法,其包含考慮處理器指令集操作模式。
背景技術(shù):
現(xiàn)代處理器是極其復(fù)雜的系統(tǒng)。大多數(shù)現(xiàn)代處理器采用管線(xiàn)結(jié)構(gòu),其中各具有多個(gè)執(zhí)行步驟的連續(xù)指令在執(zhí)行時(shí)重疊。許多稱(chēng)為"超標(biāo)量"處理器的處理器包含用于并行指令執(zhí)行的兩個(gè)或兩個(gè)以上單獨(dú)管線(xiàn)。為了避免管線(xiàn)中由于分支指令造成的停止,大多數(shù)處理器采用各種形式的分支預(yù)測(cè),其中當(dāng)分支被預(yù)測(cè)為被采取時(shí)推測(cè)性地取出指令和執(zhí)行指令。為了改進(jìn)性能,許多現(xiàn)代處理器將邏輯寄存器地址與相應(yīng)的物理存儲(chǔ)器存儲(chǔ)寄存器分離,這稱(chēng)為寄存器重命名。為了向程序提供無(wú)限、快速存儲(chǔ)器的錯(cuò)覺(jué),許多處理器在虛擬地址空間中執(zhí)行代碼,從而在數(shù)據(jù)遍歷存儲(chǔ)器層級(jí)(例如,寄存器、高速緩沖存儲(chǔ)器、主存儲(chǔ)器)時(shí)將地址轉(zhuǎn)譯為一個(gè)或一個(gè)以上物理地址空間。由于此復(fù)雜性,現(xiàn)代處理器內(nèi)的代碼執(zhí)行非常難以準(zhǔn)確地跟蹤和驗(yàn)證。明確地說(shuō),異常(anomaly)可能非常難以調(diào)試。
另外,在現(xiàn)代處理器上執(zhí)行的軟件本身極其復(fù)雜。隨著精簡(jiǎn)指令集計(jì)算(RISC)處理器結(jié)構(gòu)的出現(xiàn),大部分計(jì)算和邏輯計(jì)算復(fù)雜性從處理器指令遷移到優(yōu)化編譯器。也就是說(shuō),編譯器從相對(duì)較小的處理器指令集構(gòu)建復(fù)雜的操作,每一處理器指令均針對(duì)特定、具體功能而優(yōu)化。對(duì)于給定計(jì)算任務(wù),這導(dǎo)致更冗長(zhǎng)且復(fù)雜的指令序列,包含(例如)邏輯、算術(shù)、加載/存儲(chǔ)和分支操作。此復(fù)雜的代碼在錯(cuò)誤引起異常程序行為時(shí)可能難以調(diào)試。
為了輔助調(diào)試在復(fù)雜處理器上執(zhí)行的復(fù)雜代碼的使人畏縮的任務(wù),將調(diào)試工具構(gòu)建到許多處理器中。這些調(diào)試工具可包括用于識(shí)別特定指令和/或數(shù)據(jù)模式的地址和數(shù)據(jù)比較器。調(diào)試工具可額外包含地址范圍比較器,使得調(diào)試或追蹤可限于預(yù)定代碼段。其它調(diào)試工具可包含計(jì)數(shù)器、定序器等,以提供在指定條件(其指定斷點(diǎn)和/或追蹤觸發(fā))時(shí)的靈活性。追蹤信息可在芯片外提供,例如經(jīng)由專(zhuān)門(mén)總線(xiàn)提供,或可存儲(chǔ)在專(zhuān)門(mén)芯片上緩沖器中。斷點(diǎn)可觸發(fā)一個(gè)或一個(gè)以上外部信號(hào),例如以裝備和/或觸發(fā)邏輯分析器或照
5亮LED;可引起異常(exception),從而將代碼執(zhí)行分支到調(diào)試?yán)谐绦颍换蚩珊?jiǎn)單地暫停執(zhí)行,從而允許檢查各種寄存器和高速緩沖存儲(chǔ)器的內(nèi)容。用使對(duì)處理器性能和功率消耗的影響減到最小的方式,將這些在正常處理器執(zhí)行期間不予利用的調(diào)試工具設(shè)計(jì)到處理器電路中。
程序設(shè)計(jì)員可在根據(jù)相關(guān)指令集編碼執(zhí)行指令之前明確地設(shè)置正確的指令集操作模式。然而,錯(cuò)誤的軟件有時(shí)可能會(huì)分支到既定在處于一個(gè)指令集操作模式時(shí)執(zhí)行的特
定指令地址,而同時(shí)處理器實(shí)際上是處于某個(gè)其它指令集操作模式。在此情況下,處理器可能會(huì)試圖使用不正確的指令集解碼來(lái)執(zhí)行所述地址處的指令,從而導(dǎo)致不正確的結(jié)果。
舉例來(lái)說(shuō), 一些版本的ARM處理器結(jié)構(gòu)包含至少兩個(gè)指令集操作模式32位ARM模式和16位拇指(Thumb)模式。表1列舉ARM指令的代碼片斷
000096F0 cpy r4, r0
000096F4 bl 0xA8A0
000096FC cpy rl,r4
00009700 ldr r0,[r0,弁0x8]
表1: ARM模式指令編碼
表2列舉在拇指模式下解譯的相同代碼:
000096F0andr0, r0
000096F2b0x9A36
000096F4lslrl,r5,弁0x11
000096F6add. wr0,r0,r4,lsl #0x4
000096FAb0x9A犯
000096FClslrO,rl, #0x0
000096FEb0x9222
00009700andr0, r2
表2:拇指模式指令編碼
尤其注意96F2、 96FA及96FE處的分支指令。由于不正確的分支,可能難以確認(rèn)錯(cuò)誤導(dǎo)致在如表2中的拇指模式下解譯表1的ARM代碼的點(diǎn),且因此難以調(diào)試錯(cuò)誤。此困難之所以出現(xiàn),是因?yàn)楝F(xiàn)有技術(shù)調(diào)試電路不包含作為對(duì)觸發(fā)斷點(diǎn)、啟始追蹤等的邏輯的輸入的處理器指令集操作模式。
支持兩個(gè)或兩個(gè)以上操作"模式"(例如,管理員和用戶(hù)模式,或真實(shí)和受保護(hù)模式)的大多數(shù)處理器通過(guò)引起異常并分支到模式切換例行程序而在模式之間切換。通過(guò)設(shè)置斷點(diǎn)或在模式切換例行程序的指令地址上開(kāi)始追蹤而使用現(xiàn)有技術(shù)調(diào)試工具和軟件來(lái)容易地檢測(cè)此操作。在不引起異常的前提下切換指令集操作模式的處理器是難以用不包含作為觸發(fā)斷點(diǎn)、啟始追蹤等時(shí)的考慮因素的處理器指令集操作模式的現(xiàn)有技術(shù)調(diào)試工具診斷的代碼行為的一個(gè)實(shí)例。
發(fā)明內(nèi)容
根據(jù)一個(gè)或一個(gè)以上實(shí)施例,操作以執(zhí)行兩個(gè)或兩個(gè)以上指令集的處理器中的調(diào)試電路識(shí)別處理器從一個(gè)指令集操作模式切換成不同的指令集操作模式的地址,并輸出模式切換的警告或指示。所述警告或指示可包括暫停執(zhí)行的斷點(diǎn)信號(hào),且/或作為處理器的外部信號(hào)而輸出??深~外輸出處理器切換指令集操作模式的指令地址?;蛘撸鼍婊蛑甘究砂ㄩ_(kāi)始或停止追蹤操作、引起異常,或任何其它已知調(diào)試器功能。
一個(gè)實(shí)施例涉及一種在具有至少兩個(gè)不同指令集操作模式的處理器上調(diào)試包括多個(gè)指令的軟件代碼的方法。在執(zhí)行任何代碼指令之前接收目標(biāo)指令集操作模式。執(zhí)行代碼指令,且針對(duì)所執(zhí)行的每一指令,將當(dāng)前處理器指令集操作模式與目標(biāo)指令集操作模式進(jìn)行比較。如果當(dāng)前處理器指令集操作模式與目標(biāo)指令集操作模式匹配,則觸發(fā)警告。
另一實(shí)施例涉及一種在具有至少第一和第二指令集操作模式的處理器上執(zhí)行軟件的方法。識(shí)別處理器從第一指令集操作模式切換成第二指令集操作模式的地址,并響應(yīng)于所述識(shí)別而觸發(fā)警告。
又一實(shí)施例涉及一種操作以根據(jù)兩個(gè)或兩個(gè)以上指令集編碼執(zhí)行指令的處理器,每一指令集編碼處于不同的指令集操作模式。所述處理器包含當(dāng)前指令集操作模式指示符,和操作以存儲(chǔ)目標(biāo)指令集操作模式指示符的數(shù)據(jù)存儲(chǔ)位置。所述處理器還包含執(zhí)行單元,其操作以根據(jù)當(dāng)前指令集操作模式來(lái)執(zhí)行指令;以及比較電路,其操作以在執(zhí)行每一指令后將當(dāng)前指令集操作模式與目標(biāo)指令集操作模式進(jìn)行比較,并在當(dāng)前指令集操作模式與目標(biāo)指令集操作模式匹配的情況下輸出指示。
再一實(shí)施例涉及一種操作以執(zhí)行兩個(gè)或兩個(gè)以上指令集編碼的處理器,每一指令集編碼處于不同的指令集操作模式。所述處理器包含比較電路,其操作以檢測(cè)指令集操作模式的變化,并響應(yīng)于所述檢測(cè)而輸出指令集操作模式變化的指示和變化發(fā)生的指令地址。
圖1是處理器的功能方框圖。圖2是包含調(diào)試電路的處理器管線(xiàn)的功能方框圖。圖3是診斷/調(diào)試過(guò)程的流程圖。
具體實(shí)施例方式
圖1描繪處理器10的功能方框圖。處理器IO根據(jù)控制邏輯14在指令執(zhí)行管線(xiàn)12中執(zhí)行指令??刂七壿?4維持程序計(jì)數(shù)器(PC) 15,并設(shè)置或清除一個(gè)或個(gè)以上狀態(tài)寄存器16中的位以指示(例如)當(dāng)前指令集操作模式、關(guān)于算術(shù)運(yùn)算和邏輯比較的結(jié)果(零、進(jìn)位、相等、不相等)的信息等。在一些實(shí)施例中,管線(xiàn)12可以是具有多個(gè)并行管線(xiàn)的超標(biāo)量設(shè)計(jì)。管線(xiàn)12也可稱(chēng)為執(zhí)行單元。通用寄存器(GPR)堆20提供可由管線(xiàn)12存取且包括存儲(chǔ)器層級(jí)的頂部的寄存器。
在不同的指令集操作模式下執(zhí)行來(lái)自至少兩個(gè)指令集的指令的處理器10額外包含調(diào)試電路18,其操作以在執(zhí)行每一指令后將至少一預(yù)定目標(biāo)指令集操作模式與當(dāng)前指令集操作模式進(jìn)行比較,并提供兩者之間匹配的指示。下文更詳細(xì)描述調(diào)試電路18。
管線(xiàn)12從指令卨速緩沖存儲(chǔ)器(I-高速緩沖存儲(chǔ)器)26取出指令,其中存儲(chǔ)器地址轉(zhuǎn)譯和許可由指令側(cè)轉(zhuǎn)譯后備緩沖器(ITLB) 28管理。從數(shù)據(jù)高速緩沖存儲(chǔ)器(D-高速緩沖存儲(chǔ)器)30存取數(shù)據(jù),其中存儲(chǔ)器地址轉(zhuǎn)譯和許可由主轉(zhuǎn)譯后備緩沖器(TLB)32管理。在各種實(shí)施例中,ITLB 28可包括TLB 32的一部分的副本。或者,ITLB 28與TLB 32可整合。類(lèi)似地,在處理器IO的各種實(shí)施例屮,I-高速緩沖存儲(chǔ)器26與D-卨速緩沖存儲(chǔ)器30可整合或合并。I-高速緩沖存儲(chǔ)器26和/或D-高速緩沖存儲(chǔ)器30中的未中(miss)引起存儲(chǔ)器接口34存取主(芯片外)存儲(chǔ)器38、 40。存儲(chǔ)器接口 34可以是對(duì)總線(xiàn)互連42的主控輸入(master i叩ut),所述總線(xiàn)互連42實(shí)施到一個(gè)或一個(gè)以上存儲(chǔ)器裝置38、 40的共享總線(xiàn)。額外主控裝置(未圖示)可額外連接到總線(xiàn)互連42。
處理器10可包含輸入/輸出(I/O)接口 44,其可以是外圍總線(xiàn)上的主控裝置,I/O接口 44可跨所述外圍總線(xiàn)存取各種外圍裝置48、 50。所屬領(lǐng)域的技術(shù)人員將認(rèn)識(shí)到,處理器IO的許多變化是可能的。舉例來(lái)說(shuō),處理器10可包含用于I-高速緩沖存儲(chǔ)器26和D-高速緩沖存儲(chǔ)器30中的任一者或其兩者的二級(jí)(L2)高速緩沖存儲(chǔ)器。另外,處理器10中描繪的功能區(qū)塊中的一者或-者以上可從特定實(shí)施例中省略。可駐存在處理器10中的其它功能區(qū)塊(例如,JTAG控制器、指令預(yù)解碼器、分支目標(biāo)地址高速緩沖存儲(chǔ)器等)與本發(fā)明的描述沒(méi)有密切關(guān)系,且為了清楚起見(jiàn)而將其省略'
圖2描繪調(diào)試電路18的一個(gè)實(shí)施例的功能方框圖。調(diào)試電路18包含目標(biāo)指令集操作模式寄存器52、地址范圍開(kāi)始地址寄存器54和地址范圍結(jié)束地址寄存器56。程序設(shè)
8計(jì)員在診斷/調(diào)試操作之前經(jīng)由診斷軟件加載寄存器52、 54、 56。在每一指令的執(zhí)行期 間將寫(xiě)入到目標(biāo)指令集操作模式寄存器52的值與當(dāng)前處理器指令集操作模式進(jìn)行比較, 以觸發(fā)斷點(diǎn)、追蹤功能或其它警告。開(kāi)始地址寄存器54和結(jié)束地址寄存器5456的值分 別是調(diào)試電路18將監(jiān)視以尋找當(dāng)前指令集操作模式與目標(biāo)指令集操作模式之間的匹配 的H標(biāo)地址范圍的開(kāi)始和結(jié)尾。
所屬領(lǐng)域的技術(shù)人員將容易認(rèn)識(shí)到的是,調(diào)試電路18可包含額外可定制參數(shù)和額 外功能區(qū)塊,從而啟始斷點(diǎn)、追蹤等以在各種各樣的條件卜'進(jìn)行觸發(fā)。為了清楚起見(jiàn)已 從圖2省略了這些參數(shù)和區(qū)塊,但一般來(lái)說(shuō)其可包含此項(xiàng)技術(shù)中已知的所有調(diào)試電路參 數(shù)和功能性。
在診斷/調(diào)試運(yùn)行之前,程序設(shè)計(jì)員加載開(kāi)始地址寄存器54和結(jié)束地址寄存器56 以界定目標(biāo)地址范圍,其可從單個(gè)地址到被測(cè)試的代碼的整個(gè)地址范圍變動(dòng)。在其它實(shí) 施例中,可提供多個(gè)開(kāi)始和結(jié)束地址寄存器以界定多個(gè)目標(biāo)地址范圍。程序設(shè)計(jì)員額外 加載目標(biāo)指令集操作模式寄存器52。舉例來(lái)說(shuō),在完全在ARM模式下執(zhí)行代碼的ARM 處理器的情況下,例如,如果處理器10在拇指模式下在由寄存器54、 56界定的地址范 圍內(nèi)執(zhí)行指令,則程序設(shè)計(jì)員可在寄存器52中加載指示拇指模式的值,以設(shè)置引起調(diào) 試電路18暫停執(zhí)行的斷點(diǎn)。
在診斷/調(diào)試操作期間,在比較邏輯(例如,與門(mén)58)中將存儲(chǔ)在目標(biāo)指令集操作 模式寄存器52中的值與指示處理器10的當(dāng)前指令集操作模式的狀態(tài)寄存器位進(jìn)行比 較。舉例來(lái)說(shuō),在ARM處理器10中,可監(jiān)視當(dāng)前程序狀態(tài)寄存器(CPSR) 16的位5。 僅當(dāng)處理器10的當(dāng)前指令集操作模式與由目標(biāo)指令集操作模式寄存器52指示的指令集 操作模式匹配時(shí),才將斷S比較邏輯58的輸出60。
在處理器10在不同的指令集操作模式下執(zhí)行來(lái)自?xún)蓚€(gè)以上指令集的指令的實(shí)施例 中,目標(biāo)指令集操作模式寄存器52和CPSR (或其它狀態(tài)寄存器)16的模式指示符位 將包括多位值,且比較邏輯58可包含例如解碼器等額外電路。在各種實(shí)施例中,可利 用當(dāng)前指令集操作模式的其它指示(例如指令解碼邏輯的輸出)代替CPSR16。
同時(shí),在地址比較邏輯68中將PC 15的當(dāng)前值與地址范圍寄存器54、56進(jìn)行比較。 每當(dāng)PC 15的當(dāng)前值屬于冃標(biāo)地址范圍內(nèi)時(shí),斷言地址比較邏輯6S的輸出70。在各種 實(shí)施例中,"當(dāng)前"指令地址的指示可視要求或需要而不同于PC 15。舉例來(lái)說(shuō),地址比 較電路68町在管線(xiàn)12的解碼級(jí)、執(zhí)行級(jí)或任何其它管線(xiàn)級(jí)中比較指令的地址。另外, 可使用更動(dòng)態(tài)的地址,例如管線(xiàn)12中待交付執(zhí)行的最后指令的地址。
地址比較邏輯68的輸出70與指令集操作模式指示符比較邏輯58在與門(mén)72處進(jìn)行與運(yùn)算,以產(chǎn)生指示在目標(biāo)地址范圍內(nèi)發(fā)生的當(dāng)前指令集操作模式與目標(biāo)指令集操作模 式之間的日匹配(daymatch)的輸出20。在一個(gè)實(shí)施例中'提供輸出20作為對(duì)處理器 的輸出(見(jiàn)圖l)。此輸出20可裝備和/或觸發(fā)邏輯分析器,照亮LED,或觸發(fā)某一其它 動(dòng)作或警報(bào)。在一個(gè)實(shí)施例中,如圖1中所描繪,指令集操作模式匹配指示符輸出20 可包括對(duì)控制器14的輸入,以暫停處理器10的執(zhí)行。
在一個(gè)實(shí)施例中,指令集操作模式匹配指示符輸出20可初始化或終止指令追蹤操 作,其中追蹤信息引導(dǎo)到處理器10的輸出引腳或存儲(chǔ)在芯片上追蹤緩沖器(未圖示) 中。在一個(gè)實(shí)施例中,如圖2中所描繪,指令集操作模式匹配指示符輸出20可觸發(fā)指 令集操作模式匹配地址寄存器74,從而捕獲PC15的值,且因此捕獲可能在當(dāng)前指令集 操作模式與目標(biāo)指令集操作模式之間檢測(cè)到匹配的指令的地址。這可能在檢測(cè)從一個(gè)指 令集操作模式到另一指令集操作模式的變化時(shí)尤其有價(jià)值。此寄存器74的輸出76可路 由到處理器10的引腳以用于外部檢杳。
在一個(gè)實(shí)施例中,指令集操作模式匹配指示符輸出20可引起異常,從而將代碼執(zhí) 行分支到預(yù)定義的例行程序。此指令集模式匹配例行程序可(例如)讀取指令集操作模 式匹配地址寄存器74。 一般來(lái)說(shuō),指令集操作模式匹配指不符輸出20可視要求或需要 觸發(fā)仟何已知調(diào)試器操作。
圖3描繪根據(jù)本發(fā)明的一個(gè)或一個(gè)以上實(shí)施例調(diào)試代碼的方法。在方框78處開(kāi)始, 程序設(shè)計(jì)員初始化調(diào)試電路寄存器(方框80)。這可包括(例如)加載目標(biāo)指令集操作 模式寄存器52,以及通過(guò)加載開(kāi)始地址寄存器54和結(jié)束地址寄存器56而設(shè)置冃標(biāo)地址 范圍??梢曇蠡蛐枰跏蓟~外調(diào)試電路寄存器(未圖示)。
程序設(shè)計(jì)員接著開(kāi)始執(zhí)行待調(diào)試的代碼(方框82),從而在代碼序列中連續(xù)取出和 執(zhí)行下一指令(方框84)。不管地址如何,如果處理器10的當(dāng)前指令集操作模式不與程 序設(shè)計(jì)員在目標(biāo)指令集操作模式寄存器52中設(shè)置的指令集操作模式匹配(方框86),那 么取出和執(zhí)行下一指令(方框S4)直到待調(diào)試的代碼的結(jié)尾為止(方框88),在此情況 下方法在方框90處停止。
如果在執(zhí)行指令(方框84)后,指令地址在預(yù)定地址范圍內(nèi),且當(dāng)前指令集操作模 式與程序設(shè)計(jì)員在目標(biāo)指令集操作模式寄存器52中設(shè)置的指令集操作模式匹配(方框 86),那么調(diào)試電路斷言輸出20且可采取程序設(shè)計(jì)員指定的任何數(shù)冃的動(dòng)作。
舉例來(lái)說(shuō),調(diào)試電路輸出20可引起處理器IO采取異常,從而將代碼執(zhí)行分支到指 令集操作模式匹配例行程序(方框92)。調(diào)試電路輸出20可引起管線(xiàn)控制器14暫停執(zhí) 行(方框94),從而允許程序設(shè)計(jì)員檢査各種寄存器、高速緩沖存儲(chǔ)器線(xiàn)等的內(nèi)容。調(diào)試電路18可在外部斷言輸出20 (方框96),所述輸出20可用于使邏輯分析器待命或觸 發(fā)邏輯分析器、點(diǎn)亮LED等。調(diào)試電路18可額外輸出指令集操作模式匹配地址以用于 外部檢査(方框98)。調(diào)試電路18可開(kāi)始或停止追蹤操作(方框100)。盡管描繪為替 代方案,但在給定實(shí)施例中,調(diào)試電路18可執(zhí)行方框92-96中的兩者或兩者以上。 一般 來(lái)說(shuō),調(diào)試電路18可在已檢測(cè)到當(dāng)前指令集操作模式與目標(biāo)指令集操作模式之間的匹 配后采取此項(xiàng)技術(shù)中已知對(duì)在處理器IO上調(diào)試代碼有益的任何動(dòng)作。
如本文所使用,術(shù)語(yǔ)"指令集"是指處理器IO借以將指令數(shù)據(jù)(例如,I髙速緩沖 存儲(chǔ)器線(xiàn)的內(nèi)容)解譯為可執(zhí)行指令的編碼集。術(shù)語(yǔ)"指令集操作模式"是指處理器10 的根據(jù)特定指令集編碼來(lái)解譯指令數(shù)據(jù)的可識(shí)別的操作模式。明確地說(shuō),"指令集操作 模式"有別于與許可(例如,管理員與用戶(hù)模式)、存儲(chǔ)器尋址(例如,真實(shí)與受保護(hù) 模式)等有關(guān)的已知處理器操作"模式"。
盡管已相對(duì)于本發(fā)明的特定特征、方面和實(shí)施例描述本發(fā)明,但將明白,在本發(fā)明 的廣泛范圍內(nèi)可能有許多變更、修改和其它實(shí)施例,且因此所有變更、修改和實(shí)施例應(yīng) 視為在本發(fā)明的范圍內(nèi)。因此當(dāng)前實(shí)施例應(yīng)在所有方面解釋為說(shuō)明性而不是限定性的, 且希望在所附權(quán)利要求書(shū)的含義和等效范圍內(nèi)的所有變化均包含在其中。
1權(quán)利要求
1. 一種在具有至少兩個(gè)不同指令集操作模式的處理器上調(diào)試包括多個(gè)指令的軟件代碼的方法,其包括在執(zhí)行任何代碼指令之前接收目標(biāo)指令集操作模式;執(zhí)行代碼指令,且針對(duì)所執(zhí)行的每一指令,將當(dāng)前處理器指令集操作模式與所述目標(biāo)指令集操作模式進(jìn)行比較;以及如果所述當(dāng)前處理器指令集操作模式與所述目標(biāo)指令集操作模式匹配,則觸發(fā)警告。
2. 根據(jù)權(quán)利要求l所述的方法,其中所述警告包括暫停指令執(zhí)行。
3. 根據(jù)權(quán)利要求l所述的方法,其中所述警告包括控制追蹤操作。
4. 根據(jù)權(quán)利要求1所述的方法,其中所述警告包括引起異常。
5. 根據(jù)權(quán)利要求1所述的方法,其中所述警告包括輸出指示所述當(dāng)前處理器指令集操 作模式與所述目標(biāo)指令集操作模式之間的匹配的信號(hào)。
6. 根據(jù)權(quán)利要求1所述的方法,其中所述警告包括輸出所述當(dāng)前處理器指令集操作模 式與所述目標(biāo)指令集操作模式匹配所針對(duì)的指令的地址。
7. 根據(jù)權(quán)利要求l所述的方法,其進(jìn)一步包括在執(zhí)行任何代碼指令之前接收目標(biāo)地址范圍;針對(duì)所執(zhí)行的每一指令,將當(dāng)前指令地址與所述目標(biāo)地址范圍進(jìn)行比較;以及 僅在所述當(dāng)前處理器指令集操作模式與所述目標(biāo)指令集操作模式匹配且所述當(dāng) 前指令地址在所述目標(biāo)地址范圍內(nèi)的情況下,才觸發(fā)所述警告。
8. —種在具有至少第一和第二指令集操作模式的處理器上執(zhí)行軟件的方法,其包括識(shí)別所述處理器從所述第一指令集操作模式切換成所述第二指令集操作模式的 地址;以及響應(yīng)于所述識(shí)別而觸發(fā)警告。
9. 根據(jù)權(quán)利要求8所述的方法,其中所述警告包括暫停指令執(zhí)行。
10. 根據(jù)權(quán)利要求8所述的方法,其中所述警告包括控制追蹤操作。
11. 根據(jù)權(quán)利要求8所述的方法,其中所述警告包括引起異常。
12. 根據(jù)權(quán)利要求8所述的方法,其中所述警告包括輸出指示指令集操作模式的變化的信號(hào)。
13. 根據(jù)權(quán)利要求8所述的方法,其中所述警告包括輸出所識(shí)別的指令的所述地址。
14. 根據(jù)權(quán)利要求8所述的方法,其中識(shí)別所述處理器從所述第一指令集操作模式切換 成所述第二指令集操作模式的所述地址包括僅在所述地址屬于預(yù)定地址范圍內(nèi)的 情況下才識(shí)別所述地址。
15. —種操作以根據(jù)兩個(gè)或兩個(gè)以上指令集編碼執(zhí)行指令的處理器,每一指令集編碼處 于不同的指令集操作模式,所述處理器包括當(dāng)前指令集操作模式指示符;:Ji/^ 443 ""itr^ />4v /丄"+4"丄口 ,L , 、 I /山 r~t 1 —丄U"A/4~ l 口 l-樸 l、 I "~*奴站伃兩1)丄直,共保1卞以仔1諾Fl懷館々、果探1卞悮A館7K付; 執(zhí)行單元,其操作以根據(jù)當(dāng)前指令集操作模式來(lái)執(zhí)行指令;以及比較電路,其操作以在執(zhí)行每一指令后將所述當(dāng)前指令集操作模式與所述目標(biāo)指 令集操作模式進(jìn)行比較,并在所述當(dāng)前指令集操作模式與所述目標(biāo)指令集操作模式 匹配的情況下輸出指示。
16. 根據(jù)權(quán)利要求15所述的處理器,其中所述指示包括操作以暫停指令執(zhí)行的信號(hào)。
17. 根據(jù)權(quán)利要求15所述的處理器,其中所述指示包括操作以控制追蹤操作的信號(hào)。
18. 根據(jù)權(quán)利要求15所述的處理器,其中所述指示包括操作以引起異常的信號(hào)。
19. 根據(jù)權(quán)利要求15所述的處理器,其中所述指示包括指示所述當(dāng)前指令集操作模式 與所述目標(biāo)指令集操作模式匹配的信號(hào)。
20. 根據(jù)權(quán)利要求15所述的處理器,其中所述指示包括當(dāng)在所述當(dāng)前指令集操作模式 與所述R標(biāo)指令集操作模式之間檢測(cè)到匹配時(shí)執(zhí)行的指令的地址。
21. 根據(jù)權(quán)利要求15所述的處理器,其進(jìn)一步包括操作以存儲(chǔ)目標(biāo)地址范圍的數(shù)據(jù)存 儲(chǔ)位置,且其中所述比較電路操作以?xún)H在所述當(dāng)前指令集操作模式與所述目標(biāo)指令 集操作模式匹配且當(dāng)前執(zhí)行的所述指令的所述地址屬于所述目標(biāo)地址范圍內(nèi)的情 況下才輸出指示。
22. —種操作以執(zhí)行兩個(gè)或兩個(gè)以上指令集編碼的處理器,每一指令集編碼處于不同的 指令集操作模式,所述處理器包括比較電路,其操作以檢測(cè)所述指令集操作模式的變化,并響應(yīng)于所述檢測(cè)輸出所 述指令集操作模式變化的指示和所述變化發(fā)生的指令地址。
23. 根據(jù)權(quán)利要求22所述的處理器,其中所述指示包括操作以暫停指令執(zhí)行的信號(hào)。
24. 根據(jù)權(quán)利要求22所述的處理器,其中所述指示包括操作以控制追蹤操作的信號(hào)。
25. 根據(jù)權(quán)利要求22所述的處理器,其中所述指示包括操作以引起異常的信號(hào)。
26. 根據(jù)權(quán)利要求22所述的處理器,其中所述指示包括指示指令集操作模式的變化的信號(hào)。
27. 根據(jù)權(quán)利要求22所述的處理器,其中所述指示包括所述指令集操作模式變化地址。
28. 根據(jù)權(quán)利要求22所述的處理器,其中所述比較電路僅在所述變化發(fā)生的所述指令 地址屬于預(yù)定地址范圍內(nèi)時(shí)才檢測(cè)所述指令集操作模式的變化。
全文摘要
一種處理器操作以執(zhí)行兩個(gè)或兩個(gè)以上指令集,每一指令集處于不同的指令集操作模式。當(dāng)執(zhí)行每一指令時(shí),調(diào)試電路將當(dāng)前指令集操作模式與由程序設(shè)計(jì)員發(fā)送的目標(biāo)指令集操作模式進(jìn)行比較,并輸出其匹配的警告或指示。所述警告或指示可額外取決于遵循預(yù)定目標(biāo)地址范圍內(nèi)的指令地址。所述警告或指示可包括暫停執(zhí)行的斷點(diǎn)信號(hào),且/或其作為所述處理器的外部信號(hào)而輸出??深~外輸出所述處理器在所述指令集操作模式下檢測(cè)到匹配的指令地址。另外或替代地,所述警告或指示可包括開(kāi)始或停止追蹤操作、引起異常,或任何其它已知調(diào)試器功能。
文檔編號(hào)G06F11/36GK101501650SQ200780029330
公開(kāi)日2009年8月5日 申請(qǐng)日期2007年8月3日 優(yōu)先權(quán)日2006年8月9日
發(fā)明者凱文·查爾斯·伯克, 凱文·艾倫·薩普, 布萊恩·邁克爾·斯坦普爾, 托馬斯·安德魯·薩托里烏斯, 納比勒·阿米爾·里茲克, 羅德尼·韋恩·史密斯, 萊斯利·馬克·德布魯因, 達(dá)朗·歐仁·施特雷特 申請(qǐng)人:高通股份有限公司