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)
Вы не можете добавлять комментарии в эту тему: топик перемещен в архив.