2016-02-27 179 views
-4

我已經完成了大學的練習作業,需要我手動將彙編代碼轉換爲機器代碼。我會顯示前後圖像。它基本上要求我在指令後刪除註釋(分號後)和空格。我發現這是令人費解的,因爲我已經將C noob和Iive引入彙編代碼。我打算在記事本++中做到這一點。使用匯編語言的目的是非常簡單,因爲x86從開始就很荒謬。任何幫助,將不勝感激!將彙編代碼轉換爲C語言中的機器代碼

+7

很高興不在你的大學裏。 – 2016-02-27 11:44:24

+7

你並沒有將任何東西轉換成機器碼,你只是被要求去掉註釋和空白。大會在這個練習中純粹是偶然的,這可以歸結爲愚蠢的字符串操縱。 –

+3

將文字作爲圖像發佈違反網站規則。將文字發佈爲文字! – Olaf

回答

2

正如評論指出,這已經無關機器代碼,這只是微不足道的字符串操作(實際上,這是sed 's/[[:space:]]*\(;.*\)\?$//'):

  1. 讀取一行
  2. 走在時間的字符串一個字符;每次找到非空白字符時,請在變量中記下它的位置。
  3. 當您找到字符串的末尾(字符0)或分號(字符​​3210)時,將字符串截斷爲您發現的最後一個非空白字符後面的字符(有效地將其設置爲零)。
  4. 記下更新後的字符串到其他文件。
  5. 重複,直到輸入文件完成。
+0

對不起,但我不明白爲什麼你會使用記事本++的sed,因爲它的Linux?當然它不像它看起來那麼微不足道,首先你必須使用fgets閱讀每行,然後以某種方式擺脫空白和評論。不幸的是我不明白我怎麼可以用普通的C代碼來做到這一點,如fread等...... – Jim

+0

我假設我可能需要使用isspace來檢查空格 – Jim

+2

@Jim:'sed'部分只是一個例子來顯示你可以用一個簡單的正則表達式來完成這個簡單的文本操作(你肯定可以在搜索/替換對話框中使用Notepad ++來做到這一點,可能它的正則表達式語法更類似於Perl,我希望能夠替代'\ s * (;。*)?$'沒有任何東西)。無論如何,要點1到5是您必須在C中實現的算法(如果您實際上不需要將結果寫入另一個文件,則不需要執行步驟4),但每個點都相當簡單。 –