LINUX.ORG.RU

Haskell и чтение бинарников

 ,


0

2
~ $ gcc -o main main.c
~ $ cat main.c
int main(){
   int a = 0;
   return a;
}
module Main where

import Text.Disassembler.X86Disassembler
import System.IO

main = do
   res <- disassembleFile "main"
   --res <- readFile "main"  --так тоже не работает
   print res
~ $ .cabal/bin/main
main: main-d: hGetContents: invalid argument (invalid byte sequence)

И в GHCi

Prelude> readFile «main»
«\DELELF\STX\SOH\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\STX\NUL>\NUL\SOH\NUL\NUL\NUL\DLE\EOT@\NUL\NUL\NUL\NUL\NUL@\NUL\NUL\NUL\NUL\NUL\NUL\NUL`\DC1\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL@\NUL8\NUL\n\NUL@\NUL\GS\NUL\SUB\NUL\ACK\NUL\NUL\NUL\ENQ\NUL\NUL\NUL@\NUL\NUL\NUL\NUL\NUL\NUL\NUL@\NUL@\NUL\NUL\NUL\NUL\NUL@\NUL@\NUL\NUL\NUL\NUL\NUL0\STX\NUL\NUL\NUL\NUL\NUL\NUL0\STX\NUL\NUL\NUL\NUL\NUL\NUL\b\NUL\NUL\NUL\NUL\NUL\NUL\NUL\ETX\NUL\NUL\NUL\EOT\NUL\NUL\NULp\STX\NUL\NUL\NUL\NUL\NUL\NULp\STX@\NUL\NUL\NUL\NUL\NULp\STX@\NUL\NUL\NUL\NUL\NUL\FS\NUL\NUL\NUL\NUL\NUL\NUL\NUL\FS\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL\NUL\NUL\NUL\NUL\NUL\NUL\SOH\NUL\NUL\NUL\ENQ\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL\NUL@\NUL\NUL\NUL\NUL\NUL\NUL\NUL@\NUL\NUL\NUL\NUL\NUL*** Exception: main: hGetContents: invalid argument (invalid byte sequence)
Prelude> 

Что делать? Как читать файл?



Последнее исправление: alextk (всего исправлений: 1)

Ответ на: комментарий от theNamelessOne

Оу. Хорошо. Но с -m32 тоже не особо работает.

alextk
() автор топика
Ответ на: комментарий от theNamelessOne

Тут ведь проблема не в архитектуре, но в чтении. Раз readFile не отрабатывает как должен. Не так ли?

alextk
() автор топика
Ответ на: комментарий от theNamelessOne

Подсунул ему этот main.c, он выдал мне асм. Странный дизассемблер.

alextk
() автор топика

Haskell
чтение бинарников
Как читать файл?

Ты не понял. Haskell не предназначен для этого, он работает по-другому.

anonymous
()
dissassembleList . Data.ByteString.unpack =<< Data.ByteString.readFile "main"

импорты и квалифицированные имена сам дашь, как удобнее

qnikst ★★★★★
()
Последнее исправление: qnikst (всего исправлений: 1)
Вы не можете добавлять комментарии в эту тему. Тема перемещена в архив.