此代碼按預期作業:
section .bss
var2: DB ?
X: DW ? ; works
保留順序相反,代碼不會組合:
section .bss
X: DW ?
var2: DB ? ; error with lines in other order
我收到了這個錯誤,即使我沒有var2在程式的另一部分使用這個標簽(事實上??,這只是將該代碼塊組裝為 3 行檔案是可重現的)。
error: label `var2' changed during code generation [-w error=label-redef-late]
我認為該var2變數被變數覆寫,X因為它是一個字,占2 個位元組。
我正在使用 NASM 版本 2.15.04 來組裝此代碼(也可在 2.15.05 中重現)。
uj5u.com熱心網友回復:
更新:我的補丁已合并,NASM 2.15.06 中不應再出現該問題。
經過一些除錯和查看源代碼后,我可以確認我最初懷疑這是一個錯誤。
大于內部的形式指令的大小計算Dx ?(即任何Dx包含未初始化的存盤令牌?)回傳錯誤的大小(假設元素為 1 位元組而不是適當的元素大小)。這會產生副作用,即不一致地改變指令后任何標簽的段偏移量,導致最終代碼生成階段的不匹配,這會被一些檢查捕獲并導致 NASM 錯誤。DxDB
通常我會簡單地報告錯誤,但由于 NASM 的 GitHub 存盤庫沒有活動的“問題”頁面,而且他們的 Bugzilla 目前不允許注冊,我繼續提交了一個拉取請求。修復似乎很簡單,除非我遺漏了什么,在這種情況下,我們很快就會(希望)找到答案。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qukuanlian/365372.html
上一篇:x86程式集中“align”關鍵字/指令的語法是什么?
下一篇:或nasm中的說明
