Я работаю над программированием загрузчика Linux для назначения HW и знаю, что мне нужно создать функцию, которая будет читать / записывать слова из / в память.У меня возникают проблемы с определением, нахожусь ли я на правильном пути или нет, и любая помощь будет отличной.Я бы протестировал эти функции, но в настоящее время это невозможно для меня, так как мне нужно поработать над созданием основных функций, прежде чем я смогу собрать все воедино.Мне дали get_byte (сегмент, смещение) / put_byte (символ, сегмент, смещение), которые были проверены моим учителем для работы с кодом из сборки и экспортированы в C.
unsigned short get_word(unsigned short segment, unsigned short offset)
{
unsigned short word, low, hi;
low = get_byte(segment, offset);
high = get_byte(segment, offset+1);
word = low+hi;
return word;
}
Я не уверен, чтовыше правильно.Я знаю, что привет и низ должны быть объединены, это нормально, чтобы добавить или я должен просто сделать низкий и привет, а затем вернуть этот результат?Если я совсем не в курсе, дайте мне знать.Правильно ли, чтобы смещение было коротким без знака, или оно должно быть int?
int put_word(unsigned short word, unsigned short segment, unsigned short offset)
{
unsigned short low, hi;
low = word | offset;
hi = word | offset+1
put_byte(segment, low);
put_byte(segment, hi);
return 0;
}
Я понятия не имею, является ли приведенный выше код чем-то близким к правильному, но это мое лучшее предположение.Кто-нибудь знает решение или есть какие-либо советы?Эти функции должны быть довольно простыми, но я застрял и должен приступить к реальной части моего назначения.
ОБНОВЛЕНИЕ (12:46): Исправлена put_byte (), как указано ниже, это не будет делатьсмысл принимать только два аргумента, исправил это.Я прошу прощения за свою ошибку.