請問如何在binary code找到source code裡的常數?

看板Programming作者 (ptta)時間11年前 (2014/08/19 13:00), 編輯推噓2(208)
留言10則, 5人參與, 最新討論串1/1
各位網友您好, 請問一下我有以下的8051 C source code i2c_write_reg(0x0a, 0x01, 0x28); i2c_read_reg(0x0a, 0x22); 但是我在compiled之後,在binary code(也就是機械碼)中,很難找到 諸如0A 01 28或是0A 22這樣的十六進位數。 請問有什麼方法,可以在compiled之後仍然可以找到這些常數呢? 感謝您的幫忙~ -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 220.137.8.75 ※ 文章網址: http://www.ptt.cc/bbs/Programming/M.1408424439.A.75D.html

08/19 14:15, , 1F
像這種的你要 disassemble 去看位置
08/19 14:15, 1F

08/19 14:15, , 2F
這種十之八九會變成指令
08/19 14:15, 2F

08/19 21:57, , 3F
8051的這個工具支援asm嵌入組語嗎?
08/19 21:57, 3F

08/20 06:13, , 4F
8051是單晶片吧?
08/20 06:13, 4F

08/20 07:42, , 5F
是單晶片,有支援嵌入式asm(keil c)
08/20 07:42, 5F

08/20 22:33, , 6F
你先去找assembly code翻成什麼,再去查
08/20 22:33, 6F

08/20 22:35, , 7F
instruction set format, 就能手動翻譯
08/20 22:35, 7F

08/20 22:36, , 8F
出機器碼, 除非欄位剛好是byte aligned
08/20 22:36, 8F

08/20 22:36, , 9F
不然應該是無法直接看出,因為一個byte之內
08/20 22:36, 9F

08/20 22:37, , 10F
可能有部份bit是opcode,部份是常數
08/20 22:37, 10F
文章代碼(AID): #1JyjdtTT (Programming)
文章代碼(AID): #1JyjdtTT (Programming)